skip to main content
research-article

Fault Injection for Test-Driven Development of Robust SoC Firmware

Published:06 December 2017Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarCross RefCross Ref
  2. David Abrahams and Ralf W. Grosse-Kunstleve. 2003. Building hybrid systems with boost.python. C/C++ Users J. 21, 7 (2003).Google ScholarGoogle Scholar
  3. Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. 2007. Compilers: Principles, Techniques and Tools (2 ed.). Pearson Education. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarCross RefCross Ref
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. Steve Chamberlain. 1991. Libbfd, The Binary File Descriptor Library. Free Software Foundation.Google ScholarGoogle Scholar
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. Clang. 2008. Clang: a C language family frontend for LLVM. (May 2008). Retrieved from http://clang.llvm.org.Google ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. Freescale Semiconductors. 2013. Qorivva MPC5643L microcontroller data sheet. (2013).Google ScholarGoogle Scholar
  14. 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 ScholarGoogle ScholarCross RefCross Ref
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle Scholar
  17. James W. Grenning. 2011. Test-driven Development for Embedded C. Pragmatic Bookshelf.Google ScholarGoogle Scholar
  18. Paul Hamill. 2004. Unit Test Frameworks: Tools for High-quality Software Development. O’Reilly Media, Inc. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarCross RefCross Ref
  20. 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 ScholarGoogle Scholar
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. IP-XACT. 2014. IEEE standard 1685-2014 for IP-XACT. (2014).Google ScholarGoogle Scholar
  23. ISO 26262. 2011. Road Vehicles—Functional Safety. International Organization for Standardization (ISO), Geneva, Switzerland.Google ScholarGoogle Scholar
  24. Yue Jia and Mark Harman. 2011. An analysis and survey of the development of mutation testing. Trans. Softw. Eng. 37, 5 (2011). Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. Michael Kerrisk. 2016. Linux Programmer’s Manual: Backtrace. Retrieved from http://man7.org/linux/man-pages/man3/backtrace_symbols.3.html.Google ScholarGoogle Scholar
  28. 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 ScholarGoogle ScholarCross RefCross Ref
  29. Veit B. Kleeberger, Stefan Rutkowski, and Ruth Coppens. 2015. Design 8 verification of automotive SoC firmware. In Design Automation Conference (DAC’15). Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. Lech Madeyski. 2010. Test-driven Development: An Empirical Evaluation of Agile Practice. Springer-Verlag Berlin. Google ScholarGoogle ScholarCross RefCross Ref
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle Scholar
  34. MISRA-C. 2012. Guidelines for the Use of the C Language in Critical Systems. Motor Industry Software Reliability Association.Google ScholarGoogle Scholar
  35. 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 ScholarGoogle Scholar
  36. 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 ScholarGoogle ScholarCross RefCross Ref
  37. Kenneth H. Rosen. 2003. Discrete Mathematics and Its Applications (5th ed.). McGraw--Hill Science.Google ScholarGoogle Scholar
  38. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  39. Thomas Stober and Uwe Hansmann. 2010. Agile Software Development: Best Practices for Large Software Development Projects. Springer-Verlag, Berlin. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Gary Stringham. 2009. Hardware/Firmware Interface Design: Best Practices for Improving Embedded Systems Development. Newnes. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  42. Unity. 2015. UNITY: Unit Testing for C (especially Embedded Software). Retrieved from http://www.throwtheswitch.org/unity/.Google ScholarGoogle Scholar
  43. 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 ScholarGoogle ScholarCross RefCross Ref
  44. Vincent Zimmer, Jiming Sun, Marc Jones, and Stefan Reinauer. 2015. Embedded Firmware Solutions: Development Best Practices for the Internet of Things. Apress. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Fault Injection for Test-Driven Development of Robust SoC Firmware

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!