diff --git a/wally-pipelined/regression/wave-dos/busybear-waves.do b/wally-pipelined/regression/wave-dos/busybear-waves.do index 1ce0cf487..e8bcc3bd2 100644 --- a/wally-pipelined/regression/wave-dos/busybear-waves.do +++ b/wally-pipelined/regression/wave-dos/busybear-waves.do @@ -21,6 +21,7 @@ add wave -hex /testbench/dut/hart/ifu/InstrRawD add wave /testbench/CheckInstrD add wave /testbench/lastCheckInstrD add wave /testbench/speculative +add wave /testbench/dut/hart/ifu/bpred/BPPredWrongE add wave /testbench/lastPC2 add wave -divider add wave -divider @@ -125,4 +126,4 @@ configure wave -snapdistance 10 configure wave -datasetprefix 0 configure wave -rowmargin 4 configure wave -childrowmargin 2 -set DefaultRadix hexadecimal \ No newline at end of file +set DefaultRadix hexadecimal diff --git a/wally-pipelined/testbench/testbench-busybear.sv b/wally-pipelined/testbench/testbench-busybear.sv index 93ebbdd19..3236bfc57 100644 --- a/wally-pipelined/testbench/testbench-busybear.sv +++ b/wally-pipelined/testbench/testbench-busybear.sv @@ -531,27 +531,28 @@ module testbench(); end instrs += 1; // are we at a branch/jump? - casex (lastCheckInstrD[31:0]) - 32'b00000000001000000000000001110011, // URET - 32'b00010000001000000000000001110011, // SRET - 32'b00110000001000000000000001110011, // MRET - 32'bXXXXXXXXXXXXXXXXXXXXXXXXX1101111, // JAL - 32'bXXXXXXXXXXXXXXXXXXXXXXXXX1100111, // JALR - 32'bXXXXXXXXXXXXXXXXXXXXXXXXX1100011, // B - 32'bXXXXXXXXXXXXXXXX110XXXXXXXXXXX01, // C.BEQZ - 32'bXXXXXXXXXXXXXXXX111XXXXXXXXXXX01, // C.BNEZ - 32'bXXXXXXXXXXXXXXXX101XXXXXXXXXXX01: // C.J - speculative = 1; - 32'bXXXXXXXXXXXXXXXX1001000000000010, // C.EBREAK: - 32'bXXXXXXXXXXXXXXXXX000XXXXX1110011: // Something that's not CSRR* - speculative = 0; // tbh don't really know what should happen here - 32'b000110000000XXXXXXXXXXXXX1110011, // CSR* SATP, * - 32'bXXXXXXXXXXXXXXXX1000XXXXX0000010, // C.JR - 32'bXXXXXXXXXXXXXXXX1001XXXXX0000010: // C.JALR //this is RV64 only so no C.JAL - speculative = 1; - default: - speculative = 0; - endcase + //casex (lastCheckInstrD[31:0]) + // 32'b00000000001000000000000001110011, // URET + // 32'b00010000001000000000000001110011, // SRET + // 32'b00110000001000000000000001110011, // MRET + // 32'bXXXXXXXXXXXXXXXXXXXXXXXXX1101111, // JAL + // 32'bXXXXXXXXXXXXXXXXXXXXXXXXX1100111, // JALR + // 32'bXXXXXXXXXXXXXXXXXXXXXXXXX1100011, // B + // 32'bXXXXXXXXXXXXXXXX110XXXXXXXXXXX01, // C.BEQZ + // 32'bXXXXXXXXXXXXXXXX111XXXXXXXXXXX01, // C.BNEZ + // 32'bXXXXXXXXXXXXXXXX101XXXXXXXXXXX01: // C.J + // speculative = 1; + // 32'bXXXXXXXXXXXXXXXX1001000000000010, // C.EBREAK: + // 32'bXXXXXXXXXXXXXXXXX000XXXXX1110011: // Something that's not CSRR* + // speculative = 0; // tbh don't really know what should happen here + // 32'b000110000000XXXXXXXXXXXXX1110011, // CSR* SATP, * + // 32'bXXXXXXXXXXXXXXXX1000XXXXX0000010, // C.JR + // 32'bXXXXXXXXXXXXXXXX1001XXXXX0000010: // C.JALR //this is RV64 only so no C.JAL + // speculative = 1; + // default: + // speculative = 0; + //endcase + speculative = dut.hart.ifu.bpred.BPPredWrongE; //check things! if ((~speculative) && (~equal(dut.hart.ifu.PCD,pcExpected,3))) begin