A framework for verification of transaction level models in systemc

A FRAMEWORK FOR VERIFICATION OF TRANSACTION LEVEL MODELS IN SYSTEMC By Reza Hajisheykhi Due to their increasing complexity, today’s SoC (System on Chip) systems are subject to a variety of faults (e.g., single-event upset, component crash, etc.), thereby their verification a highly important task of such systems. However, verification is a complex task in part due to the large scale of integration of SoC systems and different levels of abstraction provided by modern system design languages such as SystemC. To facilitate the verification of SoC systems, this dissertation proposes an approach for verifying inter-component communication protocols in SystemC Transaction Level Modeling (TLM) programs. SystemC is a widely accepted language and an IEEE standard. It includes a C++ library of abstractions and a run-time kernel that simulates the specified system, thereby enabling the early development of embedded software for the system that is being designed. To enable and facilitate the communication of different components in SystemC, the Open SystemC Initiative (OSCI) has proposed an interoperability layer (on top of SystemC) that enables transaction-based interactions between the components of a system, called Transaction Level Modeling (TLM). In order to verify SystemC TLM programs, we propose a method that includes five main steps, namely defining formal semantics, model extraction, fault modeling, model slicing, and model checking. In order to extract a formal model from the given SystemC TLM program, first we need to specify the requirements of developing a formal semantics that can capture the SystemC TLM programs while still benefiting from automation techniques for verification and/or synthesis. Based on this intuition, we utilize two model extraction approaches that consider the architecture of the given program too. In the first approach, we propose a set of transformation rules that helps us to extract a Promela model from the SystemC TLM program. In the second approach, we discuss how to extract a timed automata model from the given program. When we have the formal model, we model and inject several types of faults into the formal models extracted from the SystemC TLM programs. For injecting faults, we have developed a tool, called UFIT, that takes a formal model and a desirable fault type, and injects the faults into the model accordingly. The models extracted from the SystemC TLM program are usually very complex. Additionally, when we inject faults into these models they become even more complex. Hence, we utilize a model slicing technique to slice the models in the presence or absence of faults. We have developed a tool, called USlicer that takes a formal model along with a set of properties that needs to be verified, and generate a sliced model based on the given properties. The results show that verification time and the memory usage of the sliced version of the model is significantly smaller than that of the original model. Subsequently, in some cases where the verification of the original formal models is not even possible, using our model slicing technique makes the verification possible in a reasonable time and space. We demonstrate the proposed approach using several SystemC transaction level case studies. In each case study, we explain each step of our approach in detail and discuss the results and improvements in each of them. Copyright by REZA HAJISHEYKHI 2016 To my parents, Mastaneh and Dariush.

[1]  Ian G. Harris,et al.  Fault models and test generation for hardware-software covalidation , 2003, IEEE Design & Test of Computers.

[2]  Rolf Drechsler,et al.  HW/SW co-verification of embedded systems using bounded model checking , 2006, GLSVLSI '06.

[3]  Bashir M. Al-Hashimi,et al.  SystemC-Based Minimum Intrusive Fault Injection Technique with Improved Fault Representation , 2008, 2008 14th IEEE International On-Line Testing Symposium.

[4]  Wang Yi,et al.  Timed Automata: Semantics, Algorithms and Tools , 2003, Lectures on Concurrency and Petri Nets.

[5]  Rolf Drechsler,et al.  Automatic TLM Fault Localization for SystemC , 2012, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[6]  Marius Bozga,et al.  Using static analysis to improve automatic test generation , 2003, International Journal on Software Tools for Technology Transfer.

[7]  Paula Herber,et al.  Transforming SystemC Transaction Level Models into UPPAAL timed automata , 2011, Ninth ACM/IEEE International Conference on Formal Methods and Models for Codesign (MEMPCODE2011).

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

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

[10]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[11]  Daniel Kroening,et al.  Race analysis for SystemC using model checking , 2008, 2008 IEEE/ACM International Conference on Computer-Aided Design.

[12]  Marco Roveri,et al.  Kratos - A Software Model Checker for SystemC , 2011, CAV.

[13]  Keith A. Bartlett,et al.  A note on reliable full-duplex transmission over half-duplex links , 1969, Commun. ACM.

[14]  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.

[15]  Agata Janowska,et al.  Slicing Timed Systems , 2003, Fundam. Informaticae.

[16]  Rolf Drechsler,et al.  CheckSyC: an efficient property checker for RTL SystemC designs , 2005, 2005 IEEE International Symposium on Circuits and Systems.

[17]  Ali Ebnenasir,et al.  A framework for verification of SystemC TLM programs with model slicing: A case study , 2016, 2016 53nd ACM/EDAC/IEEE Design Automation Conference (DAC).

[18]  Ali Ebnenasir,et al.  Analysis of Permanent Faults in Transaction Level SystemC Models , 2014, 2014 IEEE 34th International Conference on Distributed Computing Systems Workshops (ICDCSW).

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

[20]  Sofiène Tahar,et al.  An Approach for the Verification of SystemC Designs Using AsmL , 2005, ATVA.

[21]  Diego Garbervetsky,et al.  Improving the Verification of Timed Systems Using Influence Information , 2002, TACAS.

[22]  Marco Bernardo,et al.  Formal methods for the design of real-time systems : International School on Formal Methods for the Design of Computer, Communication and Software Systems, SFM-RT 2004, Bertinoro, Italy, September 13-18, 2004 : Revised lectures , 2004 .

[23]  Kevin Marquet,et al.  Efficient Encoding of SystemC/TLM in Promela , 2011 .

[24]  Antonio da Silva Farina,et al.  On the Use of Dynamic Binary Instrumentation to Perform Faults Injection in Transaction Level Models , 2009 .

[25]  Florence Maraninchi,et al.  A SystemC/TLM Semantics in Promelaand Its Possible Applications , 2007, SPIN.

[26]  Nicolas Halbwachs,et al.  Programming and Verifying Real-Time Systems by Means of the Synchronous Data-Flow Language LUSTRE , 1992, IEEE Trans. Software Eng..

[27]  Gérard Berry,et al.  The foundations of Esterel , 2000, Proof, Language, and Interaction.

[28]  Cristiana Bolchini,et al.  Multi-level fault modeling for transaction-level specifications , 2009, GLSVLSI '09.

[29]  Ka Lok Man Formal Communication Semantics of SystemCFL , 2005, DSD.

[30]  Ali Ebnenasir,et al.  UFIT: A Tool for Modeling Faults in UPPAAL Timed Automata , 2015, NFM.

[31]  Rajesh Gupta,et al.  Partial order reduction for scalable testing of SystemC TLM designs , 2008, 2008 45th ACM/IEEE Design Automation Conference.

[32]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[33]  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).

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

[35]  Agata Janowska,et al.  Slicing of Timed Automata with Discrete Data , 2006, Fundam. Informaticae.

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

[37]  Anish Arora,et al.  Automating the Addition of Fault-Tolerance , 2000, FTRTFT.

[38]  Kim G. Larsen,et al.  Static Guard Analysis in Timed Automata Verification , 2003, TACAS.

[39]  Matthew B. Dwyer,et al.  Slicing Software for Model Construction , 2000, High. Order Symb. Comput..

[40]  Gerard J. Holzmann,et al.  The Model Checker SPIN , 1997, IEEE Trans. Software Eng..

[41]  John Hatcliff,et al.  Slicing concurrent Java programs using Indus and Kaveri , 2007, International Journal on Software Tools for Technology Transfer.

[42]  Ka Lok Man,et al.  SC2SCFL: Automated SystemC to SystemCFL Translation , 2007, SAMOS.

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

[44]  Conrado Daws,et al.  Reducing the number of clock variables of timed automata , 1996, RTSS.

[45]  Wang Yi,et al.  Uppaal in a nutshell , 1997, International Journal on Software Tools for Technology Transfer.

[46]  Thomas A. Henzinger,et al.  Automatic symbolic verification of embedded systems , 1993, 1993 Proceedings Real-Time Systems Symposium.

[47]  Lynette I. Millett,et al.  Issues in slicing PROMELA and its applications to model checking, protocol understanding, and simulation , 2000, International Journal on Software Tools for Technology Transfer.

[48]  Thomas A. Henzinger,et al.  Symbolic Model Checking for Real-Time Systems , 1994, Inf. Comput..

[49]  Donald E. Thomas,et al.  Algorithmic and Register-Transfer Level Synthesis: The System Architect's Workbench , 1989 .

[50]  Ali Ebnenasir,et al.  Facilitating the Design of Fault Tolerance in Transaction Level SystemC Programs , 2012, ICDCN.

[51]  Matthieu Moy,et al.  Techniques and Tools for the Verification of Systems-on-a-Chip at the Transaction Level. (Techniques et outils pour la vérification de Systèmes-sur-Puce au niveau transaction) , 2005 .

[52]  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..

[53]  Ravishankar K. Iyer,et al.  Measurement and modeling of computer reliability as affected by system activity , 1986, TOCS.

[54]  Sandeep K. Shukla,et al.  Model-Driven Validation of SystemC Designs , 2007, 2007 44th ACM/IEEE Design Automation Conference.

[55]  Mikel Azkarate-askasua,et al.  Codesign and Simulated Fault Injection of Safety-Critical Embedded Systems Using SystemC , 2010, 2010 European Dependable Computing Conference.

[56]  Rolf Drechsler,et al.  HW/SW Co-Verification of a RISC CPU using Bounded Model Checking , 2005, 2005 Sixth International Workshop on Microprocessor Test and Verification.

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

[58]  Alper Sen Mutation Operators for Concurrent SystemC Designs , 2009, 2009 10th International Workshop on Microprocessor Test and Verification.

[59]  Chung-Hsien Hsu,et al.  SoC-level risk assessment using FMEA approach in system design with SystemC , 2009, 2009 IEEE International Symposium on Industrial Embedded Systems.

[60]  Heinrich Theodor Vierhaus,et al.  Fault Injection Techniques and their Accelerated Simulation in SystemC , 2007, 10th Euromicro Conference on Digital System Design Architectures, Methods and Tools (DSD 2007).

[61]  Rajeev Alur,et al.  A Theory of Timed Automata , 1994, Theor. Comput. Sci..

[62]  Ali Ebnenasir,et al.  Automatic synthesis of fault-tolerance , 2005 .

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

[64]  Kevin Marquet,et al.  PinaVM: a systemC front-end based on an executable intermediate representation , 2010, EMSOFT '10.

[65]  Ali Ebnenasir,et al.  Modeling and analyzing timing faults in transaction level SystemC programs , 2013, NoCArc '13.

[66]  Rolf Drechsler,et al.  Checkers for SystemC designs , 2004, Proceedings. Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2004. MEMOCODE '04..

[67]  Ali Ebnenasir,et al.  Evaluating the Effect of Faults in SystemC TLM Models Using UPPAAL , 2014, SEFM.

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