diff --git a/wally-pipelined/config/busybear/wally-config.vh b/wally-pipelined/config/busybear/wally-config.vh index 81e4949a2..3a6195985 100644 --- a/wally-pipelined/config/busybear/wally-config.vh +++ b/wally-pipelined/config/busybear/wally-config.vh @@ -25,6 +25,7 @@ /////////////////////////////////////////// `define BUSYBEAR +`define BUSYBEAR_FIX_READ {'h10000005} // RV32 or RV64: XLEN = 32 or 64 `define XLEN 64 diff --git a/wally-pipelined/testbench/testbench-busybear.sv b/wally-pipelined/testbench/testbench-busybear.sv index f1315e967..81f97ecc2 100644 --- a/wally-pipelined/testbench/testbench-busybear.sv +++ b/wally-pipelined/testbench/testbench-busybear.sv @@ -205,9 +205,16 @@ module testbench_busybear(); `ERROR end if ((readMask & HRDATA) !== (readMask & dut.HRDATA)) begin - $display("warning %0t ps, instr %0d: ExpectedHRDATA does not equal dut.HRDATA: %x, %x from address %x, %x", $time, instrs, HRDATA, dut.HRDATA, HADDR, HSIZE); - warningCount += 1; - `ERROR + if (HADDR inside `BUSYBEAR_FIX_READ) begin + $display("warning %0t ps, instr %0d, adr %0d: forcing HRDATA to expected: %x, %x", $time, instrs, HADDR, HRDATA, dut.HRDATA); + force dut.uncore.HRDATA = HRDATA; + #9; + release dut.uncore.HRDATA; + warningCount += 1; + end else begin + $display("%0t ps, instr %0d: ExpectedHRDATA does not equal dut.HRDATA: %x, %x from address %x, %x", $time, instrs, HRDATA, dut.HRDATA, HADDR, HSIZE); + `ERROR + end end //end else if(dut.hart.MemRWM[1]) begin // $display("%x, %x, %x, %t", HADDR, dut.PCF, dut.HRDATA, $time);