mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	busybear: respect branch predictor disable config
This commit is contained in:
		
							parent
							
								
									8ae28e7887
								
							
						
					
					
						commit
						44606b6c19
					
				@ -531,28 +531,31 @@ module testbench();
 | 
				
			|||||||
            end
 | 
					            end
 | 
				
			||||||
            instrs += 1;
 | 
					            instrs += 1;
 | 
				
			||||||
            // are we at a branch/jump?
 | 
					            // are we at a branch/jump?
 | 
				
			||||||
            //casex (lastCheckInstrD[31:0])
 | 
					            if (`BPRED_ENABLED) begin
 | 
				
			||||||
            //  32'b00000000001000000000000001110011, // URET
 | 
					              speculative = dut.hart.ifu.bpred.BPPredWrongE;
 | 
				
			||||||
            //  32'b00010000001000000000000001110011, // SRET
 | 
					            end else begin
 | 
				
			||||||
            //  32'b00110000001000000000000001110011, // MRET
 | 
					              casex (lastCheckInstrD[31:0])
 | 
				
			||||||
            //  32'bXXXXXXXXXXXXXXXXXXXXXXXXX1101111, // JAL
 | 
					                32'b00000000001000000000000001110011, // URET
 | 
				
			||||||
            //  32'bXXXXXXXXXXXXXXXXXXXXXXXXX1100111, // JALR
 | 
					                32'b00010000001000000000000001110011, // SRET
 | 
				
			||||||
            //  32'bXXXXXXXXXXXXXXXXXXXXXXXXX1100011, // B
 | 
					                32'b00110000001000000000000001110011, // MRET
 | 
				
			||||||
            //  32'bXXXXXXXXXXXXXXXX110XXXXXXXXXXX01, // C.BEQZ
 | 
					                32'bXXXXXXXXXXXXXXXXXXXXXXXXX1101111, // JAL
 | 
				
			||||||
            //  32'bXXXXXXXXXXXXXXXX111XXXXXXXXXXX01, // C.BNEZ
 | 
					                32'bXXXXXXXXXXXXXXXXXXXXXXXXX1100111, // JALR
 | 
				
			||||||
            //  32'bXXXXXXXXXXXXXXXX101XXXXXXXXXXX01: // C.J
 | 
					                32'bXXXXXXXXXXXXXXXXXXXXXXXXX1100011, // B
 | 
				
			||||||
            //    speculative = 1;
 | 
					                32'bXXXXXXXXXXXXXXXX110XXXXXXXXXXX01, // C.BEQZ
 | 
				
			||||||
            //  32'bXXXXXXXXXXXXXXXX1001000000000010, // C.EBREAK:
 | 
					                32'bXXXXXXXXXXXXXXXX111XXXXXXXXXXX01, // C.BNEZ
 | 
				
			||||||
            //  32'bXXXXXXXXXXXXXXXXX000XXXXX1110011: // Something that's not CSRR*
 | 
					                32'bXXXXXXXXXXXXXXXX101XXXXXXXXXXX01: // C.J
 | 
				
			||||||
            //    speculative = 0; // tbh don't really know what should happen here
 | 
					                  speculative = 1;
 | 
				
			||||||
            //  32'b000110000000XXXXXXXXXXXXX1110011, // CSR* SATP, *
 | 
					                32'bXXXXXXXXXXXXXXXX1001000000000010, // C.EBREAK:
 | 
				
			||||||
            //  32'bXXXXXXXXXXXXXXXX1000XXXXX0000010, // C.JR
 | 
					                32'bXXXXXXXXXXXXXXXXX000XXXXX1110011: // Something that's not CSRR*
 | 
				
			||||||
            //  32'bXXXXXXXXXXXXXXXX1001XXXXX0000010: // C.JALR //this is RV64 only so no C.JAL
 | 
					                  speculative = 0; // tbh don't really know what should happen here
 | 
				
			||||||
            //    speculative = 1;
 | 
					                32'b000110000000XXXXXXXXXXXXX1110011, // CSR* SATP, *
 | 
				
			||||||
            //  default:
 | 
					                32'bXXXXXXXXXXXXXXXX1000XXXXX0000010, // C.JR
 | 
				
			||||||
            //    speculative = 0;
 | 
					                32'bXXXXXXXXXXXXXXXX1001XXXXX0000010: // C.JALR //this is RV64 only so no C.JAL
 | 
				
			||||||
            //endcase
 | 
					                  speculative = 1;
 | 
				
			||||||
            speculative = dut.hart.ifu.bpred.BPPredWrongE;
 | 
					                default:
 | 
				
			||||||
 | 
					                  speculative = 0;
 | 
				
			||||||
 | 
					              endcase
 | 
				
			||||||
 | 
					            end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //check things!
 | 
					            //check things!
 | 
				
			||||||
            if ((~speculative) && (~equal(dut.hart.ifu.PCD,pcExpected,3))) begin
 | 
					            if ((~speculative) && (~equal(dut.hart.ifu.PCD,pcExpected,3))) begin
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user