[cosim] Fix spike cosim instruction count

The count wasn't being initialised in the constructor and should be of
type 'unsigned int'.
This commit is contained in:
Greg Chadwick 2022-09-28 17:21:28 +01:00 committed by Greg Chadwick
parent a788593842
commit 4084dc4a46
6 changed files with 8 additions and 8 deletions

View file

@ -142,7 +142,7 @@ class Cosim {
// Returns a count of instructions executed by co-simulator and DUT without
// failures.
virtual int get_insn_cnt() = 0;
virtual unsigned int get_insn_cnt() = 0;
};
#endif // COSIM_H_

View file

@ -106,7 +106,7 @@ void riscv_cosim_write_mem_byte(Cosim *cosim, const svBitVecVal *addr,
cosim->backdoor_write_mem(addr[0], 1, &byte);
}
int riscv_cosim_get_insn_cnt(Cosim *cosim) {
unsigned int riscv_cosim_get_insn_cnt(Cosim *cosim) {
assert(cosim);
return cosim->get_insn_cnt();

View file

@ -33,7 +33,7 @@ const char *riscv_cosim_get_error(Cosim *cosim, int index);
void riscv_cosim_clear_errors(Cosim *cosim);
void riscv_cosim_write_mem_byte(Cosim *cosim, const svBitVecVal *addr,
const svBitVecVal *d);
int riscv_cosim_get_insn_cnt(Cosim *cosim);
unsigned int riscv_cosim_get_insn_cnt(Cosim *cosim);
}
#endif // COSIM_DPI_H_

View file

@ -28,6 +28,6 @@ import "DPI-C" function string riscv_cosim_get_error(chandle cosim_handle, int i
import "DPI-C" function void riscv_cosim_clear_errors(chandle cosim_handle);
import "DPI-C" function void riscv_cosim_write_mem_byte(chandle cosim_handle, bit [31:0] addr,
bit [7:0] d);
import "DPI-C" function int riscv_cosim_get_insn_cnt(chandle cosim_handle);
import "DPI-C" function int unsigned riscv_cosim_get_insn_cnt(chandle cosim_handle);
`endif

View file

@ -35,7 +35,7 @@ SpikeCosim::SpikeCosim(const std::string &isa_string, uint32_t start_pc,
uint32_t start_mtvec, const std::string &trace_log_path,
bool secure_ibex, bool icache_en,
uint32_t pmp_num_regions, uint32_t pmp_granularity)
: nmi_mode(false), pending_iside_error(false) {
: nmi_mode(false), pending_iside_error(false), insn_cnt(0) {
FILE *log_file = nullptr;
if (trace_log_path.length() != 0) {
log = std::make_unique<log_file_t>(trace_log_path.c_str());
@ -778,4 +778,4 @@ bool SpikeCosim::pc_is_mret(uint32_t pc) {
return insn == 0x30200073;
}
int SpikeCosim::get_insn_cnt() { return insn_cnt; }
unsigned int SpikeCosim::get_insn_cnt() { return insn_cnt; }

View file

@ -71,7 +71,7 @@ class SpikeCosim : public simif_t, public Cosim {
void initial_proc_setup(uint32_t start_pc, uint32_t start_mtvec);
int insn_cnt;
unsigned int insn_cnt;
public:
SpikeCosim(const std::string &isa_string, uint32_t start_pc,
@ -114,7 +114,7 @@ class SpikeCosim : public simif_t, public Cosim {
void set_iside_error(uint32_t addr) override;
const std::vector<std::string> &get_errors() override;
void clear_errors() override;
int get_insn_cnt() override;
unsigned int get_insn_cnt() override;
};
#endif // SPIKE_COSIM_H_