Overview
In the evidenced cross-level processor verification approach, the Instruction Set Simulator (ISS) is used as a reference model alongside an RTL core. The setup integrates the ISS and RTL core in an efficient co-simulation compiled into a single binary with in-memory communication. The approach generates endless instruction streams and uses the ISS reference execution as part of the verification loop. [C1]
Role in coverage-guided co-simulation
The flow uses randomized, coverage-guided instruction stream generation. Coverage information is continuously updated from the execution state of the ISS, and the paper describes using Coverage-guided Aging to smooth the coverage distribution of the randomized instruction stream over time. [C2]
After instructions execute, the RTL core and ISS write their results to separated memories. The Coverage-Observer then measures functional coverage based on the ISS execution state, performs coverage aging, and provides hints to the Instruction-Injector when functionality should be covered again. [C3]
Comparison against the RTL core
The Comparator is responsible for finding functional differences between the RTL core and the ISS. It compares register values from both sides. Because the RTL core and ISS do not have identical timing behavior, the Comparator logs value changes and compares changes at the same position. If it finds a difference, it exits the simulation. [C4]
Handling RTL fetch behavior
The flow accounts for RTL microarchitectural effects such as pipelining, prefetching, and fetch buffering. A Core Adapter checks for addresses that were not fetched by the ISS, fills them with randomized values that were not generated by InstrGen, and forwards them to the RTL core. [C5]
Evaluation configuration
In the reported evaluation, the device under test was a 32-bit pipelined RISC-V core from the MINRES The Good Core series. The reference model was the ISS from the open-source SystemC-based RISC-V VP. The RTL core was translated to C++ using Verilator and integrated with the ISS in a SystemC test bench. For the evaluation, both the core and ISS were configured to support the RISC-V subset RV32IMCZicsrZifencei. [C6]
The experiments used a SystemC simulation time limit of 1 second, corresponding to approximately 20 million instructions in the reported setup. [C7]