Reducing Manual Abstraction in Formal Verification of Out-of-Order Execution

Several methods have recently been proposed for verifying processors with out-of-order execution. These methods use intermediate abstractions to decompose the verification process into smaller steps. Unfortunately, the process of manually creating intermediate abstractions is very laborious. We present an approach that dramatically reduces the need for an intermediate abstraction, so that only the scheduling logic of the implementation is abstracted. After the abstraction, we apply an enhanced incremental-flushing approach to verify the remaining circuitry by comparing the processor description against itself in a slightly simpler configuration. By induction, we demonstrate that any reachable configuration is equivalent to the simplest possible configuration. Finally, we prove correctness on the simplest configuration. The approach is illustrated with a simple example of an out-of-order execution core.

[1]  Amir Pnueli,et al.  Verifying out-of-order executions , 1997, CHARME.

[2]  Jerry R. Burch,et al.  Mechanically Checking a Lemma Used in an Automatic Verification Tool , 1996, FMCAD.

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

[4]  David L. Dill,et al.  Automatic verification of Pipelined Microprocessor Control , 1994, CAV.

[5]  Jun Sawada,et al.  Processor Verification with Precise Exeptions and Speculative Execution , 1998, CAV.

[6]  Kenneth L. McMillan,et al.  Verification of an Implementation of Tomasulo's Algorithm by Compositional Model Checking , 1998, CAV.

[7]  J. Burch Techniques for verifying superscalar microprocessors , 1996, 33rd Design Automation Conference Proceedings, 1996.

[8]  Armin Biere,et al.  Combining Symbolic Model Checking with Uninterpreted Functions for Out-of-Order Processor Verification , 1998, FMCAD.

[9]  book,et al.  Computer Architecture , a Quantitative Approach , 1995 .

[10]  David L. Dill,et al.  Efficient validity checking for processor verification , 1995, Proceedings of IEEE International Conference on Computer Aided Design (ICCAD).

[11]  David L. Dill,et al.  Formal Verification of Out-of-Order Execution Using Incremental Flushing , 1998, CAV.

[12]  Jun Sawada,et al.  Trace Table Based Approach for Pipeline Microprocessor Verification , 1997, CAV.

[13]  Ganesh Gopalakrishnan,et al.  Decomposing the Proof of Correctness of pipelined Microprocessors , 1998, CAV.

[14]  Thomas A. Henzinger,et al.  You Assume, We Guarantee: Methodology and Case Studies , 1998, CAV.