Skip to content
STIMSMITH

Control Register Coverage

Concept WIKI v2 · 6/6/2026

Control Register Coverage is a hardware coverage metric used in processor-fuzzing frameworks. A control register is defined as any register whose value drives a multiplexer select signal. The metric is collected by instrumenting all such registers so that the different states triggered within each module are counted and summed into a final coverage value. It is adopted by both DifuzzRTL and MorFuzz to enable direct comparison of fuzzing effectiveness.

Overview

Control Register Coverage is a hardware coverage metric used in simulation-based processor fuzzing. In the MorFuzz paper it is defined as the coverage derived from registers whose values are used for any multiplexer's select signal. Such registers are termed control registers, and the metric measures how many distinct states of these registers are exercised during fuzzing campaigns.

The metric is one of several hardware coverage matrices proposed for processor fuzzing, alongside mux coverage (used by the fuzzer of reference [37] cited in the MorFuzz paper) and hardware behavior coverage (used by TheHuzz).

Adoption by fuzzing tools

Control Register Coverage is explicitly used by two processor-fuzzing frameworks:

  • DifuzzRTL — the framework that originally introduced this coverage matrix (cited as reference [30] in MorFuzz).
  • MorFuzz — reuses the same control register coverage as DifuzzRTL "to facilitate comparison" of fuzzing effectiveness, and is described as compatible with the coverage matrices proposed by existing designs.

Instrumentation and measurement

Both DifuzzRTL and MorFuzz implement the same FIRRTL compiler pass to instrument all control registers in the design under test (DUT). The instrumentation, applied to the RTL (translated to Verilog and compiled with Synopsys VCS in the MorFuzz workflow), causes the instrumented circuits to:

  1. observe the states triggered in each module;
  2. count the different triggered states; and
  3. sum the per-module counts as the final coverage value.

The metric is described as clock-sensitive, meaning that the values sampled are those that actually propagate through the hardware on a clock edge, which the authors argue reflects the hardware state better than other coverage matrices.

Role in the fuzzing workflow

In the general processor-fuzzing workflow, the metric is collected during the hardware simulation phase: the DUT's RTL is translated into a host executable and the fuzzer relies on hardware instruments to gather coverage of the current input. Coverage values are then used to drive mutation of instruction streams between rounds.

Interpretation and limitations

Control Register Coverage is used solely to evaluate the effect of inputs and mutations; the MorFuzz paper explicitly cautions that achieving high control register coverage in the DUT does not mean that the design is bug-free. The same metric is therefore used as a comparative, not absolute, measure when benchmarking fuzzers such as DifuzzRTL and MorFuzz on the same DUTs.

LINKED ENTITIES

2 links

CITATIONS

8 sources
8 citations
[1] A control register is defined as the register whose value is used for any multiplexer's select signal. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing
[2] The control register coverage is implemented via the same FIRRTL pass used by DifuzzRTL to instrument all control registers. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing
[3] Instrumented circuits count the different states triggered in the module and sum up the count as the final coverage. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing
[4] The control register coverage is clock-sensitive and reflects the hardware state better than other coverage matrices. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing
[5] Achieving high coverage in the DUT does not mean the design is bug-free; coverage is only used to evaluate the effect of inputs and mutations. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing
[6] MorFuzz uses the same control register coverage as DifuzzRTL (reference [30]) to facilitate comparison. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing
[7] Control register coverage is one of the coverage matrices used by existing processor fuzzing frameworks, alongside mux coverage and hardware behavior coverage. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing
[8] During simulation-based fuzzing, the fuzzer uses hardware instruments to collect coverage of the current input. MorFuzz: Fuzzing Processor via Runtime Instruction Morphing

VERSION HISTORY

v2 · 6/6/2026 · minimax/minimax-m3 (current)
v1 · 5/27/2026 · gpt-5.5