Skip to content
STIMSMITH

Constraint Solver

Concept

A constraint solver, in the provided verification context, is the component of Synopsys VCS that solves SystemVerilog constrained-random randomization problems for opcode and microcode stimulus generation. Its performance depends strongly on the number of random variables and constraints presented to each randomize call; hierarchical partitioning of opcode constraints can reduce memory use and improve runtime.

First seen 5/28/2026
Last seen 5/31/2026
Evidence 2 chunks
Wiki v1

WIKI

Overview

In the provided evidence, a constraint solver is discussed in the context of Synopsys VCS and SystemVerilog constrained-random verification. It is used to randomize microcode instruction and opcode objects subject to constraints, weights, and legal combinations of instruction attributes. SystemVerilog constraint-language constructs provide a concise way to describe possible attribute combinations and control the distribution of individual fields, while the VCS constraint solver applies generator-layer weights to control the distribution of opcode types. [1]

Role in opcode stimulus generation

READ FULL ARTICLE →

NEIGHBORHOOD

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

explore full graph →

RELATIONSHIPS

5 connections
Opcode Generator ← uses 90% 1e
The constraint solver directly applies weights to the generator layer to control opcode distribution.
Synopsys VCS part of → 90% 1e
The constraint solver used is part of Synopsys VCS.
Constrained-Random Stimulus Generation ← uses 90% 1e
Constrained-random stimulus generation relies on a constraint solver to generate valid stimuli.
Hierarchical constrained-random test generation uses a constraint solver to generate solutions.
Synopsys VCS ← implements 1e
Synopsys VCS implements a constraint solver used in the hierarchical test generation.

CITATIONS

9 sources
9 citations — click to expand
[1] SystemVerilog constraints describe possible microcode instruction attribute combinations and allow distribution control, while the VCS constraint solver applies weights to control opcode-type distribution. Generating AMD microcode stimuli using VCS constraint solver
[2] The opcode generator has an upper SystemVerilog random-sequence layer with weighted knobs and a lower opcode class randomized with constraints and weights. Generating AMD microcode stimuli using VCS constraint solver
[3] Serial instruction-field randomization can produce skewed distributions, while a simple constrained-random approach improves distribution but can hit speed and memory limits for complex x86 instruction generation. Generating AMD microcode stimuli using VCS constraint solver
[4] A single-class opcode model is flexible but can be slow because it presents many variables and constraints to the solver; the reported opcode class had about 100 random variables and 800 constraint equations. Generating AMD microcode stimuli using VCS constraint solver
[5] A hierarchical object-oriented structure with global base-class constraints and opcode-group subclasses reduced memory requirements and improved performance. Generating AMD microcode stimuli using VCS constraint solver
[6] Randomizing the opcode category first reduced the solver problem because only category-specific constraints were present; the newer implementation had seven times fewer constraints than the original. Generating AMD microcode stimuli using VCS constraint solver
[7] The BDD solver elaborates the full solution space before choosing a solution, can use substantial memory and time, caches the solution space, and is suitable when memory is acceptable and the same randomize call repeats often. Generating AMD microcode stimuli using VCS constraint solver
[8] VCS constraint profiling reports randomize CPU runtime, partition CPU runtime, and memory data; VCS 2009.12 provided testcase extraction for the slowest partition of each randomize call. Generating AMD microcode stimuli using VCS constraint solver
[9] In the reported comparison, the multiple-class architecture was faster with both RACE and BDD solvers; RACE showed a 4x speedup, BDD showed a 2x speedup, and BDD memory requirements improved significantly. Generating AMD microcode stimuli using VCS constraint solver