This PR introduces the use of RISC-V DV framework for testing VeeR-EL2 core.
The flow uses a custom Makefile located in tools/riscv-dv. The makefile invokes the run.py script which generates a random instruction stream for a given test, compiles it and runs in a ISS. Currently spike and veer-iss are supported by the makefile. The other part of the makefile is responsible for building verilated testbench for VeeR and running the same compiled code. The last part is execution log comparison using an utility from RISC-V DV.
Since RISC-V DV uses its own format of execution log (CSV) it was necessary to write a log converter for VeeR to adapt execution logs produced by testbench.
The PR also includes a GH action CI flow which builds all the dependencies (verilator, spike, and veer-iss) and runs the tests. The tests are organized in a matrix which tests all combinations of ISS and test. Currently there is only one test and two ISSes.
This PR introduces the use of RISC-V DV framework for testing VeeR-EL2 core.
The flow uses a custom Makefile located in
tools/riscv-dv
. The makefile invokes therun.py
script which generates a random instruction stream for a given test, compiles it and runs in a ISS. Currentlyspike
andveer-iss
are supported by the makefile. The other part of the makefile is responsible for building verilated testbench for VeeR and running the same compiled code. The last part is execution log comparison using an utility from RISC-V DV.Since RISC-V DV uses its own format of execution log (CSV) it was necessary to write a log converter for VeeR to adapt execution logs produced by testbench.
The PR also includes a GH action CI flow which builds all the dependencies (
verilator
,spike
, andveer-iss
) and runs the tests. The tests are organized in a matrix which tests all combinations of ISS and test. Currently there is only one test and two ISSes.