Combining Stream-Based and State-Based Verification Techniques

Algebraic verification techniques manipulate the structure of a circuit while preserving its behavior. Algorithmic verification techniques verify properties about the behavior of a circuit. These two techniques have complementary strengths: algebraic techniques are largely independent of the size of the state space, and algorithmic techniques are highly automated. It is desirable to exploit both in the same verification. However, algebraic techniques often use stream-based models of circuits, while algorithmic techniques use state-based models. We prove the consistency of stream- and state-based interpretations of circuit models, and show how stream-based verification results can be used hand-in-hand with state-based verification results. Our approach allows us to combine stream-based algebraic rewriting and state-based reasoning, using SMV and SVC, to verify a pipelined microarchitecture with speculative execution.

[1]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[2]  Robin Milner,et al.  An Algebraic Definition of Simulation Between Programs , 1971, IJCAI.

[3]  John T. O'Donnell,et al.  Generating Netlists from Executable Circuit Specifications , 1992, Functional Programming.

[4]  John Launchbury,et al.  Elementary Microarchitecture Algebra , 1999, CAV.

[5]  H.J.M. Meijer,et al.  Proceedings of the 1999 Haskell Workshop , 1999 .

[6]  Richard J. Boulton,et al.  Experience with Embedding Hardware Description Languages in HOL , 1992, TPCD.

[7]  Erwin Engeler,et al.  Logic of Programs , 1981, Lecture Notes in Computer Science.

[8]  David Park,et al.  Concurrency and Automata on Infinite Sequences , 1981, Theoretical Computer Science.

[9]  Pascal Raymond,et al.  The synchronous data flow programming language LUSTRE , 1991, Proc. IEEE.

[10]  Stephen J. Garland,et al.  Using transformations and verification in circuit design , 1992, Formal Methods Syst. Des..

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

[12]  Philip Wadler,et al.  Theorems for free! , 1989, FPCA.

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

[14]  Satnam Singh,et al.  Implementation of a Non-Standard Interpretation System , 1989, Functional Programming.

[15]  Edmund M. Clarke,et al.  Symbolic Model Checking: 10^20 States and Beyond , 1990, Inf. Comput..

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

[17]  R. BurchJ.,et al.  Symbolic model checking , 1992 .

[18]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[19]  Lawrence C. Paulson Introduction to Isabelle , 1999 .

[20]  Mary Sheeran,et al.  Lava: hardware design in Haskell , 1998, ICFP '98.

[21]  John C. Mitchell,et al.  Second-Order Logical Relations (Extended Abstract) , 1985, Logic of Programs.

[22]  Michael J. C. Gordon,et al.  Reachability Programming in HOL98 Using BDDs , 2000, TPHOLs.

[23]  Miriam Leeser,et al.  Reasoning About Pipelines with Structural Hazards , 1994, TPCD.

[24]  Koen Claessen,et al.  Observable Sharing for Functional Circuit Description , 1999, ASIAN.

[25]  John C. Mitchell,et al.  Foundations for programming languages , 1996, Foundation of computing series.

[26]  David L. Dill,et al.  Validity Checking for Combinations of Theories with Equality , 1996, FMCAD.

[27]  Steven D. Johnson,et al.  A Tactical Framework for Hardware Design , 1988 .

[28]  John Launchbury,et al.  Microprocessor specification in Hawk , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).