Automated Redirection of Hardware Accesses for Host-Compiled Software Simulation

For host-compiled software simulation it is required that accesses from the target software to memory-mapped hardware are identified, so that they can be redirected to a virtual prototype. This is straight-forward if the software uses a hardware abstraction layer as interface. If such an interface is not used by existing or third-party source code, the rewriting of the code for host-compiled simulation involves a considerable manual effort. In this paper, we present a method to automate this process with the help of a symbolic execution engine. With our approach the time to adjust software for host-compilation is significantly reduced. We show that the most memory-mapped hardware accesses are correctly rewritten in a real-world application by comparing recorded access traces on a virtual prototype. Additionally, a test suite has been developed to cover edae-cases,

[1]  Ulf Schlichtmann,et al.  The Extendable Translating Instruction Set Simulator (ETISS) Interlinked with an MDA Framework for Fast RISC Prototyping , 2017, 2017 International Symposium on Rapid System Prototyping (RSP).

[2]  Heinrich Meyr,et al.  Compiled HW/SW co-simulation , 1996, DAC '96.

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

[4]  Roberto Baldoni,et al.  A Survey of Symbolic Execution Techniques , 2016, ACM Comput. Surv..

[5]  Andreas Gerstlauer,et al.  Host-compiled simulation of multi-core platforms , 2010, Proceedings of 2010 21st IEEE International Symposium on Rapid System Protyping.

[6]  Laurie A. Williams,et al.  Test-driven development as a defect-reduction practice , 2003, 14th International Symposium on Software Reliability Engineering, 2003. ISSRE 2003..

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

[8]  Ulf Schlichtmann,et al.  Control-Flow-Driven Source Level Timing Annotation for Embedded Software Models on Transaction Level , 2011, 2011 14th Euromicro Conference on Digital System Design.

[9]  Jian Zhang,et al.  A Memory Model for Static Analysis of C Programs , 2010, ISoLA.

[10]  Frédéric Pétrot,et al.  Native MPSoC co-simulation environment for software performance estimation , 2009, CODES+ISSS '09.

[11]  Cesare Tinelli,et al.  Satisfiability Modulo Theories , 2021, Handbook of Satisfiability.

[12]  Lyn D. English,et al.  Problem solving for the 21st century , 2010 .

[13]  Frédéric Pétrot,et al.  Efficient Implementation of Native Software Simulation for MPSoC , 2008, 2008 Design, Automation and Test in Europe.

[14]  Andreas Gerstlauer,et al.  Host-Compiled Simulation , 2017, Handbook of Hardware/Software Codesign.

[15]  Wolfgang Rosenstiel,et al.  High-performance timing simulation of embedded software , 2008, 2008 45th ACM/IEEE Design Automation Conference.