ECE 667 Synthesis and Verification of Digital Circuits

Slides:



Advertisements
Similar presentations
Automated Theorem Proving
Advertisements

Boolean Satisfiability
Chaff: Engineering an Efficient SAT Solver Matthew W.Moskewicz, Concor F. Madigan, Ying Zhao, Lintao Zhang, Sharad Malik Princeton University Modified.
Presented by Monissa Mohan 1.  A highly optimized BCP algorithm  Two watched literals  Fast Backtracking  Efficient Decision Heuristic  Focused on.
Introduction to MiniSat v1.14 Presented by Yunho Kim Provable Software Lab, KAIST.
UIUC CS 497: Section EA Lecture #2 Reasoning in Artificial Intelligence Professor: Eyal Amir Spring Semester 2004.
Proofs from SAT Solvers Yeting Ge ACSys NYU Nov
Methods of Proof Chapter 7, second half.. Proof methods Proof methods divide into (roughly) two kinds: Application of inference rules: Legitimate (sound)
Effective Propositional Reasoning CSE 473 – Autumn 2003.
1/30 SAT Solver Changki PSWLAB SAT Solver Daniel Kroening, Ofer Strichman.
ECE 667 Synthesis & Verification - SAT 1 ECE 667 ECE 667 Synthesis and Verification of Digital Systems Boolean SAT CNF Representation Slides adopted (with.
Willis Lemasters Grant Conklin. Searching a tree recursively one branch at a time, abandoning any branch which does not satisfy the search constraints.
1 Boolean Satisfiability in Electronic Design Automation (EDA ) By Kunal P. Ganeshpure.
Presented by Ed Clarke Slides borrowed from P. Chauhan and C. Bartzis
1 Quantified Formulas Acknowledgement: QBF slides borrowed from S. Malik.
GRASP-an efficient SAT solver Pankaj Chauhan. 6/19/ : GRASP and Chaff2 What is SAT? Given a propositional formula in CNF, find an assignment.
Efficient SAT Solving for Non- clausal Formulas using DPLL, Graphs, and Watched-cuts Himanshu Jain Edmund M. Clarke.
GRASP SAT solver Presented by Constantinos Bartzis Slides borrowed from Pankaj Chauhan J. Marques-Silva and K. Sakallah.
SAT Algorithms in EDA Applications Mukul R. Prasad Dept. of Electrical Engineering & Computer Sciences University of California-Berkeley EE219B Seminar.
Knowledge Representation II (Inference in Propositional Logic) CSE 473 Continued…
ENGG3190 Logic Synthesis “Boolean Satisfiability” Winter 2014 S. Areibi School of Engineering University of Guelph.
GRASP: A Search Algorithm for Propositional Satisfiability EE878C Homework #2 2002/11/1 KAIST, EECS ICS Lab Lee, Dongsoo.
SAT Solving Presented by Avi Yadgar. The SAT Problem Given a Boolean formula, look for assignment A for such that.  A is a solution for. A partial assignment.
Logic - Part 2 CSE 573. © Daniel S. Weld 2 Reading Already assigned R&N ch 5, 7, 8, 11 thru 11.2 For next time R&N 9.1, 9.2, 11.4 [optional 11.5]
Satisfiability Introduction to Artificial Intelligence COS302 Michael L. Littman Fall 2001.
Boolean Satisfiability and SAT Solvers
Quantified Formulas - Decision Procedure Daniel Kroening, Ofer Strichman Presented by Changki Hong 07 NOV 08.
SAT and SMT solvers Ayrat Khalimov (based on Georg Hofferek‘s slides) AKDV 2014.
MBSat Satisfiability Program and Heuristics Brief Overview VLSI Testing B Marc Boulé April 2001 McGill University Electrical and Computer Engineering.
INTRODUCTION TO ARTIFICIAL INTELLIGENCE COS302 MICHAEL L. LITTMAN FALL 2001 Satisfiability.
Digitaalsüsteemide verifitseerimise kursus1 Formal verification: SAT SAT applied in equivalence checking.
Solvers for the Problem of Boolean Satisfiability (SAT) Will Klieber Aug 31, 2011 TexPoint fonts used in EMF. Read the TexPoint manual before you.
Logical Agents Chapter 7. Knowledge bases Knowledge base (KB): set of sentences in a formal language Inference: deriving new sentences from the KB. E.g.:
Boolean Satisfiability in Electronic Design Automation Karem A. Sakallah EECS Department University of Michigan João Marques Silva Informatics Department.
LDK R Logics for Data and Knowledge Representation Propositional Logic: Reasoning First version by Alessandro Agostini and Fausto Giunchiglia Second version.
On the Relation between SAT and BDDs for Equivalence Checking Sherief Reda Rolf Drechsler Alex Orailoglu Computer Science & Engineering Dept. University.
Boolean Satisfiability Present and Future
Boolean Satisfiability in Electronic Design Automation Karem A. Sakallah EECS Department University of Michigan João Marques-Silva Informatics Department.
© Copyright 2008 STI INNSBRUCK Intelligent Systems Propositional Logic.
Finding Models for Blocked 3-SAT Problems in Linear Time by Systematical Refinement of a Sub- Model Gábor Kusper Eszterházy Károly.
SAT Solver Heuristics. SAT-solver History Started with David-Putnam-Logemann-Loveland (DPLL) (1962) –Able to solve variable problems Satz (Chu Min.
1 Propositional Logic Limits The expressive power of propositional logic is limited. The assumption is that everything can be expressed by simple facts.
Logical Agents Chapter 7. Outline Knowledge-based agents Propositional (Boolean) logic Equivalence, validity, satisfiability Inference rules and theorem.
SAT Solving As implemented in - DPLL solvers: GRASP, Chaff and
Inference in Propositional Logic (and Intro to SAT) CSE 473.
1 Boolean Satisfiability (SAT) Class Presentation By Girish Paladugu.
Proof Methods for Propositional Logic CIS 391 – Intro to Artificial Intelligence.
Knowledge Repn. & Reasoning Lecture #9: Propositional Logic UIUC CS 498: Section EA Professor: Eyal Amir Fall Semester 2005.
SAT tutorial1 Boolean Satisfiability in Electronic Design Automation Karem A. Sakallah EECS Department University of Michigan João Marques Silva Informatics.
Logical Agents. Outline Knowledge-based agents Logic in general - models and entailment Propositional (Boolean) logic Equivalence, validity, satisfiability.
Inference in Propositional Logic (and Intro to SAT)
Hardware Acceleration of A Boolean Satisfiability Solver
Inference and search for the propositional satisfiability problem
Bounded Model Checking
Gábor Kusper University of Linz RISC Austria
EA C461 – Artificial Intelligence Logical Agent
Hard Problems Introduction to NP
Boolean Satisfiability in Electronic Design Automation
Logic Synthesis CNF Satisfiability.
Simple Circuit-Based SAT Solver
SAT-Based Area Recovery in Technology Mapping
Introduction to the Boolean Satisfiability Problem
Logics for Data and Knowledge Representation
DLL Algorithm.
Artificial Intelligence: Agents and Propositional Logic.
Decision Procedures An Algorithmic Point of View
A Progressive Approach for Satisfiability Modulo Theories
Methods of Proof Chapter 7, second half.
Canonical Computation without Canonical Data Structure
GRASP-an efficient SAT solver
Presentation transcript:

ECE 667 Synthesis and Verification of Digital Circuits Boolean SAT Slides adapted from students presentation, Girish Paladugu (ECE 667 Spring 2011) ECE 667

Overview Introduction: motivation, brief history Conjunctive Normal Form (CNF) DPLL Method for solving SAT problems Backtrack search algorithm Applications Conclusion ECE 667 - Synthesis & Verification - SAT 2 ECE 667 2

INTRODUCTION SAT: Given a Boolean formula (propositional logic formula) find a variable assignment such that the formula evaluates to 1 (SAT), or prove that no such assignment exists (unSAT). For n variables, there are 2n possible truth assignments to be checked. F = (a + b)(a’ + b’ + c) a b c 1 The first established NP-Complete problem. S. A. Cook, The complexity of theorem proving procedures, Proceedings, Third Annual ACM Symp. on the Theory of Computing,1971, 151-158 ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Conjunctive Normal Form Conjunctive Normal Form (CNF): A conjunctive normal form (CNF) formula ϕ on n binary variables x1, …, xn is the conjunction of m clauses ω1, …, ωm. Literal: it is the occurrence of a variable x or its complement x’. Clause: It is the disjunction of one or more literals. Example CNF formula is satisfiable if each clause is satisfiable( evaluate to true) else it is unsatisfiable. j = ( a + c ) ( b + c ) (¬a + ¬b + ¬c ) ECE 667 - Synthesis & Verification - SAT 4

Applications Core computational engine for major applications EDA Testing and Verification Logic synthesis FPGA routing Path delay analysis Test Pattern Generation Artificial Intelligence Knowledge base deduction Automatic theorem proving ECE 667 - Synthesis & Verification - SAT

Equivalence Checking CA z = 1 ? CB If z = 1 is unsatisfiable, the two circuits are equivalent ! ECE 667 - Synthesis & Verification - SAT

Automatic Test Pattern Generation (ATPG) x1 x2 x3 x4 x5 x6 x7 x8 x9 s-a-1 x4 x1 x2 x3 x5 x6 x7 x8 x9 = 0 CG z = 1 ? x4 x1 x2 x3 x5 x6 x7 x8 x9 = 1 CF x4 x1 x3 x5 x6 x7 x8 x9 ECE 667 - Synthesis & Verification - SAT

Development of SAT: a Brief History 2005 MiniSAT ~15k var Main contributions in SAT research: 1960: Davis and Putnam – resolution based - dealing with ~10 variables 1962: Davis, Logemann and Loveland – DFS-based – dealing with ~10 variables Basic framework for many modern SAT solvers 1986: R. E. Bryant – BDD-based – dealing with ~100 variables 1996: Silva and Sakallah – GRASP (conflict-driven learning and non-chronological backtracking) – dealing with ~1k variables 2001: Malik et al. – Efficient BCP and decision making – dealing with ~10k vars ECE 667 - Synthesis & Verification - SAT Adopted from S. Malik, Princeton University ECE 667

Deriving CNF for Logic Gate b d jd = [d = ¬(a b)] = ¬[d Å ¬(a b)] jd = [d = ¬(a b )][¬d = a b] = ¬[¬(a b)¬d + a b d] = [d = ¬a + ¬b][¬d = a b] = ¬[¬a ¬d + ¬b ¬d + a b d] = (¬a ® d)(¬b ® d)(a b ® ¬d) = (a + d)(b + d)(¬a + ¬b + ¬d) = (a + d)(b + d)(¬a + ¬b + ¬d) Show alternate method (characteristic function) Point to the difference between satisfying the CNF formula solving for the output value ECE 667 - Synthesis & Verification - SAT

CNF Formulas for simple gates ECE 667 - Synthesis & Verification - SAT 10

Circuit - CNF conversion ECE 667 - Synthesis & Verification - SAT 11 ECE 667 11

DLL Algorithm Davis, Logemann and Loveland M. Davis, G. Logemann and D. Loveland, “A Machine Program for Theorem-Proving", Communications of ACM, Vol. 5, No. 7, pp. 394-397, 1962 Also known as DPLL for historical reasons (P = Putman) It is basically an intelligent Depth First Search (DFS) Binary Covering Problem (BCP) Basic framework for many modern SAT solvers ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Example Single gate (^a+^b+ c)(a+^c)(b+^c) Circuit in AIG form: network of connected AND gates (^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) 1 6 2 5 8 7 3 4 9 Note: Nodes 1,2,3: PI Nodes 4,5,6,7,8,9: AND gates Justify to “0” ECE 667 - Synthesis & Verification - SAT ECE 667

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

Conjunctive Normal Form (CNF) Clause j = ( a + c ) ( b + c ) (¬a + ¬b + ¬c ) Negative Literal Positive Literal ECE 667 - Synthesis & Verification - SAT ECE 667

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) (a + c’ + d) (a + c’ + d’) (b’ + c’ + d) (a’ + b + c’) (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) (a + c’ + d) (a + c’ + d’) (b’ + c’ + d) (a’ + b + c’) (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d)  Decision (a + c + d’) (a + c’ + d) (a + c’ + d’) (b’ + c’ + d) (a’ + b + c’) (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d)  Decision (a + c’ + d’) (b’ + c’ + d) (a’ + b + c’) (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) (a + c’ + d’) (b’ + c’ + d) c (a’ + b + c’)  Decision (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) (a + c’ + d’) (b’ + c’ + d) c (a’ + b + c’) (a’ + b’ + c) (a + c + d) a=0 d=1 Conflict! Implication Graph c=0 d=0 (a + c + d’) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) (a + c’ + d’) (b’ + c’ + d) c (a’ + b + c’) (a’ + b’ + c) (a + c + d) a=0 d=1 Conflict! Implication Graph c=0 d=0 (a + c + d’) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) (a + c’ + d’) (b’ + c’ + d) c  Backtrack (a’ + b + c’) (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) (a + c’ + d’) (b’ + c’ + d) c (a’ + b + c’) 1  Forced Decision (a’ + b’ + c) (a + c’ + d) a=0 d=1 Conflict! c=1 d=0 (a + c’ + d’) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) (a + c’ + d’) (b’ + c’ + d) c  Backtrack (a’ + b + c’) 1 (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) 1  Forced Decision (a + c’ + d’) (b’ + c’ + d) c (a’ + b + c’) 1 (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) 1 (a + c’ + d’) (b’ + c’ + d) c c (a’ + b + c’) 1  Decision (a’ + b’ + c) (a + c + d) a=0 d=1 Conflict! c=0 d=0 (a + c + d’) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) 1 (a + c’ + d’) (b’ + c’ + d) c c  Backtrack (a’ + b + c’) 1 (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) 1 (a + c’ + d’) (b’ + c’ + d) c c (a’ + b + c’) 1 1  Forced Decision (a’ + b’ + c) (a + c’ + d) a=0 d=1 Conflict! c=1 d=0 (a + c’ + d’) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS  Backtrack (a’ + b + c) (a + c + d) (a + c + d’) b (a + c’ + d) 1 (a + c’ + d’) (b’ + c’ + d) c c (a’ + b + c’) 1 1 (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) 1  Forced Decision (a + c + d) (a + c + d’) b (a + c’ + d) 1 (a + c’ + d’) (b’ + c’ + d) c c (a’ + b + c’) 1 1 (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) 1 (a + c + d) (a + c + d’) b b (a + c’ + d) 1  Decision (a + c’ + d’) (b’ + c’ + d) c c (a’ + b + c’) 1 1 (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) 1 (a + c + d) (a + c + d’) b b (a + c’ + d) 1 (a + c’ + d’) (b’ + c’ + d) c c (a’ + b + c’) 1 1 (a’ + b’ + c) (a’ + b + c) a=1 c=1 Conflict! b=0 c=0 (a’ + b + c’) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) 1 (a + c + d) (a + c + d’) b b  Backtrack (a + c’ + d) 1 (a + c’ + d’) (b’ + c’ + d) c c (a’ + b + c’) 1 1 (a’ + b’ + c) ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) 1 (a + c + d) (a + c + d’) b b (a + c’ + d) 1 1  Forced Decision (a + c’ + d’) (b’ + c’ + d) c c (a’ + b + c’) 1 1 (a’ + b’ + c) (a’ + b’ + c) a=1 c=1 b=1 ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) 1 (a + c + d) (a + c + d’) b b (a + c’ + d) 1 1 (a + c’ + d’) (b’ + c’ + d) c c (a’ + b + c’) 1 1 (a’ + b’ + c) (a’ + b’ + c) (b’ + c’ + d) a=1 c=1 d=1 b=1 ECE 667 - Synthesis & Verification - SAT Slide adapted From ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Basic DLL Procedure - DFS (a’ + b + c) 1 (a + c + d) (a + c + d’) b b (a + c’ + d) 1 1 (a + c’ + d’) (b’ + c’ + d) c c  SAT (a’ + b + c’) 1 1 (a’ + b’ + c) (a’ + b’ + c) (b’ + c’ + d) a=1 c=1 d=1 b=1 ECE 667 - Synthesis & Verification - SAT Slide adapted from ‘The Quest for Efficient Boolean Satisfiability Solvers’ – Sharad Malik

Backtrack Search Algorithm The algorithm conducts a search through the space of the possible assignments to the problem instance variables The search is improved by Resolution Clause recording Recursive learning Backtrack search has proven useful for solving instances of SAT from EDA applications, in particular for applications where the objective is to prove unsatisfiability. ECE 667 - Synthesis & Verification - SAT 38 ECE 667 38

Backtrack Search SAT Algorithm ECE 667 - Synthesis & Verification - SAT 39

Methods in the Backtrack SAT Algorithm Decide( ): Identify the necessary assignments Deduce( ): Returns a conflict indication whenever a clause becomes unSAT Diagnose( ): Analyzes the conflict and returns a decision level to which the search process is required to backtrack Erase( ): Clears implied assignments that results from each assignment selection Preprocess( ): Preprocessing before running SAT algorithm. ECE 667 - Synthesis & Verification - SAT 40

Summary of SAT Techniques Techniques for Backtrack Search Formula simplification & clause inference Conflict analysis Clause/implicate recording Non-chronological backtracking Resolution Recursive learning Randomization & Restarts ECE 667 - Synthesis & Verification - SAT