Verification Using Uninterpreted Functions and Finite Instantiations

One approach to address the state explosion problem in verification of microprocessors with wide datapaths is to model variables as integers and datapath functions as uninterpreted ones. Verification then proceeds by either symbolically simulating this abstract model, or creating a small finite instantiation which contains all possible behaviors. In this paper, we first prove that the reachability problem for models with uninterpreted functions and predicates only of the form x=y, where both x and y are integer variables, is undecidable. However, such predicates are generally only needed in the property being checked and not in the model. For properties involving predicates of the forms x=term and x=y, we provide complete and partial verification techniques using finite instantiations respectively. Applications of these result to the verification of the control circuitry of superscalar microprocessors are provided, where one can verify various correctness properties using models with one or a few bit integers.

[1]  Marc Tremblay,et al.  A 64-b microprocessor with multimedia support , 1995 .

[2]  Andrew R. Pleszkun,et al.  Implementing Precise Interrupts in Pipelined Processors , 1988, IEEE Trans. Computers.

[3]  David C. Luckham,et al.  On Formalised Computer Programs , 1970, J. Comput. Syst. Sci..

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

[5]  M. K. Srivas,et al.  Applying formal verification to a commercial microprocessor , 1995, Proceedings of ASP-DAC'95/CHDL'95/VLSI'95 with EDA Technofair.

[6]  David Cyrluk Microprocessor Verification in PVS - A Methodology and Simple Example , 1993 .

[7]  M. W. Shields An Introduction to Automata Theory , 1988 .

[8]  Jerry R. Burch Techniques for verifying superscalar microprocessors , 1996, DAC '96.

[9]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

[10]  Mark Horowitz,et al.  Architecture validation for processors , 1995, Proceedings 22nd Annual International Symposium on Computer Architecture.

[11]  Srinivas Devadas,et al.  Automatic Verification of Pipelined Microprocessors , 1994, 31st Design Automation Conference.

[12]  Paliath Narendran,et al.  Ground Temporal Logic: A Logic for Hardware Verification , 1994, CAV.

[13]  Szu-Tsung Cheng,et al.  Compiling Verilog into Automata , 1994 .

[14]  David Maier Review of "Introduction to automata theory, languages and computation" by John E. Hopcroft and Jeffrey D. Ullman. Addison-Wesley 1979. , 1980, SIGA.

[15]  Robert K. Brayton,et al.  Automatic Datapath Abstraction In Hardware Systems , 1995, CAV.

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

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

[18]  T. Shimizu,et al.  Formal verification of pipelined and superscalar processors , 1995, Proceedings of ASP-DAC'95/CHDL'95/VLSI'95 with EDA Technofair.

[19]  Francisco Corella Automated High-level Verification Against Clocked Algorithmic Specifications , 1993, CHDL.

[20]  Xudong Zhao,et al.  Word Level Symbolic Model Checking: A New Approach for Verifying Arithmetic Circuits , 1995 .

[21]  Mike Johnson,et al.  Superscalar microprocessor design , 1991, Prentice Hall series in innovative technology.

[22]  Szu-Tsung Cheng,et al.  HSIS: A BDD-Based Environment for Formal Verification , 1994, 31st Design Automation Conference.