forked from Github_Repos/cvw
		
	busybear testbench: check for read data address also
and check for more end of files better
This commit is contained in:
		
							parent
							
								
									f2aea55def
								
							
						
					
					
						commit
						a2598b2b30
					
				@ -82,12 +82,12 @@ module testbench_busybear();
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  always @(rf) begin
 | 
					  always @(rf) begin
 | 
				
			||||||
    for(int j=1; j<32; j++) begin
 | 
					    for(int j=1; j<32; j++) begin
 | 
				
			||||||
      // read 31 integer registers
 | 
					 | 
				
			||||||
      scan_file_rf = $fscanf(data_file_rf, "%x\n", rfExpected[j]);
 | 
					 | 
				
			||||||
      if($feof(data_file_rf)) begin
 | 
					      if($feof(data_file_rf)) begin
 | 
				
			||||||
        $display("no more rf data to read");
 | 
					        $display("no more rf data to read");
 | 
				
			||||||
        $stop;
 | 
					        $stop;
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					      // read 31 integer registers
 | 
				
			||||||
 | 
					      scan_file_rf = $fscanf(data_file_rf, "%x\n", rfExpected[j]);
 | 
				
			||||||
      // check things!
 | 
					      // check things!
 | 
				
			||||||
      if (rf[j*64+63 -: 64] != rfExpected[j]) begin
 | 
					      if (rf[j*64+63 -: 64] != rfExpected[j]) begin
 | 
				
			||||||
        $display("%t ps: rf[%0d] does not equal rf expected: %x, %x", $time, j, rf[j*64+63 -: 64], rfExpected[j]);
 | 
					        $display("%t ps: rf[%0d] does not equal rf expected: %x, %x", $time, j, rf[j*64+63 -: 64], rfExpected[j]);
 | 
				
			||||||
@ -96,10 +96,19 @@ module testbench_busybear();
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  logic [`XLEN-1:0] readAdrExpected;
 | 
				
			||||||
  // this might need to change
 | 
					  // this might need to change
 | 
				
			||||||
  always @(MemRWM[1] or DataAdrM) begin
 | 
					  always @(MemRWM[1] or DataAdrM) begin
 | 
				
			||||||
    if (MemRWM[1]) begin
 | 
					    if (MemRWM[1]) begin
 | 
				
			||||||
 | 
					      if($feof(data_file_memR)) begin
 | 
				
			||||||
 | 
					        $display("no more memR data to read");
 | 
				
			||||||
 | 
					        $stop;
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      scan_file_memR = $fscanf(data_file_memR, "%x\n", readAdrExpected);
 | 
				
			||||||
      scan_file_memR = $fscanf(data_file_memR, "%x\n", ReadDataM);
 | 
					      scan_file_memR = $fscanf(data_file_memR, "%x\n", ReadDataM);
 | 
				
			||||||
 | 
					      if (DataAdrM != readAdrExpected) begin
 | 
				
			||||||
 | 
					        $display("%t ps: DataAdrM does not equal readAdrExpected: %x, %x", $time, DataAdrM, readAdrExpected);
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -108,6 +117,10 @@ module testbench_busybear();
 | 
				
			|||||||
  always @(WriteDataM or DataAdrM or ByteMaskM) begin
 | 
					  always @(WriteDataM or DataAdrM or ByteMaskM) begin
 | 
				
			||||||
    #1;
 | 
					    #1;
 | 
				
			||||||
    if (MemRWM[0]) begin
 | 
					    if (MemRWM[0]) begin
 | 
				
			||||||
 | 
					      if($feof(data_file_memW)) begin
 | 
				
			||||||
 | 
					        $display("no more memW data to read");
 | 
				
			||||||
 | 
					        $stop;
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
      scan_file_memW = $fscanf(data_file_memW, "%x\n", writeDataExpected);
 | 
					      scan_file_memW = $fscanf(data_file_memW, "%x\n", writeDataExpected);
 | 
				
			||||||
      scan_file_memW = $fscanf(data_file_memW, "%x\n", writeAdrExpected);
 | 
					      scan_file_memW = $fscanf(data_file_memW, "%x\n", writeAdrExpected);
 | 
				
			||||||
      if (writeDataExpected != WriteDataM) begin
 | 
					      if (writeDataExpected != WriteDataM) begin
 | 
				
			||||||
@ -140,6 +153,10 @@ module testbench_busybear();
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
    else begin
 | 
					    else begin
 | 
				
			||||||
    //if (~speculative) begin
 | 
					    //if (~speculative) begin
 | 
				
			||||||
 | 
					      if($feof(data_file_PC)) begin
 | 
				
			||||||
 | 
					        $display("no more PC data to read");
 | 
				
			||||||
 | 
					        $stop;
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
      // first read instruction
 | 
					      // first read instruction
 | 
				
			||||||
      scan_file_PC = $fscanf(data_file_PC, "%s %s\n", PCtext, PCtext2);
 | 
					      scan_file_PC = $fscanf(data_file_PC, "%s %s\n", PCtext, PCtext2);
 | 
				
			||||||
      PCtext = {PCtext, " ", PCtext2};
 | 
					      PCtext = {PCtext, " ", PCtext2};
 | 
				
			||||||
@ -148,10 +165,6 @@ module testbench_busybear();
 | 
				
			|||||||
      scan_file_PC = $fscanf(data_file_PC, "%x\n", pcExpected);
 | 
					      scan_file_PC = $fscanf(data_file_PC, "%x\n", pcExpected);
 | 
				
			||||||
      $display("loaded %0d instructions", instrs);
 | 
					      $display("loaded %0d instructions", instrs);
 | 
				
			||||||
      instrs += 1;
 | 
					      instrs += 1;
 | 
				
			||||||
      if($feof(data_file_PC)) begin
 | 
					 | 
				
			||||||
        $display("no more PC data to read");
 | 
					 | 
				
			||||||
        $stop;
 | 
					 | 
				
			||||||
      end
 | 
					 | 
				
			||||||
      // are we at a branch/jump?
 | 
					      // are we at a branch/jump?
 | 
				
			||||||
      case (lastInstrF[6:0]) //todo: add C versions of these
 | 
					      case (lastInstrF[6:0]) //todo: add C versions of these
 | 
				
			||||||
        7'b1101111, //JAL
 | 
					        7'b1101111, //JAL
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user