Definition
Architectural coverage is presented as the first metric for basic verification in a RISC-V CPU testing evaluation. In the cited study, it refers to coverage of the RISC-V architecture as observed through execution of the RISC-V Sail model. The tool sailcov measured this by recording how many branches of the RISC-V Sail model were explored during a run.
Use in RISC-V verification evaluation
The coverage study compared the TestRIG QCVEngine against the RISC-V test suite, riscv-tests, and the RISCV-DV generator. The study used two runs of each framework for two architecture configurations:
RV32IMCRV64IMAFDCZicsr
For RV32IMC, the study measured Sail model coverage for the I, M, and C extension instructions, as well as coverage of the general-purpose registers. For RV64IMAFDCZicsr, it measured coverage of I, M, A, F, D, C, and CSR instructions, plus coverage of general-purpose and floating-point registers.
Framework-specific measurement methods
The evaluation measured each framework through the Sail RISC-V model, but the measurement path differed by framework:
- For
riscv-tests, coverage was measured by running the test binaries on the Sail RISC-V model. - For RISCV-DV, the authors produced TestRIG traces from the Spike simulator executing the tests, then replayed those traces through RVFI-DII while measuring Sail model coverage.
- For QCVEngine, the authors configured it with the two architecture strings and ran 500 sequences of each generator.
Reported interpretation
For RV32IMC, the results were reported as similar across QCVEngine, riscv-tests, and RISCV-DV. The authors interpreted this as indicating that QCVEngine can support a suitable alternative to unit testing and torture testing, at least with respect to breadth of coverage.