Skip to content
STIMSMITH

Bit Operators in SCV Constraints

Concept

Bit operators (bitwise and, bitwise or, bitwise not, bit-select, and slice-select) were not supported by the constraint solver in the SystemC Verification (SCV) Library. The Große/Ebendt/Drechsler paper introduces overloading of the relevant operators and new member functions in the scv_expression class so that bit operators can be used when specifying constraints, allowing more compact formulations of complex constraints that otherwise could not be expressed using only arithmetic, relational, and logical operators.

First seen 7/13/2026
Last seen 7/13/2026
Evidence 3 chunks
Wiki v1

WIKI

Bit Operators in SCV Constraints

Background

The SystemC Verification (SCV) Library provides constraint-based randomization for SystemC models. Internally, a constraint is represented by its characteristic function, which is true for all solutions of the constraint, and the characteristic function is stored as a reduced, ordered Binary Decision Diagram (BDD). The BDD package CUDD is used by the SCV library for this representation. Internally, an expression is held in the class scv_expression as an expression tree whose leaf nodes are variables or constants and whose non-terminal nodes are marked with operators. The constraint solver operates on individual bits when solving constraints.

READ FULL ARTICLE →

NEIGHBORHOOD

No graph connections found for this entity yet. It may appear in future ingestion runs.

explore full graph →

RELATIONSHIPS

2 connections
The paper introduces bit operators for SCV constraints as an extension to the library.
scv_expression ← implements 95% 1e
The scv_expression class was extended to support bit operators in SCV constraints.

CITATIONS

6 sources
6 citations — click to expand
[1] The SCV constraint solver originally supported only arithmetic (+, -, *), relational (==, !=, >, >=, <, <=) and logical (!, &&, ||) operators and had no support for bit operators. Improvements for Constraint Solving in the SystemC Verification Library
[2] Five bit operators were added: bitwise and (a() & b()), bitwise or (a() | b()), bitwise not (~a()), bit-select (a()[i] for constant i), and slice-select (a().range(x,y) for constant x and y). Improvements for Constraint Solving in the SystemC Verification Library
[3] Bit operators allow simpler and more compact formulations of complex constraints that otherwise could not be expressed in such a simple and compact way. Improvements for Constraint Solving in the SystemC Verification Library
[4] The bit operators were implemented by overloading the corresponding operators and adding new member functions in the scv_expression class, which holds the expression tree (leaf nodes are variables or constants, non-terminal nodes are marked with operators) and is used for the BDD representation of an SCV expression. Improvements for Constraint Solving in the SystemC Verification Library
[5] The SCV constraint solver operates on individual bits, so each bit operator must be mapped to the corresponding BDD synthesis operation; for example, a bitwise AND is computed by applying the BDD-AND operation to each bit of the two input vectors, with special cases such as differing vector lengths and data types handled explicitly. Improvements for Constraint Solving in the SystemC Verification Library
[6] The paper introduces two main improvements to the SCV library: support for bit operators in constraints, and guaranteeing a uniform distribution of constraint solutions. Improvements for Constraint Solving in the SystemC Verification Library