Skip to content
STIMSMITH

Constructive Test Generation

Concept

Constructive test generation is a hardware-fuzzing paradigm in which test programs are assembled instruction by instruction from scratch, rather than produced by mutating an existing seed. It trades the structural fragility of mutation-based fuzzers for a combinatorial search space that must respect syntactic and semantic validity, and is the foundation of generation-based CPU fuzzers such as Cascade and HiFuzz.

First seen 7/10/2026
Last seen 7/10/2026
Evidence 3 chunks
Wiki v1

WIKI

Definition

Constructive test generation is a program-synthesis approach to hardware (CPU) fuzzing in which each test program is assembled from scratch at the granularity of basic blocks and individual instructions, in contrast to coverage-guided mutation, which produces a new test by applying a discrete operator to a seed program [1]. Because the generator must decide every control-flow and data-flow decision itself, the search space is combinatorial and every emitted instruction has to respect both ISA-level legality and intra-program dependencies.

Control-Validity Dilemma

READ FULL ARTICLE →

NEIGHBORHOOD

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

explore full graph →

RELATIONSHIPS

2 connections
HiFuzz ← implements 95% 2e
HiFuzz uses constructive generation to assemble programs instruction by instruction rather than mutating seeds.
Cascade ← implements 100% 1e
Cascade uses an asymmetric ISA pre-simulation step to synthesize valid instruction streams from scratch.

CITATIONS

9 sources
9 citations — click to expand
[1] Constructive generation assembles a program instruction by instruction while respecting syntactic and semantic dependencies, creating a control-validity dilemma. HiFuzz: Hierarchical Reinforcement Learning for Semantic-Aware and Adaptive CPU Fuzzing
[2] The three open challenges of RL-based constructive hardware fuzzing are complex action space with structural dependencies, sparse feedback and delayed rewards, and reward bias with a masking effect. HiFuzz: Hierarchical Reinforcement Learning for Semantic-Aware and Adaptive CPU Fuzzing
[3] Mutation-based fuzzers such as DifuzzRTL produce streams with very low completion rates (median 1.7%, prevalence 3.0% as reported by Cascade), motivating constructive generation. HiFuzz: Hierarchical Reinforcement Learning for Semantic-Aware and Adaptive CPU Fuzzing
[4] Cascade is a generation-based CPU fuzzer that uses an asymmetric ISA pre-simulation step to synthesize valid instruction streams from scratch; its generation is heuristic and does not learn from past runs. HiFuzz: Hierarchical Reinforcement Learning for Semantic-Aware and Adaptive CPU Fuzzing
[5] HiFuzz's hierarchical constructive generator splits a program into a Program Level Config (memory, BB count, BB-size distribution, control-flow template) and per-BB Level Configs (instruction-category mix, termination mode), with a constrained generator enforcing operand dependencies, privilege constraints, address legality, and jump-target consistency. HiFuzz: Hierarchical Reinforcement Learning for Semantic-Aware and Adaptive CPU Fuzzing
[6] HiFuzz's whole-program validation step accepts a generated program only after confirming that every transfer target stays within allocated regions and every memory access remains in bounds. HiFuzz: Hierarchical Reinforcement Learning for Semantic-Aware and Adaptive CPU Fuzzing
[7] HiFuzz's Program Agent is a Rainbow DQN scheduler with an 11-dimensional state and 1,375 discrete configurations; the Basic Block Agent is a multi-head Actor-Critic trained with PPO. HiFuzz: Hierarchical Reinforcement Learning for Semantic-Aware and Adaptive CPU Fuzzing
[8] HiFuzz addresses constructive-generation reward sparsity with a Semantic-Aware Basic Block Encoder that yields intrinsic novelty rewards, and addresses reward bias with a UCB-based adaptive coverage reward mechanism. HiFuzz: Hierarchical Reinforcement Learning for Semantic-Aware and Adaptive CPU Fuzzing
[9] Earlier RL-based fuzzers such as ChatFuzz and GenHuzz emit flat token sequences without explicit program structure, tying the policy to a specific DUT's coverage counters and relying on global policy resets for recovery. HiFuzz: Hierarchical Reinforcement Learning for Semantic-Aware and Adaptive CPU Fuzzing