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 9/27/2026
Evidence 16 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
36 connectionsThe syntax of CRAVE is designed to fit with SystemC, implying integration and use alongside SystemC models.
CRAVE is experimentally compared to the SCV library in terms of constraint solving performance.
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.
The text states BDD-based techniques have been integrated into CRAVE’s solver portfolio, indicating use of this technique.
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_obj is a base class provided by CRAVE for complex constrained random objects.
rand_vec<T> is a template class in CRAVE for constrained randomization of vectors.
CRAVE is evaluated for generating bubble sort inputs as a program input generation scenario.
Generator is a class in CRAVE for standalone inline and incremental constraint specification.
CRAVE is applied to program input generation for a CPU testbench.
The text points to the Accellera GitHub location for CRAVE, implying the repository hosts the CRAVE codebase.
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 is used to generate stimuli for simulation-based equivalence checking between SystemC models.
The project describes CRAVE as a library specifically for constrained random stimuli generation, indicating it implements this technique.
A new API for specifying random variables/objects is presented as a feature of CRAVE, indicating it is a component of the tool.
CRAVE allows run-time control of constraints, which corresponds to implementing dynamic constraints.
The feature list states inline constraints can be formulated and changed at run-time, indicating implementation within CRAVE.
Parallel constraint solving is listed as a feature of CRAVE, implying the tool implements this technique.
SAT/SMT-based techniques are integrated in CRAVE’s constraint solving, showing use of these methods.
CRAVE employs a portfolio of techniques to speed up constraint solution generation, indicating use of a portfolio approach.
The passage credits VWG with further development of CRAVE, indicating authorship/maintainership by this organization.
CRAVE is hosted on the official Accellera GitHub, indicating publication under the Accellera Systems Initiative umbrella.
CRAVE provides an integrated interface to SAT 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