Skip to content
STIMSMITH

Constraint Solving

Concept

Constraint solving is the task of finding values for variables that satisfy stated constraints over their domains. In the cited evidence it appears as a key technology for hardware verification, including constrained random simulation (stimulus generation), SystemVerilog constraint randomization, and the generation of test cases for microprocessor functional verification.

First seen 5/25/2026
Last seen 7/17/2026
Evidence 12 chunks
Wiki v5

WIKI

Overview

Constraint solving is the task of finding values for variables that satisfy stated constraints over their domains. In the cited evidence it appears as a core technology for hardware verification flows, particularly in constrained random simulation (stimulus generation), SystemVerilog constraint randomization, and the generation of test cases for the functional verification of microprocessors. [C1] [C2] [C3] [C4]

Constraint Solving in Stimulus Generation for Constrained Random Simulation

READ FULL ARTICLE →

NEIGHBORHOOD

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

explore full graph →

RELATIONSHIPS

10 connections
Theo ← uses 100% 4e
Theo uses a constraint solving engine for code generation.
The paper uses constraint solving techniques to generate test vectors.
Theo ← implements 99% 2e
Theo uses a constraint solving engine to produce Intermediate Code Representation.
SystemVerilog Constraint Randomization ← implements 95% 2e
SystemVerilog Constraint Randomization relies on constraint solving to generate valid random values.
Stimulus Generation ← uses 1e
Stimulus generation requires constraint solving to produce valid inputs.
symbolic test case generation part of → 100% 1e
Constraint solving is used in the test data selection phase of symbolic test case generation.
hybrid constraint solver ← implements 1e
The hybrid constraint solver implements constraint solving for stimulus generation.
code-based test generation ← uses 95% 1e
Code-based test generation uses constraint solving to generate test vectors
Verisium Debug ← evaluates 95% 1e
Verisium Debug provides visibility into the constraint solving process during simulation.
Constraint Partitioning ← part of 90% 1e
Constraint partitioning is a step within the constraint solving process.

CITATIONS

9 sources
9 citations — click to expand
[1] Constrained random simulation requires the random generation of input stimuli that obey a set of declaratively specified input constraints, and its efficiency depends on the performance of the constraint solver and the distribution of generated solutions. Stimulus generation for constrained random simulation
[2] A hybrid solver based on Markov-chain Monte Carlo methods is proposed for efficient constraint solving for stimulus generation for mixed Boolean/integer variable domains. Stimulus generation for constrained random simulation
[3] A collection of code generation tools for microprocessor functional verification produce interesting test cases using a variety of methods including heuristic algorithms, constraint-solving systems, user-provided templates, and pseudo-random selection. Code Generation and Analysis for the Functional Verification of Microprocessors
[4] Run-time analysis and characterization of generated programs provide an evaluation of their effectiveness in verifying a microprocessor design and suggest improvements to the code generation process. Code Generation and Analysis for the Functional Verification of Microprocessors
[5] An environment combining code generation tools with analysis tools has provided excellent functional coverage for several generations of high-performance microprocessors. Code Generation and Analysis for the Functional Verification of Microprocessors
[6] In SystemVerilog constraint randomization, the constraint solving engine partitions constraints into solving steps, and users lack direct visibility into how randomized variables are generated. Debugging SystemVerilog Constraint Randomization: A Comprehensive Guide
[7] Common issues in SystemVerilog constraint randomization include constraint violations, randomization failure, seed dependency, complex constraints, strict constraints, and dynamic constraint needs. Debugging SystemVerilog Constraint Randomization: A Comprehensive Guide
[8] Verisium Debug provides complete visibility into how constraints are resolved, integrating with Xcelium to access the constraint solving and randomization process, exposing solver steps, class structure, variables, constraints, and source. Debugging SystemVerilog Constraint Randomization: A Comprehensive Guide
[9] Verisium Debug's Randomization Debug window shows how the constraint is partitioned and how many steps are within the same partition, and supports a pre-randomize feature to observe the distribution of randomized values. Debugging SystemVerilog Constraint Randomization: A Comprehensive Guide