Skip to content
STIMSMITH

RVFI-DII

Concept

RVFI-DII is the TestRIG-compatible combination of RVFI-style per-instruction state observation with Direct Instruction Injection, used to compare RISC-V models, simulators, and simulated hardware implementations through generated instruction streams and trace comparison.

First seen 5/27/2026
Last seen 6/8/2026
Evidence 14 chunks
Wiki v1

WIKI

Overview

RVFI-DII refers to the instrumentation style used by TestRIG-compatible RISC-V models, simulators, and implementations: RVFI is used to observe architectural state changes after each instruction, while Direct Instruction Injection (DII) supplies the next instruction from the test harness rather than from program memory. The TestRIG paper describes this approach in the context of randomized RISC-V CPU testing and later refers to “models, simulators, and implementations supporting RVFI-DII.”

Role in TestRIG

READ FULL ARTICLE →

NEIGHBORHOOD

No graph connections found for this entity yet. It may appear in future ingestion runs.

explore full graph →

RELATIONSHIPS

31 connections
TestRIG ← uses 100% 12e
TestRIG uses the RVFI-DII interface as its standard interface for cross-verifying implementations.
The paper introduces RVFI-DII as a combined interface for instruction injection and trace output.
Toooba ← implements 90% 6e
Toooba is instrumented with RVFI-DII for use in TestRIG.
RVFI extends → 100% 5e
RVFI-DII extends RVFI with the Direct Instruction Injection input channel.
Flute ← implements 90% 4e
Flute is instrumented with RVFI-DII for use in TestRIG.
TestRIG ← implements 100% 4e
TestRIG uses RVFI-DII as its standardized communication interface.
Piccolo ← implements 90% 4e
Piccolo is instrumented with RVFI-DII for use in TestRIG.
Toooba ← uses 100% 4e
Toooba is instrumented with RVFI-DII using superscalar fetch and ID assignment.
RVBS ← uses 90% 3e
RVBS is instrumented with RVFI-DII to participate in the TestRIG ecosystem.
Flute ← uses 100% 3e
Flute is instrumented with RVFI-DII using a DII queue replacing the instruction cache.
Piccolo ← uses 100% 3e
Piccolo is instrumented with RVFI-DII, with the cache replaced by a DII queue.
UCAM-CL-TR-984 ← uses 100% 2e
RVFI-DII is implemented and used in the TestRIG infrastructure for processor verification.
RVBS ← implements 90% 2e
RVBS is a RISC-V reference implementation instrumented with RVFI-DII.
Ibex ← implements 90% 2e
Ibex is instrumented with RVFI-DII for use in TestRIG.
QCVEngine ← uses 100% 2e
QCVEngine communicates with implementations via RVFI-DII sockets.
Ibex ← uses 90% 2e
Ibex is instrumented with RVFI-DII to participate in the TestRIG ecosystem.
Direct Instruction Injection ← implements 100% 2e
Direct Instruction Injection is the DII component of the RVFI-DII interface.
Flute ← uses 90% 1e
Flute has been instrumented with RVFI-DII.
Sail ← implements 100% 1e
The Sail model implements the RVFI-DII interface.
BSV-RVFI-DII Library ← implements 95% 1e
The BSV-RVFI-DII library provides a Bluespec implementation of the RVFI-DII interface.
Direct Instruction Injection ← part of 100% 1e
Direct Instruction Injection is the input component of the RVFI-DII interface.
QEMU ← uses 95% 1e
QEMU was extended with the Direct Instruction Injection interface to support TestRIG verification.
Sail RISC-V Model ← uses 100% 1e
The Direct Instruction Injection interface was added to the Sail RISC-V formal model.
spike ← uses 95% 1e
Spike was extended with the Direct Instruction Injection interface to support TestRIG verification.
RVFI ← extends 100% 1e
RVFI-DII extends RVFI by adding Direct Instruction Injection capabilities.
spike ← implements 95% 1e
Spike has been extended with the Direct Instruction Injection interface for use with TestRIG.
QEMU ← implements 95% 1e
QEMU has been extended with the Direct Instruction Injection interface for use with TestRIG.
Direct Instruction Injection uses → 100% 1e
RVFI-DII combines RVFI trace output with Direct Instruction Injection input.
Piccolo ← uses 90% 1e
Piccolo has been instrumented with RVFI-DII.
RISC-V Formal Interface part of → 85% 1e
RVFI-DII is an extension of the RISC-V Formal Interface standard.
RVFI uses → 100% 1e
RVFI-DII uses RVFI as its trace output mechanism.

CITATIONS

7 sources
7 citations — click to expand
[1] TestRIG checks equivalence by generating random instruction sequences, executing them on a model and an implementation under test, and comparing execution traces; this can demonstrate divergence but does not prove equivalence. Randomized Testing of RISC-V CPUs using Direct
[2] TestRIG uses the RISC-V Formal Interface standard to observe the change in state after each instruction of the implementation under test. Randomized Testing of RISC-V CPUs using Direct
[3] Direct Instruction Injection provides the next instruction from the test harness regardless of the CPU program counter, unlike normal execution where the next instruction is fetched from program memory at an address determined by the program counter. Randomized Testing of RISC-V CPUs using Direct
[4] The TestRIG work compares executable formal models, software ISA simulators, and simulated execution of hardware designs rather than completed fabricated chips. Randomized Testing of RISC-V CPUs using Direct
[5] The paper refers to an array of models, simulators, and implementations supporting RVFI-DII. Randomized Testing of RISC-V CPUs using Direct
[6] A proposed future TestRIG direction is memory-model testing using RVFI-DII instruction streams injected with specified timestamps into multiple shared-memory cores, with checking against higher-level memory-model semantics. Randomized Testing of RISC-V CPUs using Direct
[7] The current TestRIG-compatible implementations and verification engines were collated into the open-source TestRIG repository. Randomized Testing of RISC-V CPUs using Direct