Scandal: Systemc analysis for nondeterminism anomalies

SystemC is the de facto standard language for electronic system level design and simulation. SystemC simulations may contain nondeterminism caused by dependencies on the process execution order (PEO) due to data dependencies of SystemC logical processes (LP) within delta-cycles. In practice, often this is not an issue, since simulation execution appears to be deterministic due to deterministic SystemC scheduler implementations. However, to satisfy the increasing need for simulation speed, parallel SystemC engines are being researched: With no fixed strict total order among LPs executed in parallel, nondeterministic behavior is more likely to surface and more difficult to debug, threatening the viability to use simulation especially for debugging use-cases. This work presents a new method to test for nondeterminism: Anomalies are detected by running a simulation twice in sequential simulation mode while systematically varying the PEO, and without the need for source code analysis. Feasibility is demonstrated with several case studies.

[1]  Florence Maraninchi,et al.  Automatic Generation of Schedulings for Improving the Test Coverage of Systems-on-a-Chip , 2006, 2006 Formal Methods in Computer Aided Design.

[2]  Fernando Herrera,et al.  Extension of the SystemC Kernel for Simulation Coverage , 2006, FDL.

[3]  Fredrik Larsson,et al.  Simics: A Full System Simulation Platform , 2002, Computer.

[4]  Thorsten Grotker,et al.  System Design with SystemC , 2002 .

[5]  Yuanyuan Zhou,et al.  Learning from mistakes: a comprehensive study on real world concurrency bug characteristics , 2008, ASPLOS.

[6]  Alain Greiner,et al.  Parallel simulation of systemC TLM 2.0 compliant MPSoC on SMP workstations , 2010, 2010 Design, Automation & Test in Europe Conference & Exhibition (DATE 2010).

[7]  Weiwei Chen,et al.  An optimizing compiler for out-of-order parallel ESL simulation exploiting instance isolation , 2012, 17th Asia and South Pacific Design Automation Conference.

[8]  Thomas Ball,et al.  Finding and Reproducing Heisenbugs in Concurrent Programs , 2008, OSDI.

[9]  Sandeep K. Shukla,et al.  SCGPSim: A fast SystemC simulator on GPUs , 2010, 2010 15th Asia and South Pacific Design Automation Conference (ASP-DAC).

[10]  Patrice Godefroid,et al.  Software Model Checking: The VeriSoft Approach , 2005, Formal Methods Syst. Des..

[11]  Kristof Denolf,et al.  SPRINT: A Tool to Generate Concurrent Transaction-Level Models from Sequential Code , 2007, EURASIP J. Adv. Signal Process..

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

[13]  Andreas Gerstlauer,et al.  Multi-core parallel simulation of System-level Description Languages , 2011, 16th Asia and South Pacific Design Automation Conference (ASP-DAC 2011).

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

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

[16]  Magdy S. Abadir,et al.  Predictive runtime verification of multi-processor SoCs in SystemC , 2008, 2008 45th ACM/IEEE Design Automation Conference.

[17]  Rainer Leupers,et al.  parSC: Synchronous parallel SystemC simulation on multi-core host architectures , 2010, 2010 IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS).