Skip to content
STIMSMITH

Coverage-Guided Graybox Fuzzing (CGF)

Technique WIKI v1 · 6/26/2026

Coverage-Guided Graybox Fuzzing (CGF) is a foundational hardware-fuzzing technique in which input generation is driven by real-time code-coverage feedback. In a CGF loop, the fuzzer prioritizes input mutations that reveal previously unexplored paths in a design, with the goal of improving functional coverage of RTL hardware. CGF-based RTL-level fuzzing frameworks have demonstrated broad coverage, particularly on designs with complex datapaths, although they do not by themselves target specific regions of interest the way Directed Graybox Fuzzing (DGF) does.

Coverage-Guided Graybox Fuzzing (CGF)

Overview

Coverage-Guided Graybox Fuzzing (CGF) is a hardware-verification technique in which a fuzzer repeatedly generates and mutates inputs while observing real-time code-coverage feedback from the design under test. Inputs that exercise previously unseen paths are retained and prioritized, so the campaign progressively expands the explored portion of the design and improves its functional coverage.

CGF was originally inspired by well-established software fuzzing techniques and was adopted in the hardware domain as a promising complementary approach to traditional functional and formal verification, which struggle to scale with the growing complexity of modern hardware designs that integrate billions of transistors and a wide range of components.

How CGF Works

In a CGF loop:

  1. The fuzzer generates or mutates inputs.
  2. Each input is run against the design (typically at the RTL level).
  3. Real-time code-coverage feedback is collected.
  4. Mutations that reveal previously unexplored paths are favored and propagated.

The objective is to improve functional coverage of RTL designs, with CGF-based frameworks having demonstrated effectiveness in achieving broad coverage across designs with complex datapaths.

Role in Hardware Verification

CGF has become a foundational technique in hardware fuzzing. A number of RTL-level fuzzing frameworks instantiate the CGF paradigm and have been used to expose subtle or hard-to-find bugs in modern hardware systems. By leveraging coverage as the steering signal, CGF offers an automated, scalable alternative or complement to manual functional verification and formal methods.

Relationship to Directed Graybox Fuzzing (DGF)

CGF is contrasted with Directed Graybox Fuzzing (DGF), an alternative that, unlike CGF, steers test generation toward specific regions of interest rather than expanding global coverage. DGF is particularly useful in incremental hardware design workflows where verification must focus on specific changes — for example patch validation, bug localization, or module-specific testing — rather than re-testing the entire system. CGF-based techniques, while a significant advancement, fall short in addressing these practical realities of hardware design workflows.

Limitations

Because CGF aims at broad functional coverage rather than focused exploration, it can be inefficient when verification needs to concentrate on particular modules, recently changed code, or specific bug locations. This limitation motivated directed approaches such as DGF.

See Also

CITATIONS

4 sources
4 citations
[1] CGF has become a foundational technique in hardware fuzzing, inspired by well-established software fuzzing techniques. Intelligent Graybox Fuzzing via ATPG-Guided Seed Generation and Submodule Analysis
[2] In CGF, input generation is directed by feedback from real-time code coverage, allowing the fuzzer to prioritize input mutations that reveal unexplored paths in the design to improve functional coverage of RTL designs. Intelligent Graybox Fuzzing via ATPG-Guided Seed Generation and Submodule Analysis
[3] RTL-level fuzzing frameworks using CGF have demonstrated effectiveness in achieving broad coverage, particularly across designs with complex datapaths. Intelligent Graybox Fuzzing via ATPG-Guided Seed Generation and Submodule Analysis
[4] CGF-based techniques fall short in addressing the practical realities of incremental hardware design workflows, motivating Directed Graybox Fuzzing (DGF) which, unlike CGF, enables targeted fuzzing by steering test generation toward specific regions of interest (e.g., patch validation, bug localization, module-specific testing). Intelligent Graybox Fuzzing via ATPG-Guided Seed Generation and Submodule Analysis