Update to upstream fesvr, run CI in parallel

This commit is contained in:
Florian Zaruba 2018-07-24 17:04:13 -07:00
parent 999fd730c5
commit 2702259c5d
No known key found for this signature in database
GPG key ID: E742FFE8EC38A792
4 changed files with 143 additions and 33 deletions

View file

@ -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

View file

@ -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"

5
ci/run-tests.sh Executable file
View file

@ -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/{}

132
ci/test.list Normal file
View file

@ -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