CRAVE
ToolCRAVE is a constrained-randomization library used by the SystemC port of the UVM library. It provides an integrated interface to BDD and SAT solvers, but the cited DVCon paper reports limitations for complex RISCV-DV constraints, multicore parallelism, and native memory footprint of random variables.
First seen 5/25/2026
Last seen 7/2/2026
Evidence 15 chunks
Wiki v1
WIKI
Overview
CRAVE is described as a library used by the SystemC port of the UVM library for constrained randomization. The same source states that CRAVE provides an integrated interface to a set of Binary Decision Diagram (BDD) and Satisfiability (SAT) solvers. [CRAVE constrained-randomization role; CRAVE solver interface]
Use in SystemC verification
NEIGHBORHOOD
No graph connections found for this entity yet. It may appear in future ingestion runs.
explore full graph →RELATIONSHIPS
26 connectionsCRAVE is experimentally compared to the SCV library in terms of constraint solving performance.
Generator is a class in CRAVE for standalone inline and incremental constraint specification.
CRAVE is evaluated for generating bubble sort inputs as a program input generation scenario.
CRAVE is applied to program input generation for a CPU testbench.
CRAVE is designed for SystemC models as a verification environment.
CRAVE implements stimuli generation via constrained random verification.
CRAVE implements dynamic constraint management, enabling enabling/disabling of constraints at runtime.
CRAVE supports inline constraints that can be formulated and changed at runtime.
The paper introduces CRAVE as an advanced constrained random verification environment for SystemC.
CRAVE supports automatic debugging of unsatisfiable/over-constrained constraints.
CRAVE uses a portfolio approach combining BDD and SMT-based solvers for constraint solving.
CRAVE integrates BDD-based constraint-solving techniques.
CRAVE integrates SAT-based constraint-solving techniques.
CRAVE integrates SMT-based constraint-solving techniques.
CRAVE uses metaSMT for implementing the constraint-solving backend.
CRAVE implements Constrained Random Verification for SystemC models.
rand_vec<T> is a template class in CRAVE for constrained randomization of vectors.
rand_obj is a base class provided by CRAVE for complex constrained random objects.
CRAVE is used to generate stimuli for simulation-based equivalence checking between SystemC models.
CRAVE provides an integrated interface to SAT solvers.
The SystemC port of UVM relies on the CRAVE library for constrained randomization.
CRAVE supports incremental constraint specification via the Generator class.
randv<T> is a core template class provided by CRAVE for random variables.
CRAVE is used to generate stimuli for a five-stage pipeline CPU model.
CRAVE is applied to verify a CISC CPU with 8 registers.
CRAVE provides an integrated interface to BDD solvers.
LINKED ENTITIES
2 linksCITATIONS
7 sources7 citations — click to expand
[1] CRAVE constrained-randomization role [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings
[3] SystemC UVM reliance on CRAVE [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings
[4] CRAVE wrapper-template random variables [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings
[5] Complex RISCV-DV constraint limitation [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings
[6] Multicore parallelism limitation [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings
[7] Native memory-footprint limitation [PDF] Crafting a Million Instructions/Sec RISCV-DV - DVCon Proceedings