Satisfiability-Based Methods for Digital Circuit Design, Debug, and Optimization

Designing digital circuits well is notoriously difficult. This difficulty stems in part from the very many degrees of freedom inherent in circuit design, typically coupled with the need to satisfy various constraints. In this thesis, we demonstrate how formulations of satisfiability problems can be used automatically to complete a design, or to find a specific design architecture that satisfies certain constraints; how these can be used to create, debug, and optimize designs; and introduce a domain-specific language particularly well-suited for satisfiability-assisted design, debug, and optimization. In the first application, we show how explicit uncertainties called “holes” can both be natural to use and conducive to the creation of formal satisfiability problems useful for designing circuits. We further develop a Scala-hosted Domain Specific Language (DSL) with appropriate syntactic sugar to make design with holes easy and effective. We then show how, utilizing the same kind of satisfiability formulation, we can automatically instrument a given buggy design to replace suspicious syntax fragments with potentiallycorrect alternatives. The satisfiability solver then determines if there is any possible set of alternative fragments which fix the bug. We also demonstrate that this approach is reasonably scalable, in part because there is less need for a fully-precise specification in the formulation of the satisfiability problem. We then advance beyond mere hole-filling and show how a tight integration of design elaboration with satisfiability solvers allows totally new approaches. To point, we use this tight integration to create the first known methods to optimize Gate-Level Information Flow Tracking (GLIFT) model circuits and to make principled trade-offs in their precision. Finally, integrating all the previous work, we propose a more powerful DSL specifically designed to address the shortcomings of the first “hole-filling” language. This language, which we call Nasadiya, affords more general integrations of satisfiability into circuit design and optimization, and provides built-in modeling functionality useful for optimizing extra-functional properties like critical path delay and circuit area. We demonstrate the utility of these features by implementing an automatic power optimizer for a popular type of parallel prefix adders.

[1]  John Wawrzynek,et al.  Chisel: Constructing hardware in a Scala embedded language , 2012, DAC Design Automation Conference 2012.

[2]  Wouter Swierstra,et al.  Pi-Ware: Hardware Description and Verification in Agda , 2015, TYPES.

[3]  John McLean,et al.  Security models and information flow , 1990, Proceedings. 1990 IEEE Computer Society Symposium on Research in Security and Privacy.

[4]  S. Naffziger A sub-nanosecond 0.5 /spl mu/m 64 b adder design , 1996, 1996 IEEE International Solid-State Circuits Conference. Digest of TEchnical Papers, ISSCC.

[5]  G.E. Moore,et al.  Cramming More Components Onto Integrated Circuits , 1998, Proceedings of the IEEE.

[6]  Ibrahim N. Hajj,et al.  ACCORD : Automatic Catching and Correction of Logic Design Errors in Combinational Circuits , 1992, Proceedings International Test Conference 1992.

[7]  Mike Golio,et al.  Fifty Years of Moore's Law , 2015, Proc. IEEE.

[8]  Dursun Baran,et al.  Minimizing Energy by Achieving Optimal Sparseness in Parallel Adders , 2015, 2015 IEEE 22nd Symposium on Computer Arithmetic.

[9]  Viktor Kuncak,et al.  Scala to the Power of Z3: Integrating SMT and Programming , 2011, CADE.

[10]  Tomás Lang,et al.  Digit-Serial Arithmetic , 2004 .

[11]  Niklas Sörensson,et al.  An Extensible SAT-solver , 2003, SAT.

[12]  Rastislav Bodík,et al.  Synthesizing hardware from sketches , 2009, 2009 46th ACM/IEEE Design Automation Conference.

[13]  Wojciech Maly,et al.  Cost of Silicon Viewed from VLSI Design Perspective , 1994, 31st Design Automation Conference.

[14]  Raul Camposano From behavior to structure: high-level synthesis , 1990, IEEE Design & Test of Computers.

[15]  Frederic T. Chong,et al.  Secure information flow analysis for hardware design: using the right abstraction for the job , 2010, PLAS '10.

[16]  Gerhard P. Hancke,et al.  Attacking smart card systems: Theory and practice , 2009, Inf. Secur. Tech. Rep..

[17]  Sally Adee,et al.  The Hunt For The Kill Switch , 2008, IEEE Spectrum.

[18]  Zohar Manna,et al.  Toward automatic program synthesis , 1971, Symposium on Semantics of Algorithmic Languages.

[19]  Claude E. Shannon,et al.  A symbolic analysis of relay and switching circuits , 1938, Transactions of the American Institute of Electrical Engineers.

[20]  B. A. Bernstein A set of four independent postulates for Boolean algebras , 1916 .

[21]  Frederic T. Chong,et al.  Position paper: Sapper -- a language for provable hardware policy enforcement , 2013, PLAS '13.

[22]  Huei Ling High Speed Binary Parallel Adder , 1966, IEEE Trans. Electron. Comput..

[23]  Roderick Bloem,et al.  Program Repair as a Game , 2005, CAV.

[24]  Dawson R. Engler,et al.  KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs , 2008, OSDI.

[25]  Gary Smith,et al.  High-Level Synthesis: Past, Present, and Future , 2009, IEEE Design & Test of Computers.

[26]  Sharad Malik,et al.  Delay computation in combinational logic circuits: theory and algorithms , 1991, 1991 IEEE International Conference on Computer-Aided Design Digest of Technical Papers.

[27]  Wojciech Cholewa,et al.  Fault Diagnosis , 2004, Springer Berlin Heidelberg.

[28]  Franz Wotawa,et al.  Automated source-level error localization in hardware designs , 2006, IEEE Design & Test of Computers.

[29]  J. P. Marques,et al.  GRASP : A Search Algorithm for Propositional Satisfiability , 1999 .

[30]  Ibrahim N. Hajj,et al.  Logic design error diagnosis and correction , 1994, IEEE Trans. Very Large Scale Integr. Syst..

[31]  Igor L. Markov,et al.  Automatic error diagnosis and correction for RTL designs , 2007, 2007 IEEE International High Level Design Validation and Test Workshop.

[32]  Scott A. Mahlke,et al.  Bitwidth cognizant architecture synthesis of custom hardwareaccelerators , 2001, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[33]  J. Meseguer,et al.  Security Policies and Security Models , 1982, 1982 IEEE Symposium on Security and Privacy.

[34]  Robert K. Brayton,et al.  SAT-based complete don't-care computation for network optimization , 2005, Design, Automation and Test in Europe.

[36]  Martin Odersky,et al.  Making domain-specific hardware synthesis tools cost-efficient , 2013, 2013 International Conference on Field-Programmable Technology (FPT).

[37]  Florian Lonsing,et al.  The QBF Gallery: Behind the scenes , 2016, Artif. Intell..

[38]  Rajeev Alur,et al.  Syntax-guided synthesis , 2013, 2013 Formal Methods in Computer-Aided Design.

[39]  Enrico Macii,et al.  Timing analysis of combinational circuits using ADDs , 1994, Proceedings of European Design and Test Conference EDAC-ETC-EUROASIC.

[40]  James W. Gray,et al.  Toward a mathematical foundation for information flow security , 1991, Proceedings. 1991 IEEE Computer Society Symposium on Research in Security and Privacy.

[41]  Sharad Malik,et al.  Chaff: engineering an efficient SAT solver , 2001, Proceedings of the 38th Design Automation Conference (IEEE Cat. No.01CH37232).

[42]  Eddie Kohler,et al.  Information flow control for standard OS abstractions , 2007, SOSP.

[43]  Adi Shamir,et al.  RSA Key Extraction via Low-Bandwidth Acoustic Cryptanalysis , 2014, CRYPTO.

[44]  David Novo,et al.  SKETCHILOG: Sketching combinational circuits , 2014, 2014 Design, Automation & Test in Europe Conference & Exhibition (DATE).

[45]  Amir Pnueli,et al.  On the synthesis of a reactive module , 1989, POPL '89.

[46]  Payman Behnam,et al.  A Scalable Formal Debugging Approach with Auto-Correction Capability Based on Static Slicing and Dynamic Ranking for RTL Datapath Designs , 2015, IEEE Transactions on Computers.

[47]  Mikolás Janota,et al.  The QBFGallery 2014: The QBF Competition at the FLoC Olympic Games , 2014, J. Satisf. Boolean Model. Comput..

[48]  Olivier Coudert,et al.  Automating the diagnosis and the rectification of design errors with PRIAM , 1989, 1989 IEEE International Conference on Computer-Aided Design. Digest of Technical Papers.

[49]  Rolf Drechsler,et al.  Debugging sequential circuits using Boolean satisfiability , 2004, IEEE/ACM International Conference on Computer Aided Design, 2004. ICCAD-2004..

[50]  Massoud Pedram,et al.  Boolean matching using binary decision diagrams with applications to logic synthesis and verification , 1992, Proceedings 1992 IEEE International Conference on Computer Design: VLSI in Computers & Processors.

[51]  Roderick Bloem,et al.  Finding and fixing faults , 2005, J. Comput. Syst. Sci..

[52]  Franz Wotawa,et al.  Verification and Fault Localization for VHDL Programs , 2002 .

[53]  Robert K. Brayton,et al.  Using SAT for combinational equivalence checking , 2001, Proceedings Design, Automation and Test in Europe. Conference and Exhibition 2001.

[54]  Sheldon B. Akers,et al.  Binary Decision Diagrams , 1978, IEEE Transactions on Computers.

[55]  Stephen A. Cook,et al.  The complexity of theorem-proving procedures , 1971, STOC.

[56]  W. Eric Wong,et al.  Using Mutation to Automatically Suggest Fixes for Faulty Programs , 2010, 2010 Third International Conference on Software Testing, Verification and Validation.

[57]  Eldon C. Hall Journey to the Moon: The History of the Apollo Guidance Computer , 1996 .

[58]  Harry D. Foster Trends in functional verification: A 2014 industry study , 2015, 2015 52nd ACM/EDAC/IEEE Design Automation Conference (DAC).