Skip to content
STIMSMITH

BDD Solver

Tool

The BDD Solver is described in VCS constrained-random verification context as a solver mode that elaborates the entire solution space for a randomize call before choosing a solution. This behavior can consume significant memory and time up front, but the computed solution space is cached, making the solver effective for architectures where the same randomize call is repeated many times and memory use remains manageable.

First seen 5/26/2026
Last seen 6/4/2026
Evidence 1 chunks
Wiki v1

WIKI

Overview

The BDD Solver is a constraint-solving mode discussed in the context of VCS constrained-random stimulus generation for AMD microcode. In this mode, the solver elaborates the entire solution space of a randomize call before selecting a solution. This can require large amounts of memory and some elaboration time, but the elaborated solution space is cached to speed up later randomization calls. [C1]

Operating model

READ FULL ARTICLE →

NEIGHBORHOOD

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

explore full graph →

RELATIONSHIPS

8 connections
Synopsys VCS part of → 90% 1e
The BDD solver is a constraint solver available within Synopsys VCS.
Constraint Solver Solution Space uses → 95% 1e
The BDD solver elaborates the entire solution space before selecting a solution.
CPU Opcode Generation ← uses 90% 1e
The BDD solver works well for CPU opcode generation when the same randomize call occurs many times.
Multi-Class Randomization ← uses 90% 1e
Multi-class architecture performance was measured using the BDD solver.
Single-Class Randomization ← uses 90% 1e
Single-class architecture performance was measured using the BDD solver.
BDD Solution Space Elaboration implements → 97% 1e
The BDD solver elaborates the entire solution space before selecting a solution.
CPU Opcode Generation evaluates → 88% 1e
The BDD solver works well for CPU opcode generation where the same randomize call occurs many times.
Synopsys VCS Constraint Solver part of → 85% 1e
The BDD solver is one of the solvers available within VCS.

CITATIONS

8 sources
8 citations — click to expand
[1] The BDD Solver elaborates the entire solution space of a randomize call before selecting a solution, which can require significant memory and time, and the solution space is cached for later calls. Generating AMD microcode stimuli using VCS constraint solver
[2] The BDD Solver works well for specific architectures when the randomization problem does not take excessive memory and the same randomize call occurs many times, such as CPU opcode generation. Generating AMD microcode stimuli using VCS constraint solver
[3] In the reported runtime comparison, the multiple-class architecture was faster with both solvers; RACE showed a 4x speedup and the BDD Solver showed a 2x speedup. Generating AMD microcode stimuli using VCS constraint solver
[4] Memory requirements were significantly better with the multiple-class architecture, and memory was measured for the BDD Solver only because RACE memory consumption was typically smaller and not a limiting factor. Generating AMD microcode stimuli using VCS constraint solver
[5] VCS constraint-profile data included cumulative randomize CPU runtime, individual randomize CPU runtime, individual partition CPU runtime, and memory data; this profiling is useful for BDD Solver analysis. Generating AMD microcode stimuli using VCS constraint solver
[6] VCS 2009.12 provided a testcase extraction feature to automatically extract the slowest partition from each randomize call. Generating AMD microcode stimuli using VCS constraint solver
[7] The performance improvement was attributed to a smaller set of variables and constraints; the newer implementation had 7x fewer constraints than the original. Generating AMD microcode stimuli using VCS constraint solver
[8] For x86 opcode generation, selecting an opcode category before randomizing simplified the constraint problem and improved speed and memory without sacrificing distribution or test-level control. Generating AMD microcode stimuli using VCS constraint solver