Skip to main content
Log in

Verification of Out-Of-Order Processor Designs Using Model Checking and a Light-Weight Completion Function

  • Published:
Formal Methods in System Design Aims and scope Submit manuscript

Abstract

We present a new technique for verification of complex hardware devices that allows both generality and a high degree of automation. The technique is based on our new way of constructing a “light-weight” completion function together with new encoding of uninterpreted functions called reference file representation.

Our technique combines our completion function method and reference file representation with compositional model checking and theorem proving. This extends the state of the art in two directions. First, we obtain a more general verification methodology. Second, it is easier to use, since it has a higher degree of automation.

As a benchmark, we take Tomasulo's algorithm for scheduling out-of-order instruction execution used in many modern superscalar processors like the Pentium-II and the PowerPC 604. The algorithm is parameterized by the processor configuration, and our approach allows us to prove its correctness in general, independent of any actual design.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. S. Berezin, A. Biere, E. Clarke, and Y. Zhu, “Combining symbolic model checking with uninterpreted functions for out-of-order processor verification,” in FMCAD'98, Lecture Notes in Computer Science, Vol. 1522, Springer-Verlag, Berlin, 1998, pp. 369–386.

    Google Scholar 

  2. A. Biere, A. Cimatti, E.M. Clarke, and Y. Zhu, “Symbolic model checking without BDDs,” in TACAS'99, Lecture Notes in Computer Science, Vol. 1579, Springer-Verlag, Amsterdam, The Netherlands, 1999.

    Google Scholar 

  3. R.E. Bryan, S. German, and M.N. Velev, “Processor verification using efficient reductions of the logic of uninterpreted functions to propositional logic,” Technical Report, Carnegie Mellon University, 1999.Available as http://reports-archive.adm.cs.cmu.edu/anon/1999/CMU-CS-99-115.ps.

  4. R.E. Bryant, “Graph-based algorithms for boolean function manipulation,” IEEE Transactions on Computers, Vol. 35, No. 8, pp. 677–691, 1986.

    Google Scholar 

  5. J.R. Burch and D.L. Dill, “Automatic verification of pipelined microprocessor control,” in D.L. Dill (Ed.), Computer Aided Verification (CAV'94), Lecture Notes in Computer Science, Vol. 18, Springer-Verlag, Berlin, 1994.

    Google Scholar 

  6. E. Clarke and E.A. Emerson, “Design and synthesis of synchronization skeletons using branching time temporal logic,” in Proceedings of the IBM Workshop on Logics of Programs, Springer-Verlag, Berlin, 1981, pp. 52–71.

    Google Scholar 

  7. E.M. Clarke, E.A. Emerson, and A.P. Sistla, “Automatic verification of finite-state concurrent systems using temporal logic specifications,” ACM Transactions on Programming Languages and Systems, Vol. 8, No. 2, pp. 244–263, 1986.

    Google Scholar 

  8. Computer Aided Verification (CAV'98), Lecture Notes in Computer Science, Vol. 1427, Springer-Verlag, Berlin, June 1998.

    Google Scholar 

  9. Computer Aided Verification (CAV'99), Lecture Notes in Computer Science, Vol. 1633, Springer-Verlag, Berlin, July 1999.

    Google Scholar 

  10. W. Damm and A. Pnueli, “Verifying out-of-order executions,” in D. Probst (Ed.), CHARME'97, Chapman &; Hall, London, 1997.

    Google Scholar 

  11. L. Gwennap, “Intel's P6 uses decoupled superscalar design,” Microprocessor Report, Vol. 9, No. 2, pp. 9–15, 1995.

    Google Scholar 

  12. J. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach, Morgan Kaufmann, San Mateo, CA, 1996.

    Google Scholar 

  13. R. Hojati and R.K. Brayton, “Automatic datapath abstraction of hardware systems,” in Computer Aided Verification (CAV'95), Springer-Verlag, Berlin, 1995.

    Google Scholar 

  14. R. Hosabettu, M. Srivas, and G. Gopalakrishnan, “Decomposing the proof of correctness of pipelined microprocessors,” in Computer Aided Verification (CAV'98), Lecture Notes in Computer Science, Vol. 1427, Springer-Verlag, Berlin, June 1998, pp. 122–134.

    Google Scholar 

  15. R. Hosabettu, M. Srivas, and G. Gopalakrishnan, “Proof of correctness of a processor with reorder buffer using the completion function approach,” in Computer Aided Verification (CAV'99), Lecture Notes in Computer Science, Vol. 1633, Springer-Verlag, Berlin, July 1999.

    Google Scholar 

  16. C.N. Ip and D.L. Dill, “Better verification through symmetry,” Formal Methods in System Design, Vol. 9, No. 1/2, pp. 41–75, 1996.

    Google Scholar 

  17. S.L.P. Jones, The Implementation of Functional Programming Languages, Prentice-Hall, Englewood Cliffs, NJ, 1987.

    Google Scholar 

  18. P.M. Kogge, The Architecture of Symbolic Computers, McGraw-Hill, New York, 1991.

    Google Scholar 

  19. K.L. McMillan, Symbolic Model Checking: An Approach to the State Explosion Problem, Kluwer Academic Publishers, Dordrecht, 1993.

    Google Scholar 

  20. K.L. McMillan, “Verification of an implementation of tomasulo's algorithm by compositional model checking,” in Computer Aided Verification (CAV'98), Lecture Notes in Computer Science, Vol. 1427, Springer-Verlag, Berlin, June 1998.

    Google Scholar 

  21. K. Sajid, A. Goel, H. Zhou, A. Aziz, and V. Singhal, “BDD based procedures for a theory of equality with uninterpreted functions,” in Computer Aided Verification (CAV'98), Lecture Notes in Computer Science, Vol. 1427, Springer-Verlag, Berlin, June 1998.

    Google Scholar 

  22. J. Sawada and W.A. Hunt, “Processor verification with precise exceptions and speculative execution,” in Computer Aided Verification (CAV'98), Lecture Notes in Computer Science, Vol. 1427, Springer-Verlag, Berlin, June 1998.

    Google Scholar 

  23. J.U. Skakkebæk, R.B. Jones, and D.L. Dill, “Formal verification of out-of-order execution using incremental flushing,” in Computer Aided Verification (CAV'98), Lecture Notes in Computer Science, Vol. 1427, Springer-Verlag, Berlin, June 1998.

    Google Scholar 

  24. M.N. Velev and R.E. Bryant, “Superscalar processor verification using efficient reductions of the logic of equality with uninterpreted functions,” in Correct Hardware Design and Verification Methods (CHARME'99), Lecture Notes in Computer Science, Vol. 1703, Springer-Verlag, Berlin, 1999, pp. 37–53.

    Google Scholar 

  25. D.H.D. Warren, “An abstract prolog instruction set,” Technical Note 309, SRI International, 1983.

  26. P. Wolper, “Expressing interesting properties of programs in propositional temporal logic,” in Proceedings of the 13th Annual ACM Symposium on Principles of Programming Languages (POPL'86), ACM, New York, 1986, pp. 184–193.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Berezin, S., Clarke, E., Biere, A. et al. Verification of Out-Of-Order Processor Designs Using Model Checking and a Light-Weight Completion Function. Formal Methods in System Design 20, 159–186 (2002). https://doi.org/10.1023/A:1014170513439

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1014170513439

Navigation