forked from Github_Repos/cvw
		
	Added wally-riscv-arch-test MMU tests and removed imperas MMU tests from regresssion
This commit is contained in:
		
							parent
							
								
									5a9269591b
								
							
						
					
					
						commit
						d7653dedee
					
				@ -31,7 +31,8 @@ rv64i_sc_tests = \
 | 
				
			|||||||
    WALLY-MMU-SV39 \
 | 
					    WALLY-MMU-SV39 \
 | 
				
			||||||
    WALLY-MMU-SV48 \
 | 
					    WALLY-MMU-SV48 \
 | 
				
			||||||
    WALLY-PMA \
 | 
					    WALLY-PMA \
 | 
				
			||||||
    WALLY-PMP
 | 
					    WALLY-PMP 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rv64i_tests = $(addsuffix .elf, $(rv64i_sc_tests))
 | 
					rv64i_tests = $(addsuffix .elf, $(rv64i_sc_tests))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -629,40 +629,6 @@ terminate_test:
 | 
				
			|||||||
    ecall #  writes mcause to the output.
 | 
					    ecall #  writes mcause to the output.
 | 
				
			||||||
    csrw mtvec, x4  # restore original trap handler to halt program
 | 
					    csrw mtvec, x4  # restore original trap handler to halt program
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
	# ---------------------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	RVTEST_IO_WRITE_STR(x31, "Test End\n")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	# ---------------------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	RV_COMPLIANCE_HALT
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
RV_COMPLIANCE_CODE_END
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Input data section.
 | 
					 | 
				
			||||||
	.data
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.align 3 # align stack to 8 byte boundary
 | 
					 | 
				
			||||||
bottom_of_stack:
 | 
					 | 
				
			||||||
    .fill 1024, 4, -1 
 | 
					 | 
				
			||||||
top_of_stack:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Output data section.
 | 
					 | 
				
			||||||
RV_COMPLIANCE_DATA_BEGIN
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.align 3 # align output to 8 byte boundary
 | 
					 | 
				
			||||||
test_1_res:
 | 
					 | 
				
			||||||
    .fill 1024, 4, -1 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
RV_COMPLIANCE_DATA_END
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.align 3
 | 
					 | 
				
			||||||
test_cases:
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
RVTEST_CODE_END
 | 
					RVTEST_CODE_END
 | 
				
			||||||
RVMODEL_HALT
 | 
					RVMODEL_HALT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -678,37 +644,13 @@ bottom_of_stack:
 | 
				
			|||||||
top_of_stack:
 | 
					top_of_stack:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
RVMODEL_DATA_BEGIN
 | 
					RVMODEL_DATA_BEGIN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// next lines through test cases copied over from old framework
 | 
					 | 
				
			||||||
test_1_res:
 | 
					test_1_res:
 | 
				
			||||||
    .fill 1024, 4, -1 
 | 
					    .fill 1024, 4, -1 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RVMODEL_DATA_END
 | 
					RVMODEL_DATA_END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
signature_x8_0:
 | 
					 | 
				
			||||||
    .fill 0*(XLEN/32),4,0xdeadbeef
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
signature_x8_1:
 | 
					 | 
				
			||||||
    .fill 19*(XLEN/32),4,0xdeadbeef
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
signature_x1_0:
 | 
					 | 
				
			||||||
    .fill 256*(XLEN/32),4,0xdeadbeef
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
signature_x1_1:
 | 
					 | 
				
			||||||
    .fill 256*(XLEN/32),4,0xdeadbeef
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
signature_x1_2:
 | 
					 | 
				
			||||||
    .fill 148*(XLEN/32),4,0xdeadbeef
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef rvtest_mtrap_routine
 | 
					#ifdef rvtest_mtrap_routine
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mtrap_sigptr:
 | 
					mtrap_sigptr:
 | 
				
			||||||
 | 
				
			|||||||
@ -51,7 +51,7 @@ tc = TestCase(
 | 
				
			|||||||
      grepstr="400100000 instructions")
 | 
					      grepstr="400100000 instructions")
 | 
				
			||||||
configs.append(tc)
 | 
					configs.append(tc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tests64gc = ["arch64i", "arch64priv", "arch64c",  "arch64m", "arch64d", "imperas64i", "imperas64f", "imperas64d", "imperas64p", "imperas64mmu", "imperas64m", "imperas64a",  "imperas64c"] # "wally64i", #,  "testsBP64"] 
 | 
					tests64gc = ["arch64i", "arch64priv", "arch64c",  "arch64m", "arch64d", "imperas64i", "imperas64f", "imperas64d", "imperas64p", "imperas64m", "imperas64a",  "imperas64c", "wally64priv"] # "wally64i", #,  "testsBP64"] 
 | 
				
			||||||
for test in tests64gc:
 | 
					for test in tests64gc:
 | 
				
			||||||
  tc = TestCase(
 | 
					  tc = TestCase(
 | 
				
			||||||
        name=test,
 | 
					        name=test,
 | 
				
			||||||
@ -59,7 +59,7 @@ for test in tests64gc:
 | 
				
			|||||||
        cmd="vsim > {} -c <<!\ndo wally-pipelined-batch.do rv64gc "+test+"\n!",
 | 
					        cmd="vsim > {} -c <<!\ndo wally-pipelined-batch.do rv64gc "+test+"\n!",
 | 
				
			||||||
        grepstr="All tests ran without failures")
 | 
					        grepstr="All tests ran without failures")
 | 
				
			||||||
  configs.append(tc)
 | 
					  configs.append(tc)
 | 
				
			||||||
tests32gc = ["arch32i", "arch32priv", "arch32c",  "arch32m", "arch32f", "imperas32i", "imperas32f", "imperas32p", "imperas32mmu", "imperas32m", "imperas32a",  "imperas32c"]  #"wally32i", 
 | 
					tests32gc = ["arch32i", "arch32priv", "arch32c",  "arch32m", "arch32f", "imperas32i", "imperas32f", "imperas32p", "imperas32m", "imperas32a",  "imperas32c", "wally32priv"]  #"wally32i", 
 | 
				
			||||||
for test in tests32gc:
 | 
					for test in tests32gc:
 | 
				
			||||||
  tc = TestCase(
 | 
					  tc = TestCase(
 | 
				
			||||||
        name=test,
 | 
					        name=test,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,3 @@
 | 
				
			|||||||
vsim -c <<!
 | 
					vsim -c <<!
 | 
				
			||||||
do wally-pipelined-batch.do rv32ic arch32i
 | 
					do wally-pipelined-batch.do rv64gc wally64priv
 | 
				
			||||||
!
 | 
					!
 | 
				
			||||||
 | 
				
			|||||||
@ -117,18 +117,7 @@ module mmu #(parameter TLB_ENTRIES = 8, // number of TLB Entries
 | 
				
			|||||||
  ///////////////////////////////////////////
 | 
					  ///////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  pmachecker pmachecker(.*);
 | 
					  pmachecker pmachecker(.*);
 | 
				
			||||||
 | 
					  pmpchecker pmpchecker(.*);
 | 
				
			||||||
  // if the number of entries is zero  or no csr no pmp checker
 | 
					 | 
				
			||||||
  generate
 | 
					 | 
				
			||||||
	if(`PMP_ENTRIES > 0) begin : pmpchecker
 | 
					 | 
				
			||||||
	  pmpchecker pmpchecker(.*);
 | 
					 | 
				
			||||||
	end else begin
 | 
					 | 
				
			||||||
	  assign PMPInstrAccessFaultF = 1'b0;
 | 
					 | 
				
			||||||
	  assign PMPLoadAccessFaultM = 1'b0;
 | 
					 | 
				
			||||||
	  assign PMPStoreAccessFaultM = 1'b0;
 | 
					 | 
				
			||||||
	end
 | 
					 | 
				
			||||||
  endgenerate
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // If TLB miss and translating we want to not have faults from the PMA and PMP checkers.
 | 
					  // If TLB miss and translating we want to not have faults from the PMA and PMP checkers.
 | 
				
			||||||
//  assign SquashBusAccess = PMASquashBusAccess | PMPSquashBusAccess;
 | 
					//  assign SquashBusAccess = PMASquashBusAccess | PMPSquashBusAccess;
 | 
				
			||||||
 | 
				
			|||||||
@ -73,6 +73,10 @@ module pmpchecker (
 | 
				
			|||||||
      assign PMPInstrAccessFaultF = EnforcePMP && ExecuteAccessF && ~|X;
 | 
					      assign PMPInstrAccessFaultF = EnforcePMP && ExecuteAccessF && ~|X;
 | 
				
			||||||
      assign PMPStoreAccessFaultM = EnforcePMP && WriteAccessM   && ~|W;
 | 
					      assign PMPStoreAccessFaultM = EnforcePMP && WriteAccessM   && ~|W;
 | 
				
			||||||
      assign PMPLoadAccessFaultM  = EnforcePMP && ReadAccessM    && ~|R;
 | 
					      assign PMPLoadAccessFaultM  = EnforcePMP && ReadAccessM    && ~|R;
 | 
				
			||||||
 | 
					    end else begin: pmpchecker  // no checker
 | 
				
			||||||
 | 
					      assign PMPInstrAccessFaultF = 0;
 | 
				
			||||||
 | 
					      assign PMPLoadAccessFaultM = 0;
 | 
				
			||||||
 | 
					      assign PMPStoreAccessFaultM = 0;
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  endgenerate
 | 
					  endgenerate
 | 
				
			||||||
  //assign PMPSquashBusAccess = PMPInstrAccessFaultF | PMPLoadAccessFaultM | PMPStoreAccessFaultM;
 | 
					  //assign PMPSquashBusAccess = PMPInstrAccessFaultF | PMPLoadAccessFaultM | PMPStoreAccessFaultM;
 | 
				
			||||||
 | 
				
			|||||||
@ -26,7 +26,8 @@
 | 
				
			|||||||
`define IMPERASTEST   "0"
 | 
					`define IMPERASTEST   "0"
 | 
				
			||||||
`define RISCVARCHTEST "1"
 | 
					`define RISCVARCHTEST "1"
 | 
				
			||||||
`define WALLYTEST "2"
 | 
					`define WALLYTEST "2"
 | 
				
			||||||
`define MYIMPERASTEST   "3"
 | 
					`define MYIMPERASTEST   "3" 
 | 
				
			||||||
 | 
					// *** remove MYIMPERASTEST cases when ported 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
string tvpaths[] = '{
 | 
					string tvpaths[] = '{
 | 
				
			||||||
    "../../addins/imperas-riscv-tests/work/",
 | 
					    "../../addins/imperas-riscv-tests/work/",
 | 
				
			||||||
@ -1484,7 +1485,11 @@ string imperas32f[] = '{
 | 
				
			|||||||
 };
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 string wally64priv[] = '{
 | 
					 string wally64priv[] = '{
 | 
				
			||||||
    `WALLYTEST
 | 
					    `WALLYTEST,
 | 
				
			||||||
 | 
					    "rv64i_m/privilege/WALLY-MMU-SV39", "30A0",
 | 
				
			||||||
 | 
					    "rv64i_m/privilege/WALLY-MMU-SV48", "30A0",
 | 
				
			||||||
 | 
					    "rv64i_m/privilege/WALLY-PMA", "30A0",
 | 
				
			||||||
 | 
					    "rv64i_m/privilege/WALLY-PMP", "30A0"
 | 
				
			||||||
 };
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 string wally64periph[] = '{
 | 
					 string wally64periph[] = '{
 | 
				
			||||||
@ -1497,7 +1502,10 @@ string wally32i[] = '{
 | 
				
			|||||||
 };
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 string wally32priv[] = '{
 | 
					 string wally32priv[] = '{
 | 
				
			||||||
    `WALLYTEST
 | 
					    `WALLYTEST,
 | 
				
			||||||
 | 
					    "rv32i_m/privilege/WALLY-MMU-SV32", "3080",
 | 
				
			||||||
 | 
					    "rv32i_m/privilege/WALLY-PMA", "3080",
 | 
				
			||||||
 | 
					    "rv32i_m/privilege/WALLY-PMP", "3080"
 | 
				
			||||||
 };
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 string wally32periph[] = '{
 | 
					 string wally32periph[] = '{
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user