Overview
Register-Transfer Level (RTL) appears in the evidence as a hardware design level for processor cores and microprocessors under verification. In processor-verification settings, the RTL core is treated as the implementation under test and is compared against a higher-level reference such as an instruction-set simulator (ISS). This comparison must account for micro-architectural behavior such as pipelining, prefetching, and fetch buffering.
Role in processor verification
In the cross-level processor-verification setup described in the DATE 2022 paper Cross-Level Processor Verification via Endless Randomized Instruction Stream Generation with Coverage-guided Aging, an instruction generator feeds both an ISS and an RTL core. The ISS acts as a reference model, while the RTL core is integrated into an efficient co-simulation environment compiled into a single binary with in-memory communication.
The approach generates endless, unrestricted instruction streams, including arbitrary combinations of load/store instructions, Control and Status Register (CSR) instructions, and infinite loops. Runtime coverage information is observed from the ISS execution state and used to guide instruction generation through coverage-guided aging. The stated goal is to obtain broad and deep coverage and expose intricate corner-case bugs in the RTL core.
A core adapter is needed because the RTL core can exhibit micro-architectural effects that the ISS does not model in the same way, including pipelining, prefetching, and fetch buffering. The adapter handles addresses not fetched by the ISS by filling them with randomized values and forwarding them to the RTL core. After execution, the RTL core and ISS write results to separate memories. A comparator then checks functional differences by comparing register-value changes from the ISS and RTL core, while accounting for timing differences between the two models.
Coverage-guided RTL testing example
The evaluated device under test in the DATE 2022 study was the 32-bit pipelined RISC-V core from the MINRES The Good Core (TGC) series. The industrial RTL core was translated to C++ using Verilator and integrated into a SystemC test bench together with an open-source SystemC-based RISC-V virtual-platform ISS. The configured RISC-V subset was RV32IMCZicsrZifencei, and the experiments used a SystemC simulation time limit of 1 second, corresponding to about 20 million instructions in the reported setup.
RTL in formal and security analysis
RTL is also used as the level of design for automated microprocessor hazard analysis. The HADES tool, according to the public arXiv summary, targets single-pipeline microprocessors designed at RTL and focuses on data hazards including read-after-write, write-after-write, and write-after-read hazards. Its techniques include data-flow analysis, error-pattern matching, SMT solving, and abstract regular model checking.
RTL is also used in hardware-security modeling. The public arXiv summary of Information Flow Coverage Metrics for Hardware Security Verification describes a hyperflow graph as an RTL hardware security graph. In that context, the graph models information flows and carries attributes that support security metrics for flow paths, flow conditions, and flow rates, with evaluation on the OpenTitan hardware root of trust under several threat models.
Related concepts and systems
- Cross-Level Processor Verification uses RTL cores as one side of a co-simulation against an ISS reference model.
- Cross-Level Processor Verification via Endless Randomized Instruction Stream Generation with Coverage-guided Aging demonstrates coverage-guided randomized testing of an RTL RISC-V core.
- MINRES The Good Core (TGC) appears in the evidence as the source of the 32-bit pipelined RISC-V RTL core used as the device under test.