mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Yay! I got verilator to compile our testbench! Does it actually work I don't know.
This commit is contained in:
		
							parent
							
								
									0f7b6ada04
								
							
						
					
					
						commit
						408bb2c35b
					
				@ -36,7 +36,9 @@ module ramxdetector #(parameter XLEN, LLEN) (
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  always_ff @(posedge clk)
 | 
					  always_ff @(posedge clk)
 | 
				
			||||||
 | 
					    /* verilator lint_off WIDTHXZEXPAND */
 | 
				
			||||||
    if (MemReadM & ~LSULoadAccessFaultM & (ReadDataM === 'bx)) begin
 | 
					    if (MemReadM & ~LSULoadAccessFaultM & (ReadDataM === 'bx)) begin
 | 
				
			||||||
 | 
					      /* verilator lint_on WIDTHXZEXPAND */
 | 
				
			||||||
      $display("WARNING: Attempting to read from unitialized RAM.  Processor may go haywire if it uses x value. But this is normal in WALLY-mmu tests.");
 | 
					      $display("WARNING: Attempting to read from unitialized RAM.  Processor may go haywire if it uses x value. But this is normal in WALLY-mmu tests.");
 | 
				
			||||||
      $display("  PCM = %x InstrM = %x (%s), IEUAdrM = %x", PCM, InstrM, InstrMName, IEUAdrM);
 | 
					      $display("  PCM = %x InstrM = %x (%s), IEUAdrM = %x", PCM, InstrM, InstrMName, IEUAdrM);
 | 
				
			||||||
      //$stop;
 | 
					      //$stop;
 | 
				
			||||||
 | 
				
			|||||||
@ -42,7 +42,7 @@ module riscvassertions import cvw::*; #(parameter cvw_t P);
 | 
				
			|||||||
    assert (2**$clog2(P.ICACHE_WAYSIZEINBYTES) == P.ICACHE_WAYSIZEINBYTES || (!P.ICACHE_SUPPORTED)) else $error("ICACHE_WAYSIZEINBYTES must be a power of 2");
 | 
					    assert (2**$clog2(P.ICACHE_WAYSIZEINBYTES) == P.ICACHE_WAYSIZEINBYTES || (!P.ICACHE_SUPPORTED)) else $error("ICACHE_WAYSIZEINBYTES must be a power of 2");
 | 
				
			||||||
    assert (2**$clog2(P.ITLB_ENTRIES) == P.ITLB_ENTRIES || P.VIRTMEM_SUPPORTED==0) else $error("ITLB_ENTRIES must be a power of 2");
 | 
					    assert (2**$clog2(P.ITLB_ENTRIES) == P.ITLB_ENTRIES || P.VIRTMEM_SUPPORTED==0) else $error("ITLB_ENTRIES must be a power of 2");
 | 
				
			||||||
    assert (2**$clog2(P.DTLB_ENTRIES) == P.DTLB_ENTRIES || P.VIRTMEM_SUPPORTED==0) else $error("DTLB_ENTRIES must be a power of 2");
 | 
					    assert (2**$clog2(P.DTLB_ENTRIES) == P.DTLB_ENTRIES || P.VIRTMEM_SUPPORTED==0) else $error("DTLB_ENTRIES must be a power of 2");
 | 
				
			||||||
    assert (P.UNCORE_RAM_RANGE >= 56'h07FFFFFF) else $warning("Some regression tests will fail if UNCORE_RAM_RANGE is less than 56'h07FFFFFF");
 | 
					    assert (P.UNCORE_RAM_RANGE >= 64'h07FFFFFF) else $warning("Some regression tests will fail if UNCORE_RAM_RANGE is less than 64'h07FFFFFF");
 | 
				
			||||||
	  assert (P.ZICSR_SUPPORTED == 1 || (P.PMP_ENTRIES == 0 && P.VIRTMEM_SUPPORTED == 0)) else $error("PMP_ENTRIES and VIRTMEM_SUPPORTED must be zero if ZICSR not supported.");
 | 
						  assert (P.ZICSR_SUPPORTED == 1 || (P.PMP_ENTRIES == 0 && P.VIRTMEM_SUPPORTED == 0)) else $error("PMP_ENTRIES and VIRTMEM_SUPPORTED must be zero if ZICSR not supported.");
 | 
				
			||||||
    assert (P.ZICSR_SUPPORTED == 1 || (P.S_SUPPORTED == 0 && P.U_SUPPORTED == 0)) else $error("S and U modes not supported if ZICSR not supported");
 | 
					    assert (P.ZICSR_SUPPORTED == 1 || (P.S_SUPPORTED == 0 && P.U_SUPPORTED == 0)) else $error("S and U modes not supported if ZICSR not supported");
 | 
				
			||||||
    assert (P.U_SUPPORTED || (P.S_SUPPORTED == 0)) else $error ("S mode only supported if U also is supported");
 | 
					    assert (P.U_SUPPORTED || (P.S_SUPPORTED == 0)) else $error ("S mode only supported if U also is supported");
 | 
				
			||||||
 | 
				
			|||||||
@ -561,7 +561,9 @@ module testbench;
 | 
				
			|||||||
    testadr = ($unsigned(begin_signature_addr))/(P.XLEN/8);
 | 
					    testadr = ($unsigned(begin_signature_addr))/(P.XLEN/8);
 | 
				
			||||||
    testadrNoBase = (begin_signature_addr - P.UNCORE_RAM_BASE)/(P.XLEN/8);
 | 
					    testadrNoBase = (begin_signature_addr - P.UNCORE_RAM_BASE)/(P.XLEN/8);
 | 
				
			||||||
    /* verilator lint_off INFINITELOOP */
 | 
					    /* verilator lint_off INFINITELOOP */
 | 
				
			||||||
 | 
					    /* verilator lint_off WIDTHXZEXPAND */
 | 
				
			||||||
    while (signature[i] !== 'bx) begin
 | 
					    while (signature[i] !== 'bx) begin
 | 
				
			||||||
 | 
					      /* verilator lint_on WIDTHXZEXPAND */
 | 
				
			||||||
      logic [P.XLEN-1:0] sig;
 | 
					      logic [P.XLEN-1:0] sig;
 | 
				
			||||||
      // **************************************
 | 
					      // **************************************
 | 
				
			||||||
      // ***** BUG BUG BUG make sure RT undoes this.
 | 
					      // ***** BUG BUG BUG make sure RT undoes this.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user