Karem A Sakallah EECS Department University of Michigan João Marques Silva Informatics Department Technical University of Lisbon ISTINESC CEL SAT tutorial 2 Context SAT is the quintessential NPcomplete problem ID: 691544
Download Presentation The PPT/PDF document "SAT tutorial 1 Boolean Satisfiability i..." is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
SAT tutorial
1
Boolean Satisfiability in Electronic Design Automation
Karem A. SakallahEECS DepartmentUniversity of Michigan
João Marques Silva
Informatics Department
Technical University of Lisbon
IST/INESC, CELSlide2
SAT tutorial
2
Context
SAT is the quintessential NP-complete problemTheoretically well-studiedPractical algorithms for large problem instances started emerging in the last five years
Has many applications in EDA and other fields
Can potentially have similar impact on EDA as BDDs
EDA professionals should have good working knowledge of SAT formulations and algorithmsSlide3
SAT tutorial
3
Outline
Boolean Satisfiability (SAT)Basic AlgorithmsRepresentative EDA ApplicationsTaxonomy of Modern SAT Algorithms
Advanced Backtrack Search Techniques
Experimental Evidence
ConclusionsSlide4
SAT tutorial
4
Boolean Satisfiability
Given a suitable representation for a Boolean function f(X
):
Find an assignment
X*
such that
f
(
X*
) = 1
Or prove that such an assignment does not exist
(i.e.
f
(
X
) = 0 for all possible assignments)
In the “classical” SAT problem,
f
(
X
) is represented in product-of-sums (POS) or conjunctive normal form (CNF)
Many decision (yes/no) problems can be formulated either directly or indirectly in terms of Boolean Satisfiability Slide5
SAT tutorial
5
Conjunctive Normal Form (CNF)
Clause
Positive Literal
Negative Literal
j =
(
a
+
c
) (
b
+
c
) (¬
a
+
¬
b
+ ¬
c
)Slide6
SAT tutorial
6
Basics
Implicationx
®
y
=
¬
x + y
=
¬(¬y) + (¬
x
)
= ¬y
®
¬
x
(contra positive)
Assignments: {
a
= 0,
b
= 1} = ¬a b
Partial (some variables still unassigned)Complete (all variables assigned)Conflicting (imply ¬j) j = (a
+ c
)(b + c)(¬a
+ ¬b + ¬c) j ®
(
a
+
c
)
¬(
a
+
c
)
®
¬
j
¬
a
¬
c
®
¬
jSlide7
SAT tutorial
7
General technique for deriving new clauses
Example:
1
=
(¬
a
+
b
+
c
),
2
=
(
a
+
b
+
d
)
Consensus:
con(
1, 2
, a) = (b + c + d)
Complete procedure for satisfiability [Davis, JACM’60]
Impractical for real-world problem instances
Application of restricted forms has been successful!
E.g., always apply
restricted consensus
con((¬
a
+ ), (a + ), a) = () is a disjunction of literals
ConsensusSlide8
SAT tutorial
8
Literal & Clause Classification
j =
(
a
+
¬
b
)(
¬
a
+
b
+
¬
c
)(
a
+ c + d )(
¬a
+ ¬b +
¬c )
a assigned
0
b assigned
1
c and d unassigned
violated
unresolved
satisfied
satisfiedSlide9
SAT tutorial
9
Outline
Boolean Satisfiability (SAT)Basic AlgorithmsRepresentative EDA ApplicationsTaxonomy of Modern SAT Algorithms
Advanced Backtrack Search Techniques
Experimental Evidence
ConclusionsSlide10
SAT tutorial
10
Basic Backtracking Search
(
a
+
b
+
c
)
(
a
+
b
+
¬
c
)
(
¬
a
+
b
+
¬
c
)
(
a
+
c
+
d
)
(
¬
a + c + d)
(
¬
a
+
c
+
¬
d
)
(
¬
b
+
¬
c
+
¬
d
)
(
¬
b
+
¬c
+ d)
1
2
3
4
5
6
7
8
a
(
a
+
b
+
c
)
(
a
+
b
+
¬
c
)
(
¬
a
+
b
+
¬
c
)
(
a
+
c
+
d
)
(
¬
a
+
c
+
d
)
(
¬
a
+
c
+
¬
d
)
(
¬
b
+
¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
b
c
d
d
b
c
d
d
c
d
(
¬
b
+
¬
c
+
¬
d
)
(
a
+
b
+
c
)
(
a
+
b
+
¬
c
)
(
¬
a
+
b
+
¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)
(
¬
b + ¬c + ¬d)
(a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬
b + ¬c + d)Slide11
SAT tutorial
11
An unresolved clause is
unit
if it has exactly one unassigned literal
j
= (
a
+
c
)(
b
+
c
)(
¬a
+
¬b
+
¬
c)
A unit clause has exactly one option for being satisfied
a b ® ¬c
i.e.
c
must be set to 0.
Unit Clause Rule - ImplicationsSlide12
SAT tutorial
12
Basic Search with Implications
1
2
3
4
5
6
7
8
(
a
+
b
+
c
)
(
a
+
b
+
¬
c
)
(
¬
a
+
b
+
¬
c
)
(
a
+
c
+
d
)
(
¬
a
+
c
+
d
)
(
¬
a
+
c
+
¬
d
)
(
¬
b
+
¬
c
+
¬
d
)
(
¬
b
+ ¬
c + d)
a
(
a
+
b
+
c
)
(
a
+
b
+
¬
c
)
(
¬
a
+
b
+
¬
c
)
(
a
+
c
+
d
)
(
¬
a
+
c
+
d
)
(
¬
a
+ c + ¬
d)
(¬b + ¬c + ¬
d)
(¬b + ¬c +
d)
b
(
a
+ b + c)
(a
+ b + ¬c)
(¬
a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬
b + ¬c + d)
c
(
a
+ b + c)
(a +
b + ¬c)
(¬
a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(¬
a + c + ¬d)
(
¬b
+ ¬c + ¬d)
(
¬b + ¬c + d)
d
7
7
b
c
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a
+ c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d
)
(¬b + ¬c +
d)
8
8
8
(
a
+
b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+
b + c)
(a
+ b + ¬c)
(¬a
+ b + ¬c)
(
a + c + d)
(¬
a + c + d)
(¬a
+ c + ¬d)
(¬b
+ ¬c + ¬d)
(
¬b
+ ¬c + d)
(
a + b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬
b + ¬c + d)
d
5
5
a
c
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬
a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
6
6
6
(
a
+
b + c)
(a
+
b + ¬c)
(¬a
+ b + ¬c)
(a
+ c + d)
(¬a
+ c + d)
(¬a
+ c + ¬d)
(¬
b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+ b
+ c
)(a
+ b + ¬
c)(¬a
+ b +
¬c)(a
+ c + d
)(¬a
+ c +
d)(¬a
+ c +
¬d)(¬b
+ ¬c +
¬d)(¬b +
¬c + d
)(a
+ b + c
)
(a + b
+ ¬c)
(¬a +
b + ¬c
)(a + c
+ d)
(¬a +
c + d)
(¬a +
c + ¬d)
(¬b +
¬c + ¬
d)(¬b +
¬c + d)
c
3
3
a
b
(
a
+ b + c)
(a
+ b + ¬c
)(¬a
+ b + ¬
c)(a
+ c + d)
(¬a + c
+ d)
(¬a + c +
¬d)
(
¬b + ¬c
+ ¬d)
(¬b + ¬
c + d)
5
5
d
(
a
+ b + c)
(a + b
+ ¬c)
(¬a + b +
¬c)
(a + c + d
)
(
¬a + c + d)
(
¬a + c + ¬d
)
(¬b + ¬c + ¬
d)
(¬b + ¬
c + d)
6
6
6
(
a
+ b + c)
(
a
+ b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(¬
a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+
b +
c)(a
+ b + ¬
c)(¬a
+ b + ¬
c)(a + c
+ d)
(¬a + c
+ d)
(¬a + c +
¬d)
(¬b + ¬c +
¬d)
(¬b + ¬c + d
)
(a + b + c
)
(
a + b + ¬c)
(
¬a + b + ¬c
)
(a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d
)
(¬b + ¬c + ¬d)
(
¬b + ¬c + d)
b
(
a +
b +
c)(a
+ b +
¬c)(¬
a + b
+ ¬c)(a
+ c +
d)(¬
a + c
+ d)(¬
a + c
+ ¬d)(¬
b + ¬
c + ¬d)(¬
b + ¬
c + d)c
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c + d)
(
¬a + c + d)
(
¬a + c + ¬d)
(
¬b + ¬c + ¬d)
(
¬b + ¬c + d)
(
a
+
b + c)
(a + b
+ ¬c)(¬
a + b
+ ¬c)
(a +
c + d)(
¬a +
c + d)(¬
a + c
+ ¬d)(¬b
+ ¬c
+ ¬d)(¬
b + ¬
c +
d)(a
+ b + c)
(a
+ b + ¬c)
(¬a
+ b + ¬c)
(a
+ c + d)
(¬a
+ c + d)
(¬a
+ c + ¬d)
(¬b
+ ¬c
+ ¬d)(¬
b + ¬
c +
d)
d4
4
ac
(
a
+ b + c)
(
a + b + ¬c)
(
¬a + b + ¬c)
(
a + c +
d)(¬a
+ c + d
)
(¬a + c +
¬d)(
¬b + ¬
c + ¬d)
(¬b
+ ¬c + d)Slide13
SAT tutorial
13
Pure Literal Rule
A variable is pure if its literals are either all positive or all negative
Satisfiability of a formula is unaffected by assigning pure variables the values that satisfy all the clauses containing them
j
=
(
a
+
c
)(
b
+
c
)(
b
+ ¬
d
)(¬a
+ ¬b +
d
)
Set
c
to 1; if
j
becomes unsatisfiable, then it is also unsatisfiable when
c
is set to 0. Slide14
SAT tutorial
14
Circuit Satisfiability
a
b
c
d
e
g
f
h
?
j
=
h
[
d
=¬(
ab
)] [
e
=¬(
b
+
c
)] [
f
=¬
d
] [
g
=
d
+
e
] [
h
=
fg
]Slide15
SAT tutorial
15
Gate CNF
a
b
d
j
d
= [
d
= ¬(
a b
)]
= ¬[
d
Å
¬(
a b
)]
= ¬[¬(
a b
)¬
d
+
a b d
]
= ¬[¬
a
¬
d
+ ¬
b
¬
d
+
a b d
]
= (
a
+
d
)(
b
+
d
)(¬
a
+
¬
b
+ ¬
d
)
j
d
= [d
= ¬(a b )][¬d = a b]
= [
d = ¬
a + ¬b][¬d = a b
]
= (¬a ®
d)(¬b ® d)(a b ®
¬d
)
= (a +
d)(b + d)(¬a
+ ¬
b + ¬d)Slide16
SAT tutorial
16
Circuit Satisfiability
a
b
c
d
e
g
f
h
?
j
=
h
[
d
=¬(
ab
)] [
e
=¬(
b
+
c
)] [
f
=¬
d
] [
g
=
d
+
e
] [
h
=
fg
]
=
h
(
a
+
d
)(
b
+
d
)(¬
a
+
¬
b
+ ¬
d
)
(¬
b
+
¬
e
)(¬
c
+
¬
e
)(
b
+
c
+
e
)
(¬
d
+
¬
f
)(
d
+
f
)
(¬
d
+
g
)(¬
e
+
g
)(
d
+
e
+ ¬
g
)
(
f
+
¬
h
)(
g
+
¬
h
)(¬
f
+
¬
g
+
h
)
=
h
(
a
+
d
)(
b
+ d)(¬
a + ¬b + ¬d)(
¬b +
¬e)(
¬c + ¬e)(b + c +
e)
(¬d + ¬f)(d +
f)
(¬d + g)(¬e + g)(d
+ e +
¬g)(f +
¬h)(g +
¬h)(¬f + ¬g + h)
=
h(a +
d)(b +
d)(¬a + ¬b + ¬d)
(¬b
+ ¬e)(¬c + ¬e)(b
+ c + e)
(
¬d + ¬f)(d +
f)
(¬d + g)(¬e +
g)(d +
e + ¬g)(f + ¬
h)(g +
¬h)(¬f + ¬g + h)
a
b
c
d
e
g
f
h
?
=
h
(
a
+
d
)(
b
+
d
)(
¬
a
+
¬
b
+
¬
d
)
(
¬
b
+
¬
e
)(
¬
c + ¬
e)(b + c + e)(
¬d +
¬f)(d + f)(¬d
+ g)(¬
e + g)(d + e + ¬g
)
(f + ¬h)(g + ¬h)(
¬f +
¬g + h)
a
b
c
d
e
g
f
h
?
=
h
(
a
+
d
)(
b
+
d
)(
¬
a
+
¬
b
+
¬
d
)
(
¬
b
+
¬
e
)(
¬c + ¬e)(b + c + e
)
(¬d + ¬f)(d + f
)
(¬d + g)(¬e + g)(
d + e +
¬g)(f + ¬h)(
g + ¬h
)(¬f + ¬g + h)
a
b
c
d
e
g
f
h
?
a
b
c
d
e
g
f
h
Slide17
SAT tutorial
17
Outline
Boolean Satisfiability (SAT)Basic AlgorithmsRepresentative EDA ApplicationsTaxonomy of Modern SAT Algorithms
Advanced Backtrack Search Techniques
Experimental Evidence
ConclusionsSlide18
SAT tutorial
18
x
4
x
1
x
2
x
3
x
5
x
6
x
7
x
8
x
9
ATPG
x
4
x
1
x
2
x
3
x
5
x
6
x
7
x
8
x
9
= 0
C
G
= 1
C
F
x
4
x
1
x
3
x
5
x
6
x
7
x
8
x
9
x
1
x
2
x
3
x
4
x
5
x
6
x
7
x
8
x
9
s-a-1
z
= 1
?Slide19
SAT tutorial
19
Equivalence Checking
If
z
= 1
is unsatisfiable, the
two circuits are equivalent
!
C
B
C
A
z
= 1
?Slide20
SAT tutorial
20
Outline
Boolean Satisfiability (SAT)Basic AlgorithmsRepresentative EDA Applications
Taxonomy of Modern SAT Algorithms
Advanced Backtrack Search Techniques
Experimental Evidence
ConclusionsSlide21
SAT tutorial
21
A Taxonomy of SAT Algorithms
Backtrack search (DP)
Resolution (original DP)
Stallmarck’s method (SM)
Recursive learning (RL)
BDDs
...
Local search (hill climbing)
Continuous formulations
Genetic algorithms
Simulated annealing
...
Tabu search
SAT Algorithms
Complete
Incomplete
Can
prove unsatisfiability
Cannot
prove unsatisfiabilitySlide22
SAT tutorial
22
Resolution (original DP)
Iteratively apply resolution (consensus) to eliminate one variable each time
i.e., consensus between all pairs of clauses containing
x
and ¬
x
formula satisfiability is
preserved
Stop applying resolution when,
Either empty clause is derived
instance is
unsatisfiable
Or only clauses satisfied or with pure literals are obtained
instance is
satisfiable
j
= (
a
+
c
)(
b
+ c
)(d + c)(¬a + ¬
b + ¬c)Eliminate variable
c
1
= (
a
+ ¬
a
+ ¬b)(b + ¬a + ¬b )(d + ¬a + ¬b ) = (d + ¬a + ¬b )Instance is SAT !Slide23
SAT tutorial
23
Stallmarck’s Method (SM) in CNF
Recursive application of the branch-merge rule
to each variable with the goal of identifying
common conclusions
Try
a
= 0:
(
a
= 0)
(
b
= 1)
(
d
= 1)
Try
a
= 1:
(
a
= 1)
(
c = 1) (d = 1)
C(
a
= 0)
=
{
a
= 0,
b = 1, d = 1}C(a = 1) = {a = 1, c = 1, d = 1}C(a = 0) C(a = 1) = {d = 1}Any assignment to variable a implies d = 1.
Hence,
d
= 1 is a
necessary
assignment
!
Recursion can be of arbitrary depth
j
= (
a
+
b
)(
¬
a
+
c
) (¬
b
+ d)(¬c +
d)
j = (a + b)(¬
a + c) (¬
b +
d)(¬c + d)
j = (a
+ b)(¬
a + c) (¬b + d)(¬c
+ d)
j = (
a +
b)(¬a + c
) (¬b + d)(¬c
+
d)Slide24
SAT tutorial
24
Recursion can be of arbitrary depth
Recursive Learning (RL) in CNF
Recursive evaluation of
clause satisfiability
requirements for identifying
common assignments
Try
a
= 1:
=
(
a
+
b
)
(¬
a
+
d
) (¬
b
+
d
)
(
a
= 1)
(
d
= 1)
Try
b
= 1:(b = 1) (d = 1)C(a = 1) = {a = 1, d = 1}C(b
= 1)
=
{
b
= 1,
d
= 1}
C(
a
= 1)
C(
b
= 1)
=
{
d
= 1}
Every way of satisfying (
a + b) implies d
= 1. Hence, d = 1 is a necessary assignment !
= (a + b)(
¬a + d) (¬b + d)
= (a +
b)(¬a + d) (¬b +
d)
= (a
+ b)(¬a + d) (
¬b + d)Slide25
SAT tutorial
25
SM vs. RL
Both complete procedures for SATStallmarck’s method:
hypothetic reasoning based on
variables
Recursive learning:
hypothetic reasoning based on
clauses
Both can be integrated into backtrack search algorithmsSlide26
SAT tutorial
26
Local Search
Repeat M times:Randomly pick complete assignment
Repeat
K
times (and while exist unsatisfied clauses):
Flip variable that will satisfy largest number of unsat clauses
j
= (
a
+
b
)(¬
a
+
c
) (¬
b
+
d
)(¬
c
+
d
)
Pick random assignment
j
= (a + b)(¬a
+
c
) (
¬
b
+ d)(¬c + d)Flip assignment on dj = (a + b)(¬a + c) (¬b + d)(¬
c
+
d
)
Instance is satisfied
!Slide27
SAT tutorial
27
Comparison
Local search is incomplete
If instances are known to be SAT, local search can be competitive
Resolution is in general
impractical
Stallmarck’s Method (SM) and Recursive Learning (RL) are in general
slow
, though
robust
SM and RL can derive too much
unnecessary
information
For most EDA applications
backtrack search
(DP)
is currently the most promising approach
!
Augmented with techniques for inferring new
clauses/implicates
(i.e.
learning
) !Slide28
SAT tutorial
28
Outline
Boolean Satisfiability (SAT)Basic AlgorithmsRepresentative EDA ApplicationsTaxonomy of Modern SAT Algorithms
Advanced Backtrack Search Techniques
Experimental Evidence
ConclusionsSlide29
SAT tutorial
29
Techniques for Backtrack Search
Conflict analysis
Clause/implicate recording
Non-chronological backtracking
Incorporate and
extend
ideas from:
Resolution
Recursive learning
Stallmarck’s method
Formula simplification & Clause inference [Li,AAAI00]
Randomization & Restarts [Gomes&Selman,AAAI98]Slide30
SAT tutorial
30
=
(a + b
)(¬
b
+
c + d
) (¬
b
+
e
)(¬
d
+ ¬
e +
f
)
=
(
a
+
b
)(¬b + c + d) (¬b +
e)(¬d + ¬
e + f)
= (a
+
b
)(¬
b
+
c
+ d
) (¬b + e)(¬d + ¬e + f) = (a + b)(¬b + c + d) (¬b + e)(¬d + ¬e + f)
=
(
a
+
b
)(
¬
b
+
c
+
d
) (
¬
b
+ e
)(¬
d + ¬e + f
)
Clause RecordingDuring backtrack search, for each conflict
create clause that explains and prevents recurrence of same conflict
Assume (decisions) c = 0 and f = 0
Assign
a = 0 and imply assignments
A conflict is reached: (¬
d + ¬e + f
) is unsat
(a = 0)
(c = 0) (
f = 0) ( = 0)
( = 1)
(a = 1)
(c = 1) (f = 1)
create new clause:
(
a
+
c
+
f
)Slide31
SAT tutorial
31
Clause Recording
Clauses derived from conflicts can also be viewed as the result of applying selective consensus
=
(
a
+
b
)(¬
b
+
c
+ d
) (¬
b
+
e
)(¬
d
+ ¬
e +
f
)
(
a + c +
d)consensus
(
a
+
c
+ ¬
e +
f)
(
a
+
c
+
f
)
(
a
+
e
)Slide32
SAT tutorial
32
Non-Chronological Backtracking
During backtrack search, in the presence of conflicts,
backtrack to one of the
causes
of the conflict
=
(
a
+
b
)(¬
b
+
c + d
) (¬
b
+
e
)(¬
d
+ ¬
e +
f) (a
+ c
+ f)(¬a
+ g)(¬g + b)(¬h + j)(¬i
+
k
)
Assume (decisions)
c
= 0,
f = 0, h = 0 and i = 0 Assignment a = 0 caused conflict clause (a + c + f) created (a + c + f) implies a = 1
=
(
a
+
b
)(¬
b
+
c
+ d
) (¬
b
+
e
)(¬
d
+ ¬e + f) (a + c
+ f)(
¬a + g)(¬g +
b)(¬h +
j)(¬i +
k)
= (a + b)(¬
b + c + d) (¬b +
e)(¬d + ¬
e + f) (a +
c + f)(¬a
+ g)(
¬g + b)(¬
h + j)(¬i
+ k)
= (
a + b)(¬b
+ c
+ d) (¬b
+
e
)
(¬
d
+ ¬
e +
f
)
(
a
+
c
+
f
)(
¬
a
+
g
)(
¬
g
+
b
)(
¬
h
+
j
)(
¬
i
+
k
)
A conflict is again reached: (¬d + ¬e + f) is unsat
(
a = 1) (c = 0) (f = 0) ( = 0)
( = 1) (a = 0) (
c = 1) (f = 1)
create new clause: (¬a + c + f)Slide33
SAT tutorial
33
Non-Chronological Backtracking
C
reated clauses: (
a
+
c
+
f
) and (¬
a
+
c
+
f
)
backtrack to most recent decision:
f
= 0
(
c
+
f
)
created clauses/implicates:
(
a
+
c
+
f
)
, (¬a + c + f),
and
(
c
+
f
)
Apply consensus:
new
unsat
clause
(
c
+
f
)
0
0
c
f
i
h
0
0
a
0
1Slide34
SAT tutorial
34
Ideas from other Approaches
Resolution, Stallmarck’s method and recursive learning can be incorporated into backtrack search (DP)
create additional clauses/implicates
anticipate and prevent conflicting conditions
identify necessary assignments
allow for non-chronological backtracking
(
b
+
c
+
d
)
consensus
(
b
+
c
+
d
) Unit clause
!
(¬
a
+
b
+
d
)
(
a
+
b
+
c)Resolution within DP:
Clause provides
explanation
for necessary assignment
b
= 1Slide35
SAT tutorial
35
=
(
a
+
b +
e
)(¬
a
+
c +
f
)(¬
b
+
d
) (¬
c
+
d +
g
)
Implications:
(
a
= 0)
(
e
= 0)
(
b
= 1)
(d = 1) = (a + b + e)(¬a + c + f)(¬b + d) (¬c + d + g)
(
a
= 1)
(
f
= 0)
(
c
= 1)
(
c
= 1)
(
g
= 0) (d
= 1)
= (
a + b + e)(
¬a + c +
f)(¬b + d) (
¬c + d + g)
=
(
a + b + e)(¬a +
c + f)(¬b + d) (¬c
+ d + g
)
(e = 0) (
f = 0)
(
g = 0) (d
= 1)Stallmarck’s Method within DP
Clausal form:
(
e
+
f
+
g
+
d
)
Unit clause
!
Clause provides
explanation
for necessary assignment
d
= 1
(
d
+
e
+
c
+
f
)
(
b
+
e
+
c
+
f
)
consensus
(
e
+
f
+
g
+
d
)Slide36
SAT tutorial
36
Implications:
=
(
a
+
b +
c
)(¬
a
+
d +
e
) (¬
b
+
d +
c
)
(
a
= 1)
(
e
= 0)
(d = 1)
=
(
a
+
b +
c
)(¬a + d + e) (¬b + d + c)(b = 1) (c = 0) (d = 1)
=
(
a
+
b
+
c
)(¬
a
+
d +
e
) (
¬
b
+
d + c)
Recursive Learning within DP
Clause provides explanation
for necessary assignment d = 1
(
c
+
e + d)
consensus
(
b
+ c +
e + d)
consensus
=
(
a
+
b +
c)(¬a + d + e
) (¬
b
+
d +
c
)
(
c
= 0)
((
e
= 0)
(
c
= 0))
(
d
= 1)
Clausal form:
(
c
+
e
+
d
)
Unit clause
!Slide37
SAT tutorial
37
Formula Simplification
Eliminate clauses and
variables
If
(
x
+
y
)
and
(
x
+
y
)
exist, then
x
and
y
are
equivalent,
(
x
y)
eliminate y, and replace by x remove satisfied clauses
Utilize
2CNF
sub-formula for identifying equivalent variables
(¬
a
+
b
)(¬b + c)(¬c + d)(¬d + b)(¬d + a)a, b, c and d are pairwise equivalentImplication graph:
a
d
b
cSlide38
SAT tutorial
38
Clause Inference Conditions
Given
(
l
1
+ ¬
l
2
)(
l
1
+ ¬
l
3
)(
l
2
+
l
3
+
¬
l
4
)
Infer
(l1 + ¬l4)
Type of Inference
: 2 Binary / 1 Ternary
(2B/1T)
Clauses
Other types
: 1B/1T, 1B/2T, 3B/1T, 2B/1T, 0B/4T
(
l1 + l3 + ¬ l
4
)
consensus
(
l
1
+ ¬
l
4
)
consensus
If we can also infer
(¬
l
1
+
l
4
)
,
then we prove
(
l
1
l
4
), and
can replace l4 by l1 !Slide39
SAT tutorial
39
The Power of Consensus
Most search pruning techniques can be explained as particular ways of applying selective consensusConflict-based clause recording
Non-chronological backtracking
Extending Stallmarck’s method to backtrack search
Extending recursive learning to backtrack search
Clause inference conditions
General consensus is computationally too expensive
!
Most techniques indirectly identify which consensus operations to apply
!
To create new clauses/implicates
To identify necessary assignmentsSlide40
SAT tutorial
40
Randomization & Restarts
Run times of backtrack search SAT solvers characterized by heavy-tail distributions
For a fixed problem instance, run times can exhibit
large variations
with different branching heuristics and/or branching randomization
Search strategy:
Rapid Randomized Restarts
Randomize variable selection heuristic
Utilize a small backtrack cutoff value
Repeatedly restart the search each time backtrack cutoff reached
Use randomization to explore different paths in search treeSlide41
SAT tutorial
41
Randomization & Restarts
Can make the search strategy complete
Increase cutoff value after each restart
Can utilize
learning
Useful for proving unsatisfiability
Can utilize
portfolios
of algorithms and/or algorithm configurations
Also useful for proving unsatisfiabilitySlide42
SAT tutorial
42
Outline
Boolean Satisfiability (SAT)Basic AlgorithmsRepresentative EDA ApplicationsTaxonomy of Modern SAT Algorithms
Advanced Backtrack Search Techniques
Experimental Evidence
ConclusionsSlide43
SAT tutorial
43
Conclusions
Many recent SAT algorithms and (EDA) applicationsHard Applications
Bounded Model Checking
Combinational Equivalence Checking
Superscalar processor verification
FPGA routing
“Easy”
Applications
Test Pattern Generation: Stuck-at, Delay faults, etc.
Redundancy Removal
Circuit Delay Computation
Other Applications
Noise analysis, etc.Slide44
SAT tutorial
44
Conclusions
Complete vs. Incomplete algorithmsBacktrack search (DP)
Resolution (original DP)
Stallmarck’s method
Recursive learning
Local search
Techniques for backtrack search (infer
implicates
)
conflict-induced clause recording
non-chronological backtracking
resolution, SM and RL within backtrack search
formula simplification & clause inference conditions
randomization & restartsSlide45
SAT tutorial
45
More Information on SAT in EDA
http://algos.inesc.pt/grasp
http://algos.inesc.pt/sat
http://algos.inesc.pt/~jpms (
jpms@inesc.pt
)
http://andante.eecs.umich.edu/grasp_public
http://nexus6.cs.ucla.edu/GSRC/bookshelf/Slots/SAT/GRASP
http://eecs.umich.edu/~karem (
karem@umich.edu
)