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.
Similar content being viewed by others
References
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.
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.
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.
R.E. Bryant, “Graph-based algorithms for boolean function manipulation,” IEEE Transactions on Computers, Vol. 35, No. 8, pp. 677–691, 1986.
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.
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.
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.
Computer Aided Verification (CAV'98), Lecture Notes in Computer Science, Vol. 1427, Springer-Verlag, Berlin, June 1998.
Computer Aided Verification (CAV'99), Lecture Notes in Computer Science, Vol. 1633, Springer-Verlag, Berlin, July 1999.
W. Damm and A. Pnueli, “Verifying out-of-order executions,” in D. Probst (Ed.), CHARME'97, Chapman &; Hall, London, 1997.
L. Gwennap, “Intel's P6 uses decoupled superscalar design,” Microprocessor Report, Vol. 9, No. 2, pp. 9–15, 1995.
J. Hennessy and D. Patterson, Computer Architecture: A Quantitative Approach, Morgan Kaufmann, San Mateo, CA, 1996.
R. Hojati and R.K. Brayton, “Automatic datapath abstraction of hardware systems,” in Computer Aided Verification (CAV'95), Springer-Verlag, Berlin, 1995.
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.
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.
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.
S.L.P. Jones, The Implementation of Functional Programming Languages, Prentice-Hall, Englewood Cliffs, NJ, 1987.
P.M. Kogge, The Architecture of Symbolic Computers, McGraw-Hill, New York, 1991.
K.L. McMillan, Symbolic Model Checking: An Approach to the State Explosion Problem, Kluwer Academic Publishers, Dordrecht, 1993.
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.
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.
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.
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.
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.
D.H.D. Warren, “An abstract prolog instruction set,” Technical Note 309, SRI International, 1983.
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.
Author information
Authors and Affiliations
Rights 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
Issue Date:
DOI: https://doi.org/10.1023/A:1014170513439