Symbolic analysis and verification of CPA descriptions

CPA is a formalism for specifying the behavior of digital systems. It describes the input/output behavior, independent of the internal structure and operation of the system. The primary use for CPA is formal verification of digital designs, in which the behavior of a design is checked for consistency against the CPA specification. This paper describes audit, a system we are developing that formally verifies a digital design against a CPA specification. The design is represented as a state machine with multi-bit data registers that can be tested and changed on the state transitions. Whereas many verification programs that work at this level expand the data part of the machine into individual states, audit treats the registers as symbolic entities and uses symbolic simulation and first-order predicate calculus to reason about their effect on the behavior of the machine. Yet unlike other symbolic simulation programs, audit can automatically analyze the behavior of simple loops and can reason about sequences of inputs and outputs.

[1]  Edmund M. Clarke,et al.  Automatic Verification of Sequential Circuits Using Temporal Logic , 1986, IEEE Transactions on Computers.

[2]  Robert P. Kurshan,et al.  Analysis of digital circuits through symbolic reduction , 1991, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[3]  John A. Darringer The Application of Program Verification to Hardware Verification , 1979, DAC 1979.

[4]  Randal E. Bryant,et al.  Graph-Based Algorithms for Boolean Function Manipulation , 1986, IEEE Transactions on Computers.

[5]  James C. King,et al.  Proving Programs to be Correct , 1971, IEEE Transactions on Computers.

[6]  Srinivas Devadas,et al.  On The Verification of Sequential Machines at Differing Levels of Abstraction , 1987, 24th ACM/IEEE Design Automation Conference.

[7]  S. D. Crocker,et al.  State deltas: a formalism for representing segments of computation. , 1977 .

[8]  Tam-Anh Chu,et al.  Synthesis of self-timed VLSI circuits from graph-theoretic specifications , 1987 .

[9]  David Lee,et al.  Online minimization of transition systems (extended abstract) , 1992, STOC '92.

[10]  Gregor von Bochmann Hardware Specification with Temporal Logic: An Example , 1982, IEEE Transactions on Computers.

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

[12]  Warren A. Hunt FM8501: A Verified Microprocessor , 1994, Lecture Notes in Computer Science.

[13]  J.A. Darringer The Application of Program Verification to Hardware Verification , 1979, 16th Design Automation Conference.

[14]  Ben Wegbreit,et al.  The synthesis of loop predicates , 1974, CACM.

[15]  Kurt Keutzer,et al.  Design verification and reachability analysis using algebraic manipulation , 1991, [1991 Proceedings] IEEE International Conference on Computer Design: VLSI in Computers and Processors.

[16]  Edmund M. Clarke,et al.  Representing circuits more efficiently in symbolic model checking , 1991, 28th ACM/IEEE Design Automation Conference.

[17]  S. C. De Sarkar,et al.  Some Inference Rules for Integer Arithmetic for Verification of Flowchart Programs on Integers , 1989, IEEE Trans. Software Eng..

[18]  T.J. Kowalski,et al.  Specifying system behavior in CPA , 1991, [1991 Proceedings] IEEE International Conference on Computer Design: VLSI in Computers and Processors.

[19]  Larry Wos,et al.  Automated Reasoning: Introduction and Applications , 1984 .

[20]  Olivier Coudert,et al.  New ideas on symbolic manipulations of finite state machines , 1990, Proceedings., 1990 IEEE International Conference on Computer Design: VLSI in Computers and Processors.