Compositional reactive semantics of system-level designs written in SystemC and formal verification with predicate abstraction

In this paper, we propose a method to automatically extract an abstract representation of SystemC components into the SystemC-waiting state automata: a compositional formal model for verifying properties of SystemC at the transaction level within a delta-cycle. The main drawback of this model as mentioned in previous works was that it should be provided manually. In this paper, we propose a method to automatically build the SystemC waiting-state automata from the SystemC code. First, we select a subset of SystemC language and define its operational semantics that succinctly captures its reactive features and allows the specification of synchronous and asynchronous communications between the communicating components. Next, we symbolically execute the SystemC code using these semantics to generate the set of all possible traces and finally we use predicate abstraction to reduce the complexity of the generated graph during symbolic execution. We illustrate the use of symbolic execution and then predicate abstraction for two examples of SystemC programs: one that handles execution traces without loops and another one that handles loops.

[1]  Paula Herber,et al.  Model checking SystemC designs using timed automata , 2008, CODES+ISSS '08.

[2]  Andreas Podelski,et al.  Transition predicate abstraction and fair termination , 2005, POPL '05.

[3]  M. Schellekens,et al.  SystemC FL : An Infrastructure for a TLM Formal Verification Proposal ( with an overview on a tool set for practical formal verification of SystemC descriptions ) , 2006 .

[4]  Bruno Monsuez,et al.  Building SystemC waiting state automata , 2011 .

[5]  Ashraf Salem Formal semantics of synchronous SystemC , 2003, 2003 Design, Automation and Test in Europe Conference and Exhibition.

[6]  Wolfgang Rosenstiel,et al.  SystemC: methodologies and applications , 2003 .

[7]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[8]  Dong Wang,et al.  High level verification of control intensive systems using predicate abstraction , 2003, First ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2003. MEMOCODE '03. Proceedings..

[9]  Petru Eles,et al.  Formal Verification of SystemC Designs Using a Petri-Net Based Representation , 2006, Proceedings of the Design Automation & Test in Europe Conference.

[10]  Wolfgang Rosenstiel,et al.  The simulation semantics of SystemC , 2001, Proceedings Design, Automation and Test in Europe. Conference and Exhibition 2001.

[11]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[12]  P. Eles,et al.  Verification of embedded systems using a Petri net based representation , 2000, Proceedings 13th International Symposium on System Synthesis.

[13]  Paula Herber Automated HW/SW Co-Verification of SystemC Designs Using Timed Automata , 2012, it Inf. Technol..

[14]  David L. Dill,et al.  Experience with Predicate Abstraction , 1999, CAV.

[15]  Marco Roveri,et al.  Verifying SystemC: A software model checking approach , 2010, Formal Methods in Computer Aided Design.

[16]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.

[17]  Jifeng He,et al.  An Operational Semantics of an Event-Driven System-Level Simulator , 2006, 2006 30th Annual IEEE/NASA Software Engineering Workshop.

[18]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[19]  Rolf Drechsler,et al.  Reachability analysis for formal verification of SystemC , 2002, Proceedings Euromicro Symposium on Digital System Design. Architectures, Methods and Tools.

[20]  Cormac Flanagan,et al.  Predicate abstraction for software verification , 2002, POPL '02.

[21]  Joël Ouaknine,et al.  State/Event-Based Software Model Checking , 2004, IFM.

[22]  Ingolf H. Krüger,et al.  Compositional Reactive Semantics of SystemC and Verification with RuleBase , 2007 .

[23]  Nicolas Halbwachs,et al.  Outline of a Real Time Data Flow Language , 1985, RTSS.

[24]  Rolf Drechsler,et al.  Proving transaction and system-level properties of untimed SystemC TLM designs , 2010, Eighth ACM/IEEE International Conference on Formal Methods and Models for Codesign (MEMOCODE 2010).

[25]  A. Gawanmeh,et al.  An Executable Operational Semantics for SystemC using Abstract State Machines , 2004 .

[26]  Edmund M. Clarke,et al.  Counterexample-guided abstraction refinement , 2003, 10th International Symposium on Temporal Representation and Reasoning, 2003 and Fourth International Conference on Temporal Logic. Proceedings..

[27]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[28]  John A. Darringer The application of program verification techniques to hardware verification , 1979, DAC.

[29]  Daniel Kroening,et al.  Formal verification of SystemC by automatic hardware/software partitioning , 2005, Proceedings. Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2005. MEMOCODE '05..

[30]  Alex Groce,et al.  Predicate Abstraction with Minimum Predicates , 2003, CHARME.

[31]  Rolf Drechsler,et al.  Formal verification of LTL formulas for SystemC designs , 2003, Proceedings of the 2003 International Symposium on Circuits and Systems, 2003. ISCAS '03..

[32]  Todd Millstein,et al.  Automatic predicate abstraction of C programs , 2001, PLDI '01.

[33]  Avra Cohn,et al.  A Proof of Correctness of the Viper Microprocessor: The First Level , 1988 .

[34]  Moshe Y. Vardi,et al.  A Temporal Language for SystemC , 2008, 2008 Formal Methods in Computer-Aided Design.

[35]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[36]  K. Rustan M. Leino,et al.  Loop Invariants on Demand , 2005, APLAS.

[37]  H. K. Berg Formal methods of program verification and specification , 1982 .

[38]  Sofiène Tahar,et al.  Generating Finite State Machines from System C , 2006, Proceedings of the Design Automation & Test in Europe Conference.

[39]  Shin Nakajima,et al.  The SPIN Model Checker : Primer and Reference Manual , 2004 .

[40]  Florence Maraninchi,et al.  LusSy: a toolbox for the analysis of systems-on-a-chip at the transactional level , 2005, Fifth International Conference on Application of Concurrency to System Design (ACSD'05).

[41]  Bruno Monsuez,et al.  SystemC waiting state automata , 2012, Int. J. Crit. Comput. Based Syst..

[42]  Peter H. Schmitt,et al.  Inferring Invariants by Symbolic Execution , 2007, VERIFY.

[43]  Klaus Havelund,et al.  Using Runtime Analysis to Guide Model Checking of Java Programs , 2013, SPIN.

[44]  Wang Yi,et al.  UPPAAL - a Tool Suite for Automatic Verification of Real-Time Systems , 1996, Hybrid Systems.

[45]  K.L. Man SystemC/sup FL/: formalization of SystemC , 2004, Proceedings of the 12th IEEE Mediterranean Electrotechnical Conference (IEEE Cat. No.04CH37521).

[46]  Huibiao Zhu,et al.  Linking the semantics of a multithreaded discrete event simulation language , 2005 .

[47]  Christian Haubelt,et al.  Formalizing TLM with Communicating State Machines , 2006, FDL.