Skip to content
STIMSMITH

BDD-based Constraint Solving

Technique WIKI v1 · 5/26/2026

BDD-based constraint solving is presented in the evidence as a middle tier for constrained random verification: eUVM uses BDD-based solvers for multi-domain constraints of medium complexity, while simpler single-domain constraints are handled by a native solver and more convoluted constraints are delegated to SMT/SAT solvers. The evidence also contrasts this with PyVSC, which is described as relying entirely on SAT solvers and not deploying a BDD solver for multi-variable constraints.

Overview

BDD-based Constraint Solving refers here to the use of Binary Decision Diagram (BDD) solvers as part of constrained-random verification flows. In the cited DVCon paper, BDD-based solvers are positioned as suitable for multi-domain constraints of medium complexity within eUVM's constraint-processing architecture. eUVM uses a native solver for elementary single-domain constraints, BDD-based solvers for medium-complexity multi-domain constraints, and SMT/SAT solvers for constraints that cannot be handled by BDDs.

Role in eUVM

In eUVM, BDD-based solvers are one tier in a multi-solver strategy:

  1. Native constraint solver: handles elementary single-domain constraints.
  2. BDD-based solvers: handle multi-domain constraints of medium complexity.
  3. SMT/SAT solvers: handle convoluted constraints that cannot be handled by BDDs, with the paper naming Z3, Boolector, and CMSGen as examples.

The same source states that eUVM uses D-language metaprogramming capabilities such as User-Defined Attributes, Compile-Time Function Evaluation, code introspection, and generative programming to implement a high-performance constraint processor. Compile-time parsing and analysis of constraints are specifically attributed to code introspection and CTFE.

Comparison with SAT-only solving in PyVSC

The paper contrasts BDD-based solving with PyVSC's approach. PyVSC is described as not deploying a BDD solver and instead relying completely on SAT solvers for multi-variable constraints. The authors state that, consequently, PyVSC's generated solutions tend to have a non-uniform spread compared with SystemVerilog and eUVM.

Use in CRAVE

The CRAVE library is described as providing an integrated interface to a set of BDD and SAT solvers for constrained randomization in the SystemC UVM context. However, the paper also states that CRAVE could not, at the time, handle complex RISCV-DV constraints.

Practical boundary

The evidence does not present BDD-based constraint solving as a universal replacement for SMT/SAT solving. Instead, it describes a boundary: BDD-based solvers are used for medium-complexity multi-domain constraints, while constraints that cannot be handled by BDD are delegated to SMT/SAT solvers.

LINKED ENTITIES

1 links

CITATIONS

6 sources
6 citations
[1] eUVM uses BDD-based solvers for multi-domain constraints of medium complexity, while using a native solver for elementary single-domain constraints and SMT/SAT solvers for constraints that BDD cannot handle. [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings
[2] eUVM delegates convoluted constraints that cannot be handled by BDD to SMT/SAT solvers including Z3, Boolector, and CMSGen. [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings
[3] eUVM uses D-language metaprogramming capabilities, including UDAs, CTFE, code introspection, and generative programming, to realize a high-performance constraint processor. [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings
[4] PyVSC does not deploy a BDD solver and relies completely on SAT solvers for multi-variable constraints. [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings
[5] The cited paper attributes PyVSC's comparatively non-uniform solution spread to its SAT-only approach for multi-variable constraints. [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings
[6] CRAVE provides an integrated interface to a set of BDD and SAT solvers, but the paper states that it could not handle complex RISCV-DV constraints at the time. [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings