Reasoning about High-Level Constructs in Hardware/Software Formal Verification

Author(s): Long, Jiang | Advisor(s): Brayton, Robert K | Abstract: The ever shrinking feature size of modern electronic chips leads tomore designs being done as well as more complex chips beingdesigned. These in turn lead to greater use of high-levelspecifications and to more sophisticated optimizations applied at theword -level. These steps make it more difficult to verify that thefinal design is faithful to the initial specification. We tackle twosteps in this process and their formal equivalence checking to helpverify the correctness of the steps.First, we present LEC, a combinational equivalence checking tool that is learning driven. It focuses on data-path equivalencechecking with the goal of transforming the two logics under comparison to be moresimilar in order to reduce the complexity of a final Boolean (bit-level)solving. LEC does equivalence checking of combinational logic between two RTL (word-level) designs, one the original and one an optimized RTL version. LEC features an open architecture such that users and developers canlearn with the system as new designs and optimizations are met, and then it can be modularly extended with new proof procedures as they are discovered. To address the use of higher level specifications, we build a simple trusted C to Verilog translation procedure based on theLLVM compiler infrastructure. The translator was designed to implement an almost vertatimtranslation of the C language operators and control structures intothe Verilog \emph{always\_ff} and \emph{always\_comb} blocks through traversing LLVMBytecode programs. The procedure reliably bridges the language barrierbetween software and hardware and allows hardware synthesisand verification techniques to be applied readily.In combination, these two procedures allow for equivalence checkingbetween a software-like specification and an optimized word-level RTLimplementation.

[1]  Markus Wedler,et al.  A Normalization Method for Arithmetic Data-Path Verification , 2007, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[2]  Alberto Griggio,et al.  The MathSAT5 SMT Solver , 2013, TACAS.

[3]  Robert P. Colwell,et al.  The Pentium Chronicles , 2005 .

[4]  Malay K. Ganai,et al.  Robust Boolean reasoning for equivalence checking and functional property verification , 2002, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[5]  L. D. Moura,et al.  The YICES SMT Solver , 2006 .

[6]  Cesare Tinelli A DPLL-Based Calculus for Ground Satisfiability Modulo Theories , 2002, JELIA.

[7]  R. Brayton,et al.  The Benefit of Concurrency in Model Checking , 2011 .

[8]  Wei Wang,et al.  Cascade 2.0 , 2014, VMCAI.

[9]  Jason Baumgartner,et al.  Scalable Sequential Equivalence Checking across Arbitrary Design Transformations , 2006, 2006 International Conference on Computer Design.

[10]  Ryan Kastner,et al.  Arithmetic Optimization Techniques for Hardware and Software Design: Fundamentals of digital arithmetic , 2010 .

[11]  Daniel Kroening,et al.  CBMC - C Bounded Model Checker - (Competition Contribution) , 2014, TACAS.

[12]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[13]  Andreas Kuehlmann,et al.  Equivalence checking combining a structural SAT-solver, BDDs, and simulation , 2000, Proceedings 2000 International Conference on Computer Design.

[14]  Kenneth L. McMillan,et al.  Lazy Abstraction with Interpolants , 2006, CAV.

[15]  Florian Enescu,et al.  Equivalence Verification of Polynomial Datapaths Using Ideal Membership Testing , 2007, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[16]  Dong Wang,et al.  Automatic assume guarantee analysis for assertion-based formal verification , 2005, Proceedings of the ASP-DAC 2005. Asia and South Pacific Design Automation Conference, 2005..

[17]  Sanjit A. Seshia,et al.  Reverse engineering circuits using behavioral pattern mining , 2012, 2012 IEEE International Symposium on Hardware-Oriented Security and Trust.

[18]  Robert K. Brayton,et al.  Automated Extraction of Inductive Invariants to Aid Model Checking , 2007, Formal Methods in Computer Aided Design (FMCAD'07).

[19]  Jochen Hoenicke,et al.  Ultimate Automizer with Unsatisfiable Cores - (Competition Contribution) , 2014, TACAS.

[20]  Carsten Sinz,et al.  LLBMC: Bounded Model Checking of C and C++ Programs Using a Compiler IR , 2012, VSTTE.

[21]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[22]  Koen Claessen,et al.  SAT-Based Verification without State Space Traversal , 2000, FMCAD.

[23]  Jason Cong,et al.  High-Level Synthesis for FPGAs: From Prototyping to Deployment , 2011, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[24]  Qi Zhu,et al.  SAT sweeping with local observability don't-cares , 2006, 2006 43rd ACM/IEEE Design Automation Conference.

[25]  Panagiotis Manolios,et al.  Computer-aided reasoning : ACL2 case studies , 2000 .

[26]  Jorge A. Navas,et al.  SeaHorn: A Framework for Verifying C Programs (Competition Contribution) , 2015, TACAS.

[27]  Armin Biere,et al.  Boolector: An Efficient SMT Solver for Bit-Vectors and Arrays , 2009, TACAS.

[28]  Anna Philippou,et al.  Tools and Algorithms for the Construction and Analysis of Systems , 2018, Lecture Notes in Computer Science.

[29]  Daniel Kroening,et al.  Behavioral consistency of C and Verilog programs using bounded model checking , 2003, Proceedings 2003. Design Automation Conference (IEEE Cat. No.03CH37451).

[30]  Markus Wedler,et al.  STABLE: A new QF-BV SMT solver for hard verification problems combining Boolean reasoning with computer algebra , 2011, 2011 Design, Automation & Test in Europe.

[31]  Kei-Yong Khoo,et al.  Improving Constant-Coefficient Multiplier Verification by Partial Product Identification , 2008, 2008 Design, Automation and Test in Europe.

[32]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[33]  Dirk Beyer Software Verification and Verifiable Witnesses - (Report on SV-COMP 2015) , 2015, TACAS.

[34]  Jason Baumgartner,et al.  Transformation-Based Verification Using Generalized Retiming , 2001, CAV.

[35]  Robert K. Brayton,et al.  Enhancing ABC for stabilization verification of SystemVerilog/VHDL models , 2011, DIFTS@FMCAD.

[36]  R. Brayton,et al.  Improvements to Combinational Equivalence Checking , 2006, 2006 IEEE/ACM International Conference on Computer Aided Design.

[37]  Dirk Beyer,et al.  CPAchecker: A Tool for Configurable Software Verification , 2009, CAV.

[38]  Kenneth L. McMillan,et al.  Generalizing DPLL to Richer Logics , 2009, CAV.

[39]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[40]  Carl Pixley,et al.  Solver technology for system-level to RTL equivalence checking , 2009, 2009 Design, Automation & Test in Europe Conference & Exhibition.

[41]  Ashish Tiwari,et al.  WordRev: Finding word-level structures in a sea of bit-level gates , 2013, 2013 IEEE International Symposium on Hardware-Oriented Security and Trust (HOST).

[42]  Robert K. Brayton,et al.  ABC: An Academic Industrial-Strength Verification Tool , 2010, CAV.

[43]  Jason Cong,et al.  AutoPilot: A Platform-Based ESL Synthesis System , 2008 .

[44]  Priyank Kalla,et al.  Equivalence verification of polynomial datapaths with fixed-size bit-vectors using finite ring algebra , 2005, ICCAD-2005. IEEE/ACM International Conference on Computer-Aided Design, 2005..

[45]  Sanjit A. Seshia,et al.  Beaver: Engineering an Efficient SMT Solver for Bit-Vector Arithmetic , 2009, CAV.

[46]  André Rossi,et al.  Algebraic approach to arithmetic design verification , 2011, 2011 Formal Methods in Computer-Aided Design (FMCAD).

[47]  Zijiang Yang,et al.  F-Soft: Software Verification Platform , 2005, CAV.

[48]  Jason Helge Anderson,et al.  LegUp: high-level synthesis for FPGA-based processor/accelerator systems , 2011, FPGA '11.

[49]  Panagiotis Manolios,et al.  Computer-Aided Reasoning: An Approach , 2011 .

[50]  Dominik Stoffel,et al.  Equivalence checking of arithmetic circuits on the arithmetic bit level , 2004, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[51]  A. Kuehlmann,et al.  Equivalence Checking Using Cuts And Heaps , 1997, Proceedings of the 34th Design Automation Conference.

[52]  Thomas A. Henzinger,et al.  The software model checker Blast , 2007, International Journal on Software Tools for Technology Transfer.