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:
- Native constraint solver: handles elementary single-domain constraints.
- BDD-based solvers: handle multi-domain constraints of medium complexity.
- 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.