Constraint Solver Bit-Slice Rewriting for Backtracking Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Constraint solvers face performance issues due to excessive backtracking and high memory usage when assigning random values to satisfy complex constraints, particularly with modulo and bit-slice constraints, leading to inefficient stimulus generation in constrained random simulation methodologies.

Innovation Solution

The system rewrites constraints to reduce backtracking by converting modulo constraints into standard logical and arithmetic operators and introduces auxiliary variables for bit-slice constraints, optimizing the representation of constraints using word-level circuits and binary decision diagrams to improve the efficiency of constraint solvers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the constraint solver directly solves modulo and bit-slice constraints, then the constraints are satisfied, but excessive backtracking and high memory usage occur

Engineering Contradiction:
Improveconstraint satisfactionVSAvoidsolver performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The constraint solver segments modulo constraints into multiple bit-slice constraints by breaking down the modulo operation into individual bit comparisons. This segmentation transforms a single complex constraint into multiple simpler constraints that can be processed more efficiently, reducing backtracking while maintaining constraint satisfaction.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary representation layer between the original constraints and the solver engine. By converting modulo constraints into equivalent bit-slice constraints through an intermediate transformation process, the solver can work with a reformulated constraint set that reduces memory usage and backtracking without sacrificing correctness.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If the constraint solver uses detailed constraint representations, then constraint accuracy is maintained, but memory usage increases

Engineering Contradiction:
Improveconstraint accuracyVSAvoidmemory usage
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent extracts the essential logical structure of modulo constraints and separates it from the full detailed representation. By taking out only the critical bit-level relationships needed for satisfaction and representing them as simplified bit-slice constraints, memory usage is reduced while maintaining the accuracy needed for correct constraint solving.

Inventive Principle:
Principle #2Taking out (Extraction)

3Reliability

If the constraint solver processes complex constraints directly, then complete constraint logic is preserved, but backtracking increases

Engineering Contradiction:
Improveconstraint logic completenessVSAvoidbacktracking overhead
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

By segmenting complex modulo constraints into multiple bit-slice constraints, the solver can process each bit level independently and systematically. This segmentation preserves the complete constraint logic through systematic bit-level analysis while reducing backtracking because each segment can be solved more directly without requiring extensive backtracking through the entire constraint structure.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS10372856B2Optimizing constraint solving by rewriting at least one bit-slice constraint
Publication Date: 2019.08.06 SYNOPSYS INC
  • US10372856B2 patent drawing
  • US10372856B2 patent drawing
  • US10372856B2 patent drawing

AI summary

Methods and apparatuses are described for assigning random values to a set of random variables so that the assigned random values satisfy a set of constraints. A constraint solver can receive a set of constraints that is expected to cause performance problems when the system assigns random values to the set of random variables in a manner that satisfies the set of constraints. For example, modulo constraints and bit-slice constraints can cause the system to perform excessive backtracking when the system attempts to assign random values to the set of random variables in a manner that satisfies the set of constraints. The system can rewrite the set of constraints to obtain a new set of constraints that is expected to reduce and/or avoid the performance problems. The system can then assign random values to the set of random variables based on the new set of constraints.