Boolean Satisfiability Solvers and Their Applications in Model Checking

Yakir Vizel, Georg Weissenbacher, Sharad Malik

Research output: Contribution to journalArticlepeer-review

83 Scopus citations


Boolean satisfiability (SAT) - the problem of determining whether there exists an assignment satisfying a given Boolean formula - is a fundamental intractable problem in computer science. SAT has many applications in electronic design automation (EDA), notably in synthesis and verification. Consequently, SAT has received much attention from the EDA community, who developed algorithms that have had a significant impact on the performance of SAT solvers. EDA researchers introduced techniques such as conflict-driven clause learning, novel branching heuristics, and efficient unit propagation. These techniques form the basis of all modern SAT solvers. Using these ideas, contemporary SAT solvers can often handle practical instances with millions of variables and constraints. The continuing advances of SAT solvers are the driving force of modern model checking tools, which are used to check the correctness of hardware designs. Contemporary automated verification techniques such as bounded model checking, proof-based abstraction, interpolation-based model checking, and IC3 have in common that they are all based on SAT solvers and their extensions. In this paper, we trace the most important contributions made to modern SAT solvers by the EDA community, and discuss applications of SAT in hardware model checking.

Original languageEnglish (US)
Article number7225110
Pages (from-to)2021-2035
Number of pages15
JournalProceedings of the IEEE
Issue number11
StatePublished - Aug 26 2015

All Science Journal Classification (ASJC) codes

  • General Computer Science
  • Electrical and Electronic Engineering


  • IC3
  • interpolation
  • model checking
  • proofs
  • satisfiability solving


Dive into the research topics of 'Boolean Satisfiability Solvers and Their Applications in Model Checking'. Together they form a unique fingerprint.

Cite this