forked from Github_Repos/cvw
		
	fixed busybear floating point NOP-out feature; restored regression to check 100000 instructions
This commit is contained in:
		
							parent
							
								
									e4c90f503a
								
							
						
					
					
						commit
						f00eb22700
					
				@ -26,7 +26,7 @@ configs = [
 | 
				
			|||||||
    TestCase(
 | 
					    TestCase(
 | 
				
			||||||
        name="busybear",
 | 
					        name="busybear",
 | 
				
			||||||
        cmd="vsim -do wally-busybear-batch.do -c > {}",
 | 
					        cmd="vsim -do wally-busybear-batch.do -c > {}",
 | 
				
			||||||
        grepstr="# loaded 40000 instructions"
 | 
					        grepstr="# loaded 100000 instructions"
 | 
				
			||||||
    ),
 | 
					    ),
 | 
				
			||||||
    TestCase(
 | 
					    TestCase(
 | 
				
			||||||
        name="buildroot",
 | 
					        name="buildroot",
 | 
				
			||||||
 | 
				
			|||||||
@ -36,7 +36,7 @@ vopt +acc work.testbench -o workopt
 | 
				
			|||||||
vsim workopt -suppress 8852,12070
 | 
					vsim workopt -suppress 8852,12070
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#do ./wave-dos/peripheral-waves.do
 | 
					#do ./wave-dos/peripheral-waves.do
 | 
				
			||||||
do ./wave-dos/busybear-waves.do
 | 
					do ./wave-dos/default-waves.do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#do busy-mmu.do
 | 
					#do busy-mmu.do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -468,12 +468,13 @@ module testbench();
 | 
				
			|||||||
            speculative = ~equal(dut.hart.ifu.PCD,pcExpected,3);
 | 
					            speculative = ~equal(dut.hart.ifu.PCD,pcExpected,3);
 | 
				
			||||||
            if(dut.hart.ifu.PCD===pcExpected) begin
 | 
					            if(dut.hart.ifu.PCD===pcExpected) begin
 | 
				
			||||||
              if(dut.hart.ifu.InstrRawD[6:0] == 7'b1010011) begin // for now, NOP out any float instrs
 | 
					              if(dut.hart.ifu.InstrRawD[6:0] == 7'b1010011) begin // for now, NOP out any float instrs
 | 
				
			||||||
                force CheckInstrD = 32'b0010011;
 | 
					 | 
				
			||||||
                release CheckInstrD;
 | 
					 | 
				
			||||||
                force dut.hart.ifu.InstrRawD = 32'b0010011;
 | 
					 | 
				
			||||||
                #7;
 | 
					 | 
				
			||||||
                release dut.hart.ifu.InstrRawD;
 | 
					 | 
				
			||||||
                $display("warning: NOPing out %s at PC=%0x, instr %0d, time %0t", PCtext, dut.hart.ifu.PCD, instrs, $time);
 | 
					                $display("warning: NOPing out %s at PC=%0x, instr %0d, time %0t", PCtext, dut.hart.ifu.PCD, instrs, $time);
 | 
				
			||||||
 | 
					                force CheckInstrD = 32'b0010011;
 | 
				
			||||||
 | 
					                force dut.hart.ifu.InstrRawD = 32'b0010011;
 | 
				
			||||||
 | 
					                while (clk != 0) #1;
 | 
				
			||||||
 | 
					                while (clk != 1) #1;
 | 
				
			||||||
 | 
					                release dut.hart.ifu.InstrRawD;
 | 
				
			||||||
 | 
					                release CheckInstrD;
 | 
				
			||||||
                warningCount += 1;
 | 
					                warningCount += 1;
 | 
				
			||||||
                forcedInstr = 1;
 | 
					                forcedInstr = 1;
 | 
				
			||||||
              end
 | 
					              end
 | 
				
			||||||
@ -496,12 +497,13 @@ module testbench();
 | 
				
			|||||||
            scan_file_PC = $fscanf(data_file_PC, "%x\n", CheckInstrD);
 | 
					            scan_file_PC = $fscanf(data_file_PC, "%x\n", CheckInstrD);
 | 
				
			||||||
            if(dut.hart.ifu.PCD === pcExpected) begin
 | 
					            if(dut.hart.ifu.PCD === pcExpected) begin
 | 
				
			||||||
              if(dut.hart.ifu.InstrRawD[6:0] == 7'b1010011) begin // for now, NOP out any float instrs
 | 
					              if(dut.hart.ifu.InstrRawD[6:0] == 7'b1010011) begin // for now, NOP out any float instrs
 | 
				
			||||||
                force CheckInstrD = 32'b0010011;
 | 
					 | 
				
			||||||
                release CheckInstrD;
 | 
					 | 
				
			||||||
                force dut.hart.ifu.InstrRawD = 32'b0010011;
 | 
					 | 
				
			||||||
                #7;
 | 
					 | 
				
			||||||
                release dut.hart.ifu.InstrRawD;
 | 
					 | 
				
			||||||
                $display("warning: NOPing out %s at PC=%0x, instr %0d, time %0t", PCtext, dut.hart.ifu.PCD, instrs, $time);
 | 
					                $display("warning: NOPing out %s at PC=%0x, instr %0d, time %0t", PCtext, dut.hart.ifu.PCD, instrs, $time);
 | 
				
			||||||
 | 
					                force CheckInstrD = 32'b0010011;
 | 
				
			||||||
 | 
					                force dut.hart.ifu.InstrRawD = 32'b0010011;
 | 
				
			||||||
 | 
					                while (clk != 0) #1;
 | 
				
			||||||
 | 
					                while (clk != 1) #1;
 | 
				
			||||||
 | 
					                release dut.hart.ifu.InstrRawD;
 | 
				
			||||||
 | 
					                release CheckInstrD;
 | 
				
			||||||
                warningCount += 1;
 | 
					                warningCount += 1;
 | 
				
			||||||
                forcedInstr = 1;
 | 
					                forcedInstr = 1;
 | 
				
			||||||
              end
 | 
					              end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user