From 94f83e319a830678646225ac186dc24c2d281f7b Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 9 May 2023 17:39:48 -0700 Subject: [PATCH] Fix bugs in spike-cosim --- .../src/main/resources/csrc/cospike.cc | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/generators/chipyard/src/main/resources/csrc/cospike.cc b/generators/chipyard/src/main/resources/csrc/cospike.cc index f531e61f..6cf8910b 100644 --- a/generators/chipyard/src/main/resources/csrc/cospike.cc +++ b/generators/chipyard/src/main/resources/csrc/cospike.cc @@ -284,9 +284,9 @@ extern "C" void cospike_cosim(long long int cycle, printf("%d exception %lx\n", cycle, cause); if (valid) { printf("%d Cosim: %lx", cycle, iaddr); - if (has_wdata) { - printf(" s: %lx", wdata); - } + // if (has_wdata) { + // printf(" s: %lx", wdata); + // } printf("\n"); } if (valid || raise_interrupt || raise_exception) { @@ -299,7 +299,7 @@ extern "C" void cospike_cosim(long long int cycle, } } - if (valid) { + if (valid && !raise_exception) { if (s_pc != iaddr) { printf("%d PC mismatch spike %llx != DUT %llx\n", cycle, s_pc, iaddr); if (unlikely(cospike_debug)) { @@ -373,12 +373,13 @@ extern "C" void cospike_cosim(long long int cycle, bool csr_read = (insn & 0x7f) == 0x73; if (csr_read) printf("CSR read %lx\n", csr_addr); - if (csr_read && ((csr_addr == 0xf13) || // mimpid - (csr_addr == 0xf12) || // marchid - (csr_addr == 0xf11) || // mvendorid - (csr_addr == 0xb00) || // mcycle - (csr_addr == 0xb02) || // minstret - (csr_addr >= 0x3b0 && csr_addr <= 0x3ef) // pmpaddr + if (csr_read && ((csr_addr == 0xf13) || // mimpid + (csr_addr == 0xf12) || // marchid + (csr_addr == 0xf11) || // mvendorid + (csr_addr == 0xb00) || // mcycle + (csr_addr == 0xb02) || // minstret + (csr_addr >= 0x7a0 && csr_addr <= 0x7aa) || // debug trigger registers + (csr_addr >= 0x3b0 && csr_addr <= 0x3ef) // pmpaddr )) { printf("CSR override\n"); s->XPR.write(rd, wdata);