mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	added changes to testbench, tests and riscof for additional riscof compatability
This commit is contained in:
		
							parent
							
								
									54938c7abf
								
							
						
					
					
						commit
						50b9b4557c
					
				| @ -68,6 +68,7 @@ logic [3:0] dummy; | ||||
|   integer   	ProgramAddrLabelArray [string] = '{ "begin_signature" : 0, "tohost" : 0 }; | ||||
| 
 | ||||
|   logic 	    DCacheFlushDone, DCacheFlushStart; | ||||
|   logic riscofTest;  | ||||
|      | ||||
|   flopenr #(`XLEN) PCWReg(clk, reset, ~dut.core.ieu.dp.StallW, dut.core.ifu.PCM, PCW); | ||||
|   flopenr  #(32)   InstrWReg(clk, reset, ~dut.core.ieu.dp.StallW,  dut.core.ifu.InstrM, InstrW); | ||||
| @ -174,6 +175,8 @@ logic [3:0] dummy; | ||||
|       totalerrors = 0; | ||||
|       testadr = 0; | ||||
|       testadrNoBase = 0; | ||||
|       // riscof tests have a different signature, tests[0] == "1" refers to RiscvArchTests and  tests[0] == "2" refers to WallyRiscvArchTests 
 | ||||
|       riscofTest = tests[0] == "1"; // | tests[0] == "2"; 
 | ||||
|       // fill memory with defined values to reduce Xs in simulation
 | ||||
|       // Quick note the memory will need to be initialized.  The C library does not
 | ||||
|       //  guarantee the  initialized reads.  For example a strcmp can read 6 byte
 | ||||
| @ -250,8 +253,7 @@ logic [3:0] dummy; | ||||
|           for(i=0; i<SIGNATURESIZE; i=i+1) begin | ||||
|             sig32[i] = 'bx; | ||||
|           end | ||||
|           // riscof tests have a different signature, tests[0] == "1" refers to RISCVARCHTESTs
 | ||||
|           if (tests[0] == "1") signame = {pathname, tests[test], "erence-sail_c_simulator.signature"}; | ||||
|           if (riscofTest) signame = {pathname, tests[test], "erence-sail_c_simulator.signature"}; | ||||
|           else signame = {pathname, tests[test], ".signature.output"}; | ||||
|           // read signature, reformat in 64 bits if necessary
 | ||||
|           $readmemh(signame, sig32); | ||||
|  | ||||
| @ -33,8 +33,8 @@ | ||||
| 
 | ||||
| string tvpaths[] = '{ | ||||
|     "../../addins/imperas-riscv-tests/work/", | ||||
|     "../../tests/riscof/work/", | ||||
|     "../../tests/wally-riscv-arch-test/work/", | ||||
|     "../../tests/riscof/work/riscv-arch-test/", | ||||
|     "../../tests/riscof/work/wally-riscv-arch-test/", | ||||
|     "../../tests/imperas-riscv-tests/work/", | ||||
|     "../../benchmarks/riscv-coremark/work/", | ||||
|     "../../addins/embench-iot/" | ||||
| @ -95,16 +95,16 @@ string tvpaths[] = '{ | ||||
| 
 | ||||
|   string wally64a[] = '{ | ||||
|     `WALLYTEST, | ||||
|     "rv64i_m/privilege/WALLY-amo", | ||||
|     "rv64i_m/privilege/WALLY-lrsc", | ||||
|     "rv64i_m/privilege/WALLY-status-fp-enabled-01" | ||||
|     "rv64i_m/privilege/src/WALLY-amo.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-lrsc.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-status-fp-enabled-01.S/ref/Ref" | ||||
|   }; | ||||
| 
 | ||||
|     string wally32a[] = '{ | ||||
|     `WALLYTEST, | ||||
|     "rv32i_m/privilege/WALLY-amo", | ||||
|     "rv32i_m/privilege/WALLY-lrsc", | ||||
|     "rv32i_m/privilege/WALLY-status-fp-enabled-01" | ||||
|     "rv32i_m/privilege/src/WALLY-amo.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-lrsc.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-status-fp-enabled-01.S/ref/Ref" | ||||
| 
 | ||||
|   }; | ||||
| 
 | ||||
| @ -1490,41 +1490,40 @@ string imperas32f[] = '{ | ||||
| 
 | ||||
|  string wally64i[] = '{ | ||||
|     `WALLYTEST, | ||||
|     "rv64i_m/I/WALLY-ADD", | ||||
|     "rv64i_m/I/WALLY-SLT", | ||||
|     "rv64i_m/I/WALLY-SLTU", | ||||
|     "rv64i_m/I/WALLY-SUB", | ||||
|     "rv64i_m/I/WALLY-XOR" | ||||
|     "rv64i_m/I/src/WALLY-ADD.S/ref/Ref", | ||||
|     "rv64i_m/I/src/WALLY-SLT.S/ref/Ref", | ||||
|     "rv64i_m/I/src/WALLY-SLTU.S/ref/Ref", | ||||
|     "rv64i_m/I/src/WALLY-SUB.S/ref/Ref", | ||||
|     "rv64i_m/I/src/WALLY-XOR.S/ref/Ref" | ||||
|  }; | ||||
| 
 | ||||
|  string wally64priv[] = '{ | ||||
|     `WALLYTEST, | ||||
|     "rv64i_m/privilege/WALLY-status-tw-01", | ||||
|     "rv64i_m/privilege/WALLY-csr-permission-s-01", | ||||
|     "rv64i_m/privilege/WALLY-csr-permission-u-01", | ||||
|     "rv64i_m/privilege/WALLY-minfo-01", | ||||
|     "rv64i_m/privilege/WALLY-misa-01", | ||||
|     "rv64i_m/privilege/WALLY-mmu-sv39", | ||||
|     "rv64i_m/privilege/WALLY-mmu-sv48", | ||||
|     "rv64i_m/privilege/WALLY-pma", | ||||
|     "rv64i_m/privilege/WALLY-pmp", | ||||
|     "rv64i_m/privilege/WALLY-trap-01", | ||||
|     "rv64i_m/privilege/WALLY-trap-s-01", | ||||
|     "rv64i_m/privilege/WALLY-trap-u-01", | ||||
|     "rv64i_m/privilege/WALLY-mie-01", | ||||
|     "rv64i_m/privilege/WALLY-sie-01", | ||||
|     "rv64i_m/privilege/WALLY-mtvec-01", | ||||
|     "rv64i_m/privilege/WALLY-stvec-01", | ||||
|     "rv64i_m/privilege/WALLY-status-mie-01", | ||||
|     "rv64i_m/privilege/WALLY-status-sie-01", | ||||
|     "rv64i_m/privilege/WALLY-trap-sret-01", | ||||
|     "rv64i_m/privilege/WALLY-status-tw-01", | ||||
|     "rv64i_m/privilege/WALLY-wfi-01" | ||||
|     "rv64i_m/privilege/src/WALLY-csr-permission-s-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-csr-permission-u-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-mie-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-minfo-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-misa-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-mmu-sv39.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-mmu-sv48.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-mtvec-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-pma.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-pmp.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-sie-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-status-mie-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-status-sie-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-status-tw-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-stvec-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-trap-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-trap-s-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-trap-sret-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-trap-u-01.S/ref/Ref", | ||||
|     "rv64i_m/privilege/src/WALLY-wfi-01.S/ref/Ref" | ||||
|  }; | ||||
| 
 | ||||
|  string wally64periph[] = '{ | ||||
|     `WALLYTEST, | ||||
|     "rv64i_m/privilege/WALLY-periph" | ||||
|     "rv64i_m/privilege/src/WALLY-periph.S/ref/Ref" | ||||
|  }; | ||||
| 
 | ||||
|  string wally32e[] = '{ | ||||
| @ -1569,38 +1568,38 @@ string imperas32f[] = '{ | ||||
| 
 | ||||
| string wally32i[] = '{ | ||||
|     `WALLYTEST, | ||||
|     "rv32i_m/I/WALLY-ADD", | ||||
|     "rv32i_m/I/WALLY-SLT", | ||||
|     "rv32i_m/I/WALLY-SLTU", | ||||
|     "rv32i_m/I/WALLY-SUB", | ||||
|     "rv32i_m/I/WALLY-XOR" | ||||
|     "rv32i_m/I/src/WALLY-ADD.S/ref/Ref", | ||||
|     "rv32i_m/I/src/WALLY-SLT.S/ref/Ref", | ||||
|     "rv32i_m/I/src/WALLY-SLTU.S/ref/Ref", | ||||
|     "rv32i_m/I/src/WALLY-SUB.S/ref/Ref", | ||||
|     "rv32i_m/I/src/WALLY-XOR.S/ref/Ref"  | ||||
|  }; | ||||
| 
 | ||||
|  string wally32priv[] = '{ | ||||
|     `WALLYTEST, | ||||
|     "rv32i_m/privilege/WALLY-csr-permission-s-01", | ||||
|     "rv32i_m/privilege/WALLY-csr-permission-u-01", | ||||
|     "rv32i_m/privilege/WALLY-minfo-01", | ||||
|     "rv32i_m/privilege/WALLY-misa-01", | ||||
|     "rv32i_m/privilege/WALLY-mmu-sv32", | ||||
|     "rv32i_m/privilege/WALLY-pma", | ||||
|     "rv32i_m/privilege/WALLY-pmp", | ||||
|     "rv32i_m/privilege/WALLY-trap-01", | ||||
|     "rv32i_m/privilege/WALLY-trap-s-01", | ||||
|     "rv32i_m/privilege/WALLY-trap-u-01", | ||||
|     "rv32i_m/privilege/WALLY-mie-01", | ||||
|     "rv32i_m/privilege/WALLY-sie-01", | ||||
|     "rv32i_m/privilege/WALLY-mtvec-01", | ||||
|     "rv32i_m/privilege/WALLY-stvec-01", | ||||
|     "rv32i_m/privilege/WALLY-status-mie-01", | ||||
|     "rv32i_m/privilege/WALLY-status-sie-01", | ||||
|     "rv32i_m/privilege/WALLY-trap-sret-01", | ||||
|     "rv32i_m/privilege/WALLY-status-tw-01",  | ||||
|     "rv32i_m/privilege/WALLY-wfi-01" | ||||
|     "rv32i_m/privilege/src/WALLY-csr-permission-s-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-csr-permission-u-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-mie-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-minfo-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-misa-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-mmu-sv32.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-mtvec-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-pma.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-pmp.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-sie-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-status-mie-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-status-sie-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-status-tw-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-stvec-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-trap-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-trap-s-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-trap-sret-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-trap-u-01.S/ref/Ref", | ||||
|     "rv32i_m/privilege/src/WALLY-wfi-01.S/ref/Ref" | ||||
|  }; | ||||
| 
 | ||||
|  string wally32periph[] = '{ | ||||
|     `WALLYTEST, | ||||
|     "rv32i_m/privilege/WALLY-gpio-01" | ||||
|     "rv32i_m/privilege/src/WALLY-gpio-01.S/ref/Ref" | ||||
|  }; | ||||
| 
 | ||||
|  | ||||
| @ -1,20 +1,40 @@ | ||||
| arch_dir = ../../addins/riscv-arch-test | ||||
| wally_dir = ../wally-riscv-arch-test | ||||
| work_dir = ./riscof_work | ||||
| work = ./work | ||||
| arch_workdir = $(work)/riscv-arch-test | ||||
| wally_workdir = $(work)/wally-riscv-arch-test | ||||
| 
 | ||||
| current_dir = $(shell pwd) | ||||
| XLEN    ?= 64 | ||||
| 
 | ||||
| all: build | ||||
| all: root build_arch build_wally memfile | ||||
| 
 | ||||
| build: | ||||
| root: | ||||
| 	mkdir -p $(work_dir) | ||||
| 	mkdir -p work | ||||
| 	mkdir -p $(work) | ||||
| 	mkdir -p $(arch_workdir) | ||||
| 	mkdir -p $(wally_workdir) | ||||
| 	sed 's,{0},$(current_dir),g;s,{1},$(XLEN)$(if $(findstring 64,$(XLEN)),gc,imc),g' config.ini > config$(XLEN).ini | ||||
| 
 | ||||
| build_arch: | ||||
| 	riscof run --work-dir=$(work_dir) --config=config$(XLEN).ini --suite=$(arch_dir)/riscv-test-suite/ --env=$(arch_dir)/riscv-test-suite/env --no-browser | ||||
| 	rm -rf work/rv$(XLEN)i_m | ||||
| 	mv -f $(work_dir)/rv$(XLEN)i_m work/ | ||||
| 	rm -rf $(arch_workdir)/rv$(XLEN)i_m | ||||
| 	mv -f $(work_dir)/rv$(XLEN)i_m $(arch_workdir)/ | ||||
| 
 | ||||
| build_wally: | ||||
| 	riscof --verbose debug run --work-dir=$(work_dir) --config=config$(XLEN).ini --suite=$(wally_dir)/riscv-test-suite/ --env=$(wally_dir)/riscv-test-suite/env --no-browser --no-dut-run | ||||
| 	rm -rf $(wally_workdir)/rv$(XLEN)i_m | ||||
| 	mv -f $(work_dir)/rv$(XLEN)i_m $(wally_workdir)/ | ||||
| 
 | ||||
| memfile:  | ||||
| 	find $(work) -type f -name "*.elf" | grep "rv64i_m" | while read f; do riscv64-unknown-elf-elf2hex --bit-width 64 --input "$$f" --output "$$f.memfile"; done | ||||
| 	find $(work) -type f -name "*.elf" | grep "rv32i_m" | while read f; do riscv64-unknown-elf-elf2hex --bit-width 32 --input "$$f" --output "$$f.memfile"; done | ||||
| 	find $(work) -type f -name "*.elf.objdump" | while read f; do extractFunctionRadix.sh $$f; done | ||||
| 
 | ||||
| clean: | ||||
| 	rm -f config64.ini | ||||
| 	rm -f config32.ini | ||||
| 	rm -rf $(work_dir) | ||||
| 	rm -rf work | ||||
| 	rm -rf $(wally_workdir) | ||||
| 	rm -rf $(arch_workdir) | ||||
| @ -101,7 +101,7 @@ class sail_cSim(pluginTemplate): | ||||
|             execute += self.objdump_cmd.format(elf, self.xlen, 'Ref.elf.objdump') | ||||
|             sig_file = os.path.join(test_dir, self.name[:-1] + ".signature") | ||||
| 
 | ||||
|             execute += self.sail_exe[self.xlen] + ' --test-signature={0} {1} > {2}.log 2>&1;'.format(sig_file, elf, test_name) | ||||
|             execute += self.sail_exe[self.xlen] + ' -z268435455 --test-signature={0} {1} > {2}.log 2>&1;'.format(sig_file, elf, test_name) | ||||
| 
 | ||||
|             cov_str = ' ' | ||||
|             for label in testentry['coverage_labels']: | ||||
|  | ||||
| @ -1,11 +1,11 @@ | ||||
| hart_ids: [0] | ||||
| hart0: | ||||
|   ISA: RV32IMFCZicsr_Zifencei | ||||
|   ISA: RV32IMAFCZicsr_Zifencei | ||||
|   physical_addr_sz: 32 | ||||
|   User_Spec_Version: '2.3' | ||||
|   supported_xlen: [32] | ||||
|   misa: | ||||
|    reset-val: 0x40001124 | ||||
|    reset-val: 0x40001125 | ||||
|    rv32: | ||||
|      accessible: true | ||||
|      mxl: | ||||
| @ -23,7 +23,6 @@ hart0: | ||||
|            warl: | ||||
|               dependency_fields: [] | ||||
|               legal: | ||||
|                 - extensions[25:0] bitmask [0x0001124, 0x0000000] | ||||
|                 - extensions[25:0] bitmask [0x0001125, 0x0000000] | ||||
|               wr_illegal: | ||||
|                 - Unchanged | ||||
|   | ||||
|                 - Unchanged | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user