Formal verification of a system-on-chip using computation slicing

Formal verification of systems-on-chips (SoCs) is an immense challenge to current industrial practice. Most existent formal verification techniques are extremely computation intensive and produce good results only when used on individual sub-components of SoCs. Without major modifications they are of little effectiveness in the SoC world. We attack the problem of SoC verification using an elegant abstraction mechanism, called computation slicing, and show that it enables effective temporal property verification on large designs. The technique targets a set of execution sequences, that is exhaustive with respect to an intended subset of system level properties, and automatically finds counter-example execution sequences in case of errors in the design. We have obtained exponential gains in reducing the global state space using a polynomial-time algorithm, and also applied a polynomial-time algorithm for checking global liveness and safety properties. We have successfully applied the technique to verify properties on two high level transaction based designs - the MSI cache coherence protocol and an admittedly academic SoC having a bus arbiter and a parameterizable number of devices connected to a PCI bus backbone.

[1]  Koushik Sen,et al.  Runtime safety analysis of multithreaded programs , 2003, ESEC/FSE-11.

[2]  Edmund M. Clarke,et al.  Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic , 1981, Logic of Programs.

[3]  Robert S. Boyer,et al.  Computational Logic , 1990, ESPRIT Basic Research Series.

[4]  Jayanta Bhadra,et al.  Automatic generation of design constraints in verifying high performance embedded dynamic circuits , 2002, Proceedings. International Test Conference.

[5]  Suraj C. Kothari,et al.  Program Slice Browser , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[6]  Grigore Rosu,et al.  Monitoring Java Programs with Java PathExplorer , 2001, RV@CAV.

[7]  Vijay K. Garg,et al.  Computation Slicing: Techniques and Theory , 2001, DISC.

[8]  Antti Valmari,et al.  A stubborn attack on state explosion , 1990, Formal Methods Syst. Des..

[9]  Vijay K. Garg,et al.  Partial Order Trace Analyzer (POTA) for Distributed Programs , 2003, RV@CAV.