diff --git a/Makefile b/Makefile index 8a294578f..9fee9912f 100755 --- a/Makefile +++ b/Makefile @@ -46,28 +46,8 @@ tbs := tb/alu_tb.sv tb/ariane_tb.sv tb/ariane_testharness.sv tb/dcache_arbiter_t # RISCV-tests path riscv-test-dir := tmp/riscv-tests/build/isa -riscv-tests := rv64ui-p-add rv64ui-p-addi rv64ui-p-slli rv64ui-p-addiw rv64ui-p-addw rv64ui-p-and rv64ui-p-auipc \ - rv64ui-p-beq rv64ui-p-bge rv64ui-p-bgeu rv64ui-p-andi rv64ui-p-blt rv64ui-p-bltu rv64ui-p-bne \ - rv64ui-p-simple rv64ui-p-jal rv64ui-p-jalr rv64ui-p-or rv64ui-p-ori rv64ui-p-sub rv64ui-p-subw \ - rv64ui-p-xor rv64ui-p-xori rv64ui-p-slliw rv64ui-p-sll rv64ui-p-slli rv64ui-p-sllw \ - rv64ui-p-slt rv64ui-p-slti rv64ui-p-sltiu rv64ui-p-sltu rv64ui-p-sra rv64ui-p-srai \ - rv64ui-p-sraiw rv64ui-p-sraw rv64ui-p-srl rv64ui-p-srli rv64ui-p-srliw rv64ui-p-srlw \ - rv64ui-p-lb rv64ui-p-lbu rv64ui-p-ld rv64ui-p-lh rv64ui-p-lhu rv64ui-p-lui rv64ui-p-lw rv64ui-p-lwu \ - rv64mi-p-csr rv64mi-p-mcsr rv64mi-p-illegal rv64mi-p-ma_addr rv64mi-p-ma_fetch rv64mi-p-sbreak rv64mi-p-scall \ - rv64si-p-csr rv64si-p-ma_fetch rv64si-p-scall rv64si-p-wfi rv64si-p-sbreak rv64si-p-dirty \ - rv64uc-p-rvc \ - rv64ui-v-add rv64ui-v-addi rv64ui-p-slli rv64ui-v-addiw rv64ui-v-addw rv64ui-v-and rv64ui-v-auipc \ - rv64ui-v-beq rv64ui-v-bge rv64ui-v-bgeu rv64ui-v-andi rv64ui-v-blt rv64ui-v-bltu rv64ui-v-bne \ - rv64ui-v-simple rv64ui-v-jal rv64ui-v-jalr rv64ui-v-or rv64ui-v-ori rv64ui-v-sub rv64ui-v-subw \ - rv64ui-v-xor rv64ui-v-xori rv64ui-v-slliw rv64ui-v-sll rv64ui-v-slli rv64ui-v-slliw \ - rv64ui-v-slt rv64ui-v-slti rv64ui-v-sltiu rv64ui-v-sltu rv64ui-v-sra rv64ui-v-srai \ - rv64ui-v-sraiw rv64ui-v-sraw rv64ui-v-srl rv64ui-v-srli rv64ui-v-srliw rv64ui-v-srlw \ - rv64ui-v-lb rv64ui-v-lbu rv64ui-v-ld rv64ui-v-lh rv64ui-v-lhu rv64ui-v-lui \ - rv64um-p-mul rv64um-p-mulh rv64um-p-mulhsu rv64um-p-mulhu rv64um-p-div rv64um-p-divu rv64um-p-rem \ - rv64um-p-remu rv64um-p-mulw rv64um-p-divw rv64um-p-divuw rv64um-p-remw rv64um-p-remuw \ - rv64um-v-mul rv64um-v-mulh rv64um-v-mulhsu rv64um-v-mulhu rv64um-v-div rv64um-v-divu rv64um-v-rem \ - rv64um-v-remu rv64um-v-mulw rv64um-v-divw rv64um-v-divuw rv64um-v-remw rv64um-v-remuw - +# there is a defined test-list of CI tests +riscv-ci-tests := $$(xargs printf '\n%s' < ci/test.list | cut -b 1-) # preset which runs a single test riscv-test ?= $(riscv-test-dir)/rv64ui-p-add # failed test directory @@ -140,15 +120,12 @@ simc: build -gblso $(RISCV)/lib/libfesvr.so -sv_lib $(library)/ariane_dpi -do "run -all; do tb/wave/wave_core.do; exit" ${top_level}_optimized +permissive-off ++$(riscv-test) run-asm-tests: build - $(foreach test, $(riscv-tests), vsim$(questa_version) +permissive -64 +BASEDIR=$(riscv-test-dir) +max-cycles=$(max_cycles) \ + $(foreach test, $(riscv-ci-tests), vsim$(questa_version) +permissive -64 +BASEDIR=$(riscv-test-dir) +max-cycles=$(max_cycles) \ +UVM_TESTNAME=$(test_case) $(uvm-flags) +ASMTEST=$(test) +uvm_set_action="*,_ALL_,UVM_ERROR,UVM_DISPLAY|UVM_STOP" -c \ -coverage -classdebug -gblso $(RISCV)/lib/libfesvr.so -sv_lib $(library)/ariane_dpi \ -do "coverage save -onexit $@.ucdb; run -a; quit -code [coverage attribute -name TESTSTATUS -concise]" \ $(library).$(test_top_level)_optimized +permissive-off ++$(test);) -run-asm-tests-verilator: verilate - $(foreach test, $(riscv-tests), obj_dir/Variane_testharness $(riscv-test-dir)/$(test);) - # Run the specified test case $(tests): build # Optimize top level @@ -191,9 +168,6 @@ verilate: $(list_incdir) --top-module ariane_testharness --exe tb/ariane_tb.cpp tb/dpi/SimDTM.cc cd obj_dir && make -j8 -f Variane_testharness.mk -# -Werror-UNDRIVEN -# -Werror-BLKSEQ - verify: qverify vlog -sv src/csr_regfile.sv diff --git a/ci/install-fesvr.sh b/ci/install-fesvr.sh index bd8eb8989..659183feb 100755 --- a/ci/install-fesvr.sh +++ b/ci/install-fesvr.sh @@ -4,11 +4,10 @@ ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) cd $ROOT/tmp RELEASE=0.1.0 -if ! [ -e $ROOT/tmp/riscv-fesvr-$RELEASE ]; then - wget https://github.com/pulp-platform/riscv-fesvr/archive/v$RELEASE.tar.gz - tar xzf v$RELEASE.tar.gz +if ! [ -e $ROOT/tmp/riscv-fesvr ]; then + https://github.com/riscv/riscv-fesvr.git fi -cd $ROOT/tmp/riscv-fesvr-$RELEASE +cd $ROOT/tmp/riscv-fesvr mkdir -p build cd build ../configure --prefix="$ROOT/tmp" diff --git a/ci/run-tests.sh b/ci/run-tests.sh new file mode 100755 index 000000000..695ceba48 --- /dev/null +++ b/ci/run-tests.sh @@ -0,0 +1,5 @@ +#!/bin/sh +set -e +ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +printf "$(xargs printf '\n%s' < $ROOT/ci/test.list | cut -b 1-)" | xargs -n1 -P4 -I{} $ROOT/obj_dir/Variane_testharness tmp/riscv-tests/build/isa/{} + diff --git a/ci/test.list b/ci/test.list new file mode 100644 index 000000000..f7f56ecab --- /dev/null +++ b/ci/test.list @@ -0,0 +1,132 @@ +rv64ui-p-add +rv64ui-p-addi +rv64ui-p-slli +rv64ui-p-addiw +rv64ui-p-addw +rv64ui-p-and +rv64ui-p-auipc +rv64ui-p-beq +rv64ui-p-bge +rv64ui-p-bgeu +rv64ui-p-andi +rv64ui-p-blt +rv64ui-p-bltu +rv64ui-p-bne +rv64ui-p-simple +rv64ui-p-jal +rv64ui-p-jalr +rv64ui-p-or +rv64ui-p-ori +rv64ui-p-sub +rv64ui-p-subw +rv64ui-p-xor +rv64ui-p-xori +rv64ui-p-slliw +rv64ui-p-sll +rv64ui-p-slli +rv64ui-p-sllw +rv64ui-p-slt +rv64ui-p-slti +rv64ui-p-sltiu +rv64ui-p-sltu +rv64ui-p-sra +rv64ui-p-srai +rv64ui-p-sraiw +rv64ui-p-sraw +rv64ui-p-srl +rv64ui-p-srli +rv64ui-p-srliw +rv64ui-p-srlw +rv64ui-p-lb +rv64ui-p-lbu +rv64ui-p-ld +rv64ui-p-lh +rv64ui-p-lhu +rv64ui-p-lui +rv64ui-p-lw +rv64ui-p-lwu +rv64mi-p-csr +rv64mi-p-mcsr +rv64mi-p-illegal +rv64mi-p-ma_addr +rv64mi-p-ma_fetch +rv64mi-p-sbreak +rv64mi-p-scall +rv64si-p-csr +rv64si-p-ma_fetch +rv64si-p-scall +rv64si-p-wfi +rv64si-p-sbreak +rv64si-p-dirty +rv64uc-p-rvc +rv64ui-v-add +rv64ui-v-addi +rv64ui-p-slli +rv64ui-v-addiw +rv64ui-v-addw +rv64ui-v-and +rv64ui-v-auipc +rv64ui-v-beq +rv64ui-v-bge +rv64ui-v-bgeu +rv64ui-v-andi +rv64ui-v-blt +rv64ui-v-bltu +rv64ui-v-bne +rv64ui-v-simple +rv64ui-v-jal +rv64ui-v-jalr +rv64ui-v-or +rv64ui-v-ori +rv64ui-v-sub +rv64ui-v-subw +rv64ui-v-xor +rv64ui-v-xori +rv64ui-v-slliw +rv64ui-v-sll +rv64ui-v-slli +rv64ui-v-slliw +rv64ui-v-slt +rv64ui-v-slti +rv64ui-v-sltiu +rv64ui-v-sltu +rv64ui-v-sra +rv64ui-v-srai +rv64ui-v-sraiw +rv64ui-v-sraw +rv64ui-v-srl +rv64ui-v-srli +rv64ui-v-srliw +rv64ui-v-srlw +rv64ui-v-lb +rv64ui-v-lbu +rv64ui-v-ld +rv64ui-v-lh +rv64ui-v-lhu +rv64ui-v-lui +rv64um-p-mul +rv64um-p-mulh +rv64um-p-mulhsu +rv64um-p-mulhu +rv64um-p-div +rv64um-p-divu +rv64um-p-rem +rv64um-p-remu +rv64um-p-mulw +rv64um-p-divw +rv64um-p-divuw +rv64um-p-remw +rv64um-p-remuw +rv64um-v-mul +rv64um-v-mulh +rv64um-v-mulhsu +rv64um-v-mulhu +rv64um-v-div +rv64um-v-divu +rv64um-v-rem +rv64um-v-remu +rv64um-v-mulw +rv64um-v-divw +rv64um-v-divuw +rv64um-v-remw +rv64um-v-remuw