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