Formal verification of iterative algorithms in microprocessors

Contemporary microprocessors implement many iterative algorithms. For example, the front-end of a microprocessor repeatedly fetches and decodes instructions while updating internal state such as the program counter; floating-point circuits perform divide and square root computations iteratively. Iterative algorithms often have complex implementations because of performance optimizations like result speculation, re-timing and circuit redundancies. Verifying these iterative circuits against high-level specifications requires two steps: reasoning about the algorithm itself and verifying the implementation against the algorithm. In this paper we discuss the verification of four iterative circuits from Intel microprocessor designs. These verifications were performed using Forte, a custom-built verification system; we discuss the Forte features necessary for our approach. Finally, we discuss how we maintained these proofs in the face of evolving design implementations.

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

[2]  Carl-Johan H. Seger,et al.  Combining theorem proving and trajectory evaluation in an industrial environment , 1998, Proceedings 1998 Design and Automation Conference. 35th DAC. (Cat. No.98CH36175).

[3]  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..

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

[5]  Carl Seger VOSS - A Formal Hardware Verification System User''s Guide , 1993 .

[6]  David A. Patterson,et al.  Computer architecture (2nd ed.): a quantitative approach , 1996 .

[7]  Matt Kaufmann,et al.  A Mechanically Checked Proof of the , 1998 .

[8]  Robert P. Kurshan,et al.  Computer-Aided Verification of Coordinating Processes: The Automata-Theoretic Approach , 2014 .

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

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

[11]  Geoff Barrett,et al.  Formal Methods Applied to a Floating-Point Number System , 1989, IEEE Trans. Software Eng..

[12]  BarrettGeoff Formal Methods Applied to a Floating-Point Number System , 1989 .

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

[14]  Jason Hickey,et al.  Non-Restoring Integer Square Root: A Case Study in Design by Principled Optimization , 1994, TPCD.

[15]  C. Seger,et al.  Formally Verifying IEEE Compliance of Floating-Point Hardware , 2022 .

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

[17]  Carl-Johan H. Seger,et al.  Formal verification using parametric representations of Boolean constraints , 1999, DAC '99.

[18]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[19]  J. Burch Trace algebra for automatic verification of real-time concurrent systems , 1992 .

[20]  Edmund M. Clarke,et al.  Model checking and abstraction , 1994, TOPL.

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

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

[23]  Edmund M. Clarke,et al.  Verifying the SRT Division Algorithm Using Theorem Proving Techniques , 1996, Formal Methods Syst. Des..