Abstract
Robustness against errors in hardware must be considered from the very beginning of safety-critical system-on-chip firmware design. Therefore, we present fault injection for test-driven development (TDD) of robust firmware. As TDD is based on instant feedback to the designer, fault injection must execute within few minutes. In contrast to state-of-the-art approaches, we avoid long simulation scenarios and runtimes by injecting faults at the unit level and utilizing host-compiled simulation. Further, three static bit-level analyses of firmware source code and hardware specification reduce the fault set significantly. This accelerates fault injection by several orders of magnitude and enables robustness-aware TDD.
- Samar Abdi. 2010. Automatic generation of host-compiled timed TLMs for high level design. In High Level Design Validation and Test Workshop (HLDVT’10).Google Scholar
Cross Ref
- David Abrahams and Ralf W. Grosse-Kunstleve. 2003. Building hybrid systems with boost.python. C/C++ Users J. 21, 7 (2003).Google Scholar
- Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. 2007. Compilers: Principles, Techniques and Tools (2 ed.). Pearson Education. Google Scholar
Digital Library
- Raul Barbosa, Jonny Vinter, Peter Folkesson, and Johan Karlsson. 2005. Assembly-level pre-injection analysis for improving fault injection efficiency. In Dependable Computing-EDCC 5. Springer. Google Scholar
Digital Library
- Alfredo Benso, Maurizio Rebaudengo, Leonardo Impagliazzo, and Pietro Marmo. 1998. Fault-list collapsing for fault-injection experiments. In Reliability and Maintainability Symposium (RAMS’98).Google Scholar
Cross Ref
- Suhas Chakravarty, Zhuoran Zhao, and Andreas Gerstlauer. 2013. Automated, retargetable back-annotation for host compiled performance and power modeling. In Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS’13). Google Scholar
Digital Library
- Steve Chamberlain. 1991. Libbfd, The Binary File Descriptor Library. Free Software Foundation.Google Scholar
- Hyungmin Cho, Shahrzad Mirkhani, Chen-Yong Cher, Jacob A. Abraham, and Subhasish Mitra. 2013. Quantitative evaluation of soft error injection techniques for robust system design. In Design Automation Conference (DAC’13). ACM. Google Scholar
Digital Library
- Clang. 2008. Clang: a C language family frontend for LLVM. (May 2008). Retrieved from http://clang.llvm.org.Google Scholar
- Björn Döbel, Hermann Härtig, and Michael Engel. 2012. Operating system support for redundant multithreading. In Conference on Embedded Software (EMSOFT’12). Google Scholar
Digital Library
- Joan G. Dyer, Mark Lindemann, Ronald Perez, Reiner Sailer, Leendert van Doorn, and Sean W. Smith. 2001. Building the IBM 4758 secure coprocessor. Computer 34, 10 (2001). Google Scholar
Digital Library
- Mojtaba Ebrahimi, Nour Sayed, Maryam Rashvand, and Mehdi B. Tahoori. 2015. Fault injection acceleration by architectural importance sampling. In Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS’15). Google Scholar
Digital Library
- Freescale Semiconductors. 2013. Qorivva MPC5643L microcontroller data sheet. (2013).Google Scholar
- Darshan Gandhi, Andreas Gerstlauer, and Lidiya John. 2014. FastSpot: Host-compiled thermal estimation for early design space exploration. In International Symposium on Quality Electronic Design (ISQED’14).Google Scholar
Cross Ref
- Georg Georgakos, Ulf Schlichtmann, Reinhard Schneider, and Samarjit Chakraborty. 2013. Reliability challenges for electric vehicles: From devices to architecture and systems software. In Design Automation Conference (DAC’13). Google Scholar
Digital Library
- Simon Graham. 2004. Writing drivers for reliability, robustness and fault tolerant systems. Retrieved from https://download.microsoft.com/download/5/b/5/5b5bec17-ea71-4653-9539-204a672f11cf/FTdrv.doc.Google Scholar
- James W. Grenning. 2011. Test-driven Development for Embedded C. Pragmatic Bookshelf.Google Scholar
- Paul Hamill. 2004. Unit Test Frameworks: Tools for High-quality Software Development. O’Reilly Media, Inc. Google Scholar
Digital Library
- Ali Hayek and Josef Börcsök. 2014. Safety chips in light of the standard IEC 61508: survey and analysis. In International Symposium on Fundamentals of Electrical Engineering (ISFEE’14).Google Scholar
Cross Ref
- Carles Hernandez and Jaume Abella. 2015. Timely error detection for effective recovery in light-lockstep automotive systems. Transactions on Computer-Aided Design of Integrated Circuits and Systems (TCAD’15) 34, 11 (Nov. 2015).Google Scholar
- Andrea Höller, Georg Macher, Tobias Rauter, Johannes Iber, and Christian Kreiner. 2015. A virtual fault injection framework for reliability-aware software development. In Dependable Systems and Networks Workshops (DSN-W’15).Google Scholar
Digital Library
- IP-XACT. 2014. IEEE standard 1685-2014 for IP-XACT. (2014).Google Scholar
- ISO 26262. 2011. Road Vehicles—Functional Safety. International Organization for Standardization (ISO), Geneva, Switzerland.Google Scholar
- Yue Jia and Mark Harman. 2011. An analysis and survey of the development of mutation testing. Trans. Softw. Eng. 37, 5 (2011). Google Scholar
Digital Library
- Asim Kadav, Matthew J. Renzelmann, and Michael M. Swift. 2009. Tolerating hardware device failures in software. In Symposium on Operating Systems Principles (SOSP’09). Google Scholar
Digital Library
- David Kammler, Junqing Guan, Gerd Ascheid, Rainer Leupers, and Heinrich Meyr. 2009. A fast and flexible platform for fault injection and evaluation in Verilog-based simulations. In Conference on Secure Software Integration and Reliability Improvement (SSIRI). Google Scholar
Digital Library
- Michael Kerrisk. 2016. Linux Programmer’s Manual: Backtrace. Retrieved from http://man7.org/linux/man-pages/man3/backtrace_symbols.3.html.Google Scholar
- Veit B. Kleeberger, Daniel Mueller-Gritschneder, and Ulf Schlichtmann. 2013. Technology-aware system failure analysis in the presence of soft errors by mixture importance sampling. In International Symposium on Defect and Fault Tolerance in VLSI and Nanotechnology Systems (DFT’13).Google Scholar
Cross Ref
- Veit B. Kleeberger, Stefan Rutkowski, and Ruth Coppens. 2015. Design 8 verification of automotive SoC firmware. In Design Automation Conference (DAC’15). Google Scholar
Digital Library
- Kun Lu, Daniel Müller-Gritschneder, and Ulf Schlichtmann. 2012. Accurately timed transaction level models for virtual prototyping at high abstraction level. In Conference on Design, Automation and Test in Europe (DATE’12). Google Scholar
Digital Library
- Lech Madeyski. 2010. Test-driven Development: An Empirical Evaluation of Agile Practice. Springer-Verlag Berlin. Google Scholar
Cross Ref
- Petra R. Maier, Veit Kleeberger, Daniel Mueller-Gritschneder, and Ulf Schlichtmann. 2016a. Fault injection at host-compiled level with static fault set reduction for SoC firmware robustness testing. In Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS’16). Google Scholar
Digital Library
- Petra R. Maier, Daniel Müller-Gritschneder, Ulf Schlichtmann, and Veit B. Kleeberger. 2016b. Embedded software reliability testing by unit-level fault injection. In Asia and South Pacific Design Automation Conference (ASP-DAC’16).Google Scholar
- MISRA-C. 2012. Guidelines for the Use of the C Language in Critical Systems. Motor Industry Software Reliability Association.Google Scholar
- Oracle. 2010. Oracle Solaris 10 Software Developer Documentation - Writing Device Drivers. Retrieved from https://docs.oracle.com/cd/E18752_01/pdf/816-4854.pdf.Google Scholar
- Diego Rodrigues, Ghazaleh Nazarian, Álvaro Moreira, Luigi Carro, and Georgi Gaydadjiev. 2015. A non-conservative software-based approach for detecting illegal CFEs caused by transient faults. In Symposium on Defect and Fault Tolerance in VLSI and Nanotechnology Systems (DFTS’15).Google Scholar
Cross Ref
- Kenneth H. Rosen. 2003. Discrete Mathematics and Its Applications (5th ed.). McGraw--Hill Science.Google Scholar
- Stefan Stattelmann, Gernot Gebhard, Christoph Cullmann, Oliver Bringmann, and Wolfgang Rosenstiel. 2012. Hybrid source-level simulation of data caches using abstract cache models. In Conference on Design, Automation and Test in Europe (DATE’12). Google Scholar
Digital Library
- Thomas Stober and Uwe Hansmann. 2010. Agile Software Development: Best Practices for Large Software Development Projects. Springer-Verlag, Berlin. Google Scholar
Digital Library
- Gary Stringham. 2009. Hardware/Firmware Interface Design: Best Practices for Improving Embedded Systems Development. Newnes. Google Scholar
Digital Library
- Jun Sun, Wanghong Yuan, Mahesh Kallahalla, and Nayeem Islam. 2005. HAIL: A language for easy and correct device access. In Conference on Embedded Software (EMSOFT’05). Google Scholar
Digital Library
- Unity. 2015. UNITY: Unit Testing for C (especially Embedded Software). Retrieved from http://www.throwtheswitch.org/unity/.Google Scholar
- Zheng Wang, Chao Chen, and Anupam Chattopadhyay. 2013. Fast reliability exploration for embedded processors via high-level fault injection. In International Symposium on Quality Electronic Design (ISQED’13).Google Scholar
Cross Ref
- Vincent Zimmer, Jiming Sun, Marc Jones, and Stefan Reinauer. 2015. Embedded Firmware Solutions: Development Best Practices for the Internet of Things. Apress. Google Scholar
Digital Library
Index Terms
Fault Injection for Test-Driven Development of Robust SoC Firmware
Recommendations
Fault injection at host-compiled level with static fault set reduction for SoC firmware robustness testing
CODES '16: Proceedings of the Eleventh IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System SynthesisDecreasing hardware reliability makes robust firmware imperative for safety-critical applications. Hence, ensuring correct handling of errors in peripherals is a key objective during firmware design. To adequately support robustness considerations of ...
Software-Implemented Fault Injection at Firmware Level
DEPEND '10: Proceedings of the 2010 Third International Conference on DependabilitySoftware-implemented fault injection is an established method to emulate hardware faults in computer systems. Existing approaches typically extend the operating system by special drivers or change the application under test. We propose a novel approach ...
Fault Injection and Dependability Evaluation of Fault-Tolerant Systems
The authors describe a dependability evaluation method based on fault injection that establishes the link between the experimental evaluation of the fault tolerance process and the fault occurrence process. The main characteristics of a fault injection ...






Comments