Skip to content
STIMSMITH

VCS BDD Solver

Tool

The VCS BDD Solver is a VCS constraint-solver mode described for constrained-random stimulus generation. In this mode, the solver elaborates the entire solution space of a randomize call before selecting a solution, which can improve repeated randomization performance through caching but can require substantial memory. Evidence from an AMD microcode stimulus-generation study indicates that the BDD solver is best suited to constrained-random architectures where the randomize problem fits in memory and the same randomize call is executed many times, such as CPU opcode generation.

First seen 5/25/2026
Last seen 5/25/2026
Evidence 1 chunks
Wiki v1

WIKI

Overview

The VCS BDD Solver is a constraint-solver mode used in VCS constrained-random randomization flows. In BDD mode, the solver elaborates the entire solution space for a randomize call before choosing a solution. This full elaboration can consume large amounts of memory and also requires time up front, but the resulting solution space is cached to accelerate later calls to the same randomization problem. [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 →

CITATIONS

8 sources
8 citations — click to expand
[1] In BDD mode, the solver elaborates the entire solution space of a randomize call before selecting a solution; this can use large amounts of memory and time, and the solution space is cached for subsequent randomization calls. Generating AMD microcode stimuli using VCS constraint solver
[2] VCS constraint-profile outputs described in the evidence include CPU runtime and memory views, and memory profiling is particularly useful for BDD mode because of solution-space elaboration. Generating AMD microcode stimuli using VCS constraint solver
[3] The VCS 2009.12 release provided testcase extraction to automatically extract the slowest partition from each randomize call. Generating AMD microcode stimuli using VCS constraint solver
[4] The performance comparison used profile data to identify randomize results for two opcodes and a small testbench that randomized the opcodes repeatedly to isolate solver CPU time. Generating AMD microcode stimuli using VCS constraint solver
[5] 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
[6] Memory requirements were significantly better with the multiple-class architecture, and memory was measured only for BDD because RACE memory was typically smaller and not limiting. Generating AMD microcode stimuli using VCS constraint solver
[7] The acceleration and memory decrease came mainly from fewer variables and constraints; the new implementation had 7x fewer constraints than the original. Generating AMD microcode stimuli using VCS constraint solver
[8] For x86 opcode generation, serial randomization had distribution problems, simple constrained randomization hit speed and memory limits, and choosing the opcode category first reduced the active constraints and improved memory and speed without sacrificing distribution or test-level control. Generating AMD microcode stimuli using VCS constraint solver