Divider Circuit Verification with Model Checking and Theorem Proving

Most industrial-size hardware verification problems are amenable to neither fully automated nor fully manual hardware verification methods. However, combinations of these two extremes, human-constructed proofs with automatically verified lower-level steps, seem to offer great promise. In this paper we discuss a formal verification case study based on such a combination of theorem-proving and model-checking techniques. The case study addresses the correctness of a floating-point divider unit of an Intel IA-32 microprocessor. The verification was carried out in the Forte framework, which consists of a general-purpose theorem-prover, ThmTac, on top of a symbolic trajectory evaluation based model-checking engine. The correctness of the circuit was formulated and decomposed to smaller, automatically model-checkable, statements in a pre/postcondition framework. The other key steps of the proof involved relating bit vectors to integer arithmetic and general arithmetic reasoning.

[1]  Phillip J. Windley,et al.  A Correctness Model for Pipelined Multiprocessors , 1994, TPCD.

[2]  Carl-Johan H. Seger,et al.  A simple theorem prover based on symbolic trajectory evaluation and BDD's , 1995, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[3]  Anne Kaldewaij,et al.  Programming - the derivation of algorithms , 1990, Prentice Hall international series in computer science.

[4]  Ching-Tsun Chou,et al.  The Mathematical Foundation fo Symbolic Trajectory Evaluation , 1999, CAV.

[5]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[6]  Carl-Johan H. Seger,et al.  Symbolic Trajectory Evaluation , 1997, Formal Hardware Verification.

[7]  Lawrence C. Paulson,et al.  ML for the working programmer (2. ed.) , 1996 .

[8]  Carl-Johan H. Seger,et al.  Lifted-FL: A Pragmatic Implementation of Combined Model Checking and Theorem Proving , 1999, TPHOLs.

[9]  Edmund M. Clarke,et al.  Verification of All Circuits in a Floating-Point Unit Using Word-Level Model Checking , 1996, FMCAD.

[10]  John Harrison,et al.  A Machine-Checked Theory of Floating Point Arithmetic , 1999, TPHOLs.

[11]  M. Ercegovac,et al.  Division and Square Root: Digit-Recurrence Algorithms and Implementations , 1994 .

[12]  Jeffrey J. Joyce Generic Specification of Digital Hardware , 1991 .

[13]  Mary Sheeran,et al.  Designing Correct Circuits , 1990 .

[14]  Tom Melham,et al.  Theorem Provers in Circuit Design , 1992 .

[15]  Carl-Johan H. Seger,et al.  Formal verification of iterative algorithms in microprocessors , 2000, Proceedings 37th Design Automation Conference.

[16]  Edmund M. Clarke,et al.  Verifying the SRT Division Algorithm Using Theorem Proving Techniques , 1996, CAV.

[17]  Ansi Ieee,et al.  IEEE Standard for Binary Floating Point Arithmetic , 1985 .

[18]  Mark Aagaard,et al.  Xs are for Trajectory Evaluation, Booleans are for Theorem Proving , 1999, CHARME.

[19]  Edmund M. Clarke,et al.  Word level model checking—avoiding the Pentium FDIV error , 1996, DAC '96.

[20]  Thomas Kropf Formal Hardware Verification , 1997, Lecture Notes in Computer Science.

[21]  Simon Peyton Jones,et al.  The Implementation of Functional Programming Languages (Prentice-hall International Series in Computer Science) , 1987 .

[22]  Randal E. Bryant Bit-level analysis of an SRT divider circuit , 1996, DAC '96.

[23]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[24]  Randal E. Bryant,et al.  Formal verification by symbolic evaluation of partially-ordered trajectories , 1995, Formal Methods Syst. Des..

[25]  David M. Russinoff A Mechanically Checked Proof of IEEE Compliance of the Floating Point Multiplication, Division and Square Root Algorithms of the AMD-K7™ Processor , 1998, LMS J. Comput. Math..

[26]  Lawrence Charles Paulson,et al.  ML for the working programmer , 1991 .

[27]  J. Strother Moore,et al.  A Mechanically Checked Proof of the AMD5K86TM Floating Point Division Program , 1998, IEEE Trans. Computers.