Presentation is loading. Please wait.

Presentation is loading. Please wait.

ECE 667 Synthesis & Verification - SAT 1 ECE 667 ECE 667 Synthesis and Verification of Digital Systems Boolean SAT CNF Representation Slides adopted (with.

Similar presentations


Presentation on theme: "ECE 667 Synthesis & Verification - SAT 1 ECE 667 ECE 667 Synthesis and Verification of Digital Systems Boolean SAT CNF Representation Slides adopted (with."— Presentation transcript:

1 ECE 667 Synthesis & Verification - SAT 1 ECE 667 ECE 667 Synthesis and Verification of Digital Systems Boolean SAT CNF Representation Slides adopted (with permission) from A. Kuehlmann, UC Berkeley 2003

2 ECE 667 Synthesis & Verification - SAT 2 Boolean Satisfiability (SAT) The problem of deciding if there is a truth assignment under which a given propositional formula evaluates to true. 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) Example: (¬x 1 ˅ x 2 ˅ ¬x 3 ) ˄ (¬x 2 ) ˄ (x 1 ) (x 1,x 2,x 3 ) = (1,0,0)

3 ECE 667 Synthesis & Verification - SAT Boolean Satisfiability (SAT) Boolean Variable: x = {0,1} Complement (Negation): ¬x Literals: and Disjunction (OR): ( x ˅ y) ( x + y) Conjunction (AND): (x ˄ y) (xy) Clause: a disjunction of literals Conjunctive Normal Form (CNF): A conjunction of clauses Example: (¬x 1 ˅ x 2 ˅ ¬x 3 ) ˄ (¬x 2 ) ˄ (x 1 ) 3

4 ECE 667 Synthesis & Verification - SAT 4 Conjunctive Normal Form (CNF) Clause Positive Literal Negative Literal  ( a +  c ) ( b +  c ) (¬a +  ¬b + ¬c )

5 ECE 667 Synthesis & Verification - SAT 5 CNF Formulas Product of Sum (POS) representation of Boolean function Describes solution using a set of constraints –very handy in many applications because new constraints can just be added to the list of existing constraints Example:  = ( a+^b+ c) (^a+ b+ c) ( a+^b+^c) ( a+ b+ c)

6 ECE 667 Synthesis & Verification - SAT 6 CNF Basics Implication x  y = ¬x + y = ¬(¬y) + (¬x) = ¬y  ¬x Assignments: {a = 0, b = 1} = ¬a b –Partial (some variables still unassigned) –Complete (all variables assigned)

7 ECE 667 Synthesis & Verification - SAT Conversion of gate to CNF AND gate z = x.y z ↔ x.y (z → x.y).(x.y → z) (¬z ˅ (x ˄ y)) ˄ (¬(x ˄ y) ˅ z) CNF = (¬z ˅ x) ˄ (¬z ˅ y) ˄ (¬x ˅ ¬y ˅ z) 7 x y z

8 ECE 667 Synthesis & Verification - SAT Conversion of gate to CNF AND gate (z = x.y) 8 xyzz=xy 0001 0010 0101 0110 1001 1010 1100 1111 xy z 00011110 01101 10010 CNF: (¬z ˅ x) ˄ (¬z ˅ y) ˄ (¬x ˅ ¬y ˅ z)

9 ECE 667 Synthesis & Verification - SAT Conversion of circuit to CNF 9

10 ECE 667 Synthesis & Verification - SAT 10 Circuit versus CNF Naive conversion of circuit to CNF: –multiply out expressions of circuit until two level structure –Example: y = x 1  x 2  x 2 ...  x n (Parity function) circuit size is linear in the number of variables  generated chess-board Karnaugh map CNF (or DNF) formula has 2 n-1 terms (exponential in the # vars) Better approach: –introduce one variable per circuit vertex –formulate the circuit as a conjunction of constraints imposed on the vertex values by the gates –uses more variables but size of formula is linear in the size of the circuit

11 ECE 667 Synthesis & Verification - SAT 11 Example 1 6 25 8 7 3 4 9 0 b a c (^a+^b+ c)(a+^c)(b+^c) (^1+2+4)(1+^4)(^2+^4) (^2+^3+5)(2+^5)(3+^5) (2+^3+6)(^2+^6)(3+^6) (^4+^5+7)(4+^7)(5+^7) (5+6+8)(^5+^8)(^6+^8) (7+8+9)(^7+^9)(^8+^9) (^9) Justify to “0” Single gate Circuit: network of connected gates

12 ECE 667 Synthesis & Verification - SAT 12 Circuit Satisfiability a b c d e g f h?h?  = 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? = 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? = 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 b c d e g f h

13 ECE 667 Synthesis & Verification - SAT 13 Solving SAT - Basic Case Splitting Algorithm (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 dd b c dd 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) Source: Karem A. Sakallah, Univ. of Michigan

14 ECE 667 Synthesis & Verification - SAT 14 Implications in CNF Implications in a CNF formula are caused by unit clauses –unit clause is a CNF term for which all variables except one are assigned the value of that clause can be implied immediately Example: (a+^b+c) (a=0)(b=1)Þ(c=1)

15 ECE 667 Synthesis & Verification - SAT 15 Solving SAT: Case Splitting 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) d 4 4 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) Source: Karem A. Sakallah, Univ. of Michigan

16 ECE 667 Synthesis & Verification - SAT 16 Implementation Clauses are stored in array Track sensitivity of clauses for changes: –all literals but one assigned -> implication –all literals but two assigned -> clause is sensitive to a change of either literal –all other clauses are insensitive and do not need to be observed Learning: –learned implications are added to the CNF formula as additional clauses limit the size of the clause limit the “lifetime” of a clause, will be removed after some time On finding conflict, don't (just) backtrack Learn new clause to prevent same conflict in future

17 ECE 667 Synthesis & Verification - SAT 17 Solving SAT: Conflict-based Learning 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 b c d 7 7 b c 8 8 8 bc  ¬    (¬b + ¬c) 9 (¬b + ¬c) c 9 b a d 5 5 6 6 6 a¬c  ¬    (¬a + c) 10 b Source: Karem A. Sakallah, Univ. of Michigan (¬b + ¬c + ¬d) (¬b + ¬c + d) c d c 10 3 a b b 9 c 4 d a (¬a + c)

18 ECE 667 Synthesis & Verification - SAT 18 Further Improvements Random restarts: –stop after a given number of backtracks start search again with modified ordering heuristic keep learned structures !!! –very effective for satisfiable formulas but often also effective for unsat formulas Learning of equivalence relations: –(a  b)  (b  a)  (a = b) –very powerful for formal equivalence checking


Download ppt "ECE 667 Synthesis & Verification - SAT 1 ECE 667 ECE 667 Synthesis and Verification of Digital Systems Boolean SAT CNF Representation Slides adopted (with."

Similar presentations


Ads by Google