Abstract
A central task in formal verification is the definition of invariants, which characterize the reachable states of the system. When a system is finitestate, invariants can be discovered automatically.
Our experience in verifying microprocessors using symbolic logic is that finding adequate invariants is extremely time-consuming. We present three techniques for automating the discovery of some of these invariants. All of them are essentially syntactic transformations on a logical formula derived from the state transition function. The goal is to eliminate quantifiers and extract small clauses implied by the larger formula.
We have implemented the method and exercised it on a description of the FLASH Protocol Processor (PP), a microprocessor designed at Stanford for handling communications in a multiprocessor. We had previously verified the PP by manually deriving invariants.
Although the method is simple, it discovered 6 out of 7 of the invariants needed for verification of the CPU of the processor design, and 28 out of 72 invariants needed for verification of the memory system of the processor. We believe that, in the future, the discovery of invariants can be largely automated by a combination of different methods, including this one.
Preview
Unable to display preview. Download preview PDF.
References
J. Burch and D. Dill, “Symbolic Verification of Pipelined Microprocessor Control”, 6th Computer Aided Verification, 1994.
J. Burch, E. Clarke, K. McMillan, D. Dill, and L. Hwang, “Symbolic Model Checking: 1020 States and Beyond”, 5th Annual IEEE Symposium on Logic In Computer Science, 1990.
A. Cohn, “A Proof of Correctness of the VIPER Microprocessors: The First Level”, In VLSI Specification, Verification and Synthesis, 1988.
D. Cyrluk, “Microprocessor Verification in PVS: A Methodology and Simple Example”, Technical Report SRI-CSL-93-12, SRI Computer Science Laboratory, Dec. 1993.
J. Hennessy and D. Patterson, “Computer Architecture: A Quantitative Approach”, Morgan Kaufmann, 1990.
W. Hunt, Jr., “Microprocessor Design Verification”, Journal of Automated Reasoning 5: p429–460, 1989.
R. Jones, D. Dill and J. Burch, “Efficient Validity Checking for Processor Verification”, IEEE/ACM International Conference on Computer Aided Design, 1995.
J. Joyce, G. Birtwistle, and M. Gordon, “Proving a Computer Correct in Higher Order Logic”, Technical Report 100, Computer Lab., University of Cambridge, 1986.
M. Langevin and E. Cerny, “Verification of Processor-like Circuits”, In Advanced Research Workshop on Correct Hardware Design Methodologies, June 1991.
Z. Manna, et al., “STeP: the Stanford Temporal Prover”, Technique Report, STAN-CS-TR-94, Computer Science Department, Stanford, 1994.
Z. Manna and R. Waldinger, “The Deductive Foundations of Computer Programming”, Addison Wesley, 1993.
Z. Manna and A. Pnueli, “Temporal Verification of Reactive Systems: Safety”, Springer-Verlag, 1995.
S. Bensalem, Y. Lakhnech, and H. Saldi, “Powerful Techniques for the Automatic Generation of Invariants”, To appear in CAV96.
A. Roscoe, “Occam in the Specification and Verification of Microprocessors”, ACM Trans. Prog. Lang. Syst., 1(2):245–257, Oct. 1979.
J. Saxe, S. Garland, J. Guttag, and J. Horning, “Using Transformations and Verification in Circuit Design”, Technical Report 78, DEC System Research Center, Sept. 1991.
R. Simoni, “PP Instruction Set Architecture Specification”, version 1.7, Stanford FLASH group, 1995
M. Srivas and M. Brickford, “Formal Verification of a Pipelined Microprocessor”, IEEE Software, 7(5):52–64, Sept. 1990.
C. Barrett, D. Dill, and J. Levitt, “Validity Checking for Combinations of Theories with Equality”, To appear in FMCAD, 1996.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1996 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Su, J.X., Dill, D.L., Barrett, C.W. (1996). Automatic generation of invariants in processor verification. In: Srivas, M., Camilleri, A. (eds) Formal Methods in Computer-Aided Design. FMCAD 1996. Lecture Notes in Computer Science, vol 1166. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0031822
Download citation
DOI: https://doi.org/10.1007/BFb0031822
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-61937-6
Online ISBN: 978-3-540-49567-3
eBook Packages: Springer Book Archive