Skip to main content
Log in

Scalable and Optimized Hybrid Verification of Embedded Software

  • Published:
Journal of Electronic Testing Aims and scope Submit manuscript

Abstract

The verification of embedded software has become an important subject over the last years. However, neither standalone verification approaches, like simulation-based/formal verification, nor state-of-the-art semiformal verification approaches are able to verify large and complex embedded software with or without hardware dependencies. This work presents a scalable hybrid verification approach for the verification of embedded software using a semiformal algorithm optimized with static parameter assignment (SPA). These algorithms and methodologies like SPA and counterexample guided simulation are used to combine simulation-based and formal verification in a new way. SPA offers a method to interact between dynamic and static verification approaches based on an automated ranking determination of possible function parameters according to the impact on the model size. Furthermore, SPA inserts initialization code for specific function parameters into the source code under test and supports model building and optimization algorithms to reduce the state space. We have successfully applied this optimized hybrid verification methodology to embedded software applications: Motorola’s Powerstone Benchmark suite and a complex automotive industrial embedded software. The results show that our approach scales better than standalone software model checkers to reach deep state spaces.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5

Similar content being viewed by others

References

  1. Ball T, Majumdar R, Millstein T, Rajamani SK (2001) Automatic predicate abstraction of C programs. SIGPLAN Not 36:203–213

    Article  Google Scholar 

  2. Barrett C, Sebastiani R, Seshia SA, Tinelli C (2009) Satisfiability modulo theories, ser. Frontiers in artificial intelligence and applications, vol 185, ch. 26. IOS Press, pp 825–885

  3. Behrend J, Lettnin D, Heckler P, Ruf J, Kropf T, Rosenstiel W (2011) Scalable hybrid verification for embedded software. In: DATE ’11: Proceedings of the conference on design, automation and test in Europe, pp 1–6

  4. Beyer D, Henzinger TA, Jhala R, Majumdar R (2007) The software model checker BLAST: applications to software engineering. Int J Softw Tools Technol Transfer

  5. Biere A, Cimatti A, Clarke EM, Strichman O, Zhu Y (2003) Bounded model checking. In: Zelkowitz M (ed) Highly dependable software, ser. Advances in computers, vol 58. Academic Press

  6. Cadar C, Ganesh V, Pawlowski PM, Dill DL, Engler DR (2006) Exe: automatically generating inputs of death. In: Proceedings of the 13th ACM conference on computer and communications security, ser. CCS ’06. ACM, New York, pp 322–335. doi:10.1145/1180405.1180445

    Google Scholar 

  7. Cadar C, Dunbar D, Engler D (2008) KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In: Proceedings of the 8th USENIX conference on operating systems design and implementation, ser. OSDI’08. USENIX Association, Berkeley, pp 209–224

    Google Scholar 

  8. Clarke E, Grumberg O, Long D (1994) Model checking and abstraction. ACM Trans Program Lang Syst 16(5):1512–1542

    Article  Google Scholar 

  9. Clarke E, Grumberg O, Hamaguchi K (1994) Another look at LTL model checking. In: Dill DL (ed) Conference on computer aided verification (CAV), ser. Lecture Notes in Computer Science, vol 818. Springer, Stanford, pp 415–427

    Google Scholar 

  10. Clarke E, Grumberg O, Jha S, Lu Y, Veith H (2003) Counterexample-guided abstraction refinement for symbolic model checking. J ACM 50:752–794

    Article  MathSciNet  Google Scholar 

  11. Clarke E, Kroening D, Yorav K (2003) Behavioral consistency of C and verilog programs using bounded model checking. In: Proceedings of the 40th annual design automation conference, DAC ’03. ACM, New York, pp 368–371

    Google Scholar 

  12. Clarke E, Kroening D, Lerda F (2004) A tool for checking ANSI-C programs. In: In tools and algorithms for the construction and analysis of systems. Springer, pp 168–176

  13. Clarke E, Kroening D, Sharygina N, Yorav K (2005) SATABS: SAT-based predicate abstraction for ANSI-C. In: TACAS, 3440. Springer, pp 570–574

  14. Cordeiro L, Fischer B, Marques-Silva J (2009) SMT-based bounded model checking for embedded ANSI-C software. In: Proceedings of the 2009 IEEE/ACM international conference on automated software engineering, ASE ’09. IEEE Computer Society, Washington, pp 137–148

    Book  Google Scholar 

  15. Cordeiro L, Fischer B, Chen H, Marques-Silva J (2009) Semiformal verification of embedded software in medical devices considering stringent hardware constraints. Second Int Conf Embed Softw Syst:396–403

  16. Correnson L, Signoles J (2012) Combining analyses for C program verification. In: Stoelinga M, Pinger R (eds), Formal methods for industrial critical systems, ser. Lecture Notes in Computer Science, vol 7437. Springer, Berlin, pp 108–130

    Google Scholar 

  17. Cuoq P, Kirchner F, Kosmatov N, Prevosto V, Signoles J, Yakobowski B (2012) Frama-c: a software analysis perspective. In: Proceedings of the 10th international conference on software engineering and formal methods, ser. SEFM’12. Springer, Berlin, pp 233–247

    Google Scholar 

  18. Di Guglielmo G, Fummi F, Pravadelli G, Soffia S, Roveri M (2010) Semi-formal functional verification by EFSM traversing via NuSMV. In: High level design validation and test workshop (HLDVT), 2010 IEEE International, pp 58–65

  19. Di Guglielmo G, Fujita M, Fummi F, Pravadelli G, Soffia S (2011) EFSM-based model-driven approach to concolic testing of system-level design. In: 2011 9th IEEE/ACM international conference on formal methods and models for codesign (MEMOCODE). pp 201–209

  20. Edwards SA, Ma T, Damiano R (2001) Using a hardware model checker to verify software. In: Proceedings of the 4th international conference on ASIC (ASICON)

  21. Flanagan C, Qadeer S (2002) Predicate abstraction for software verification. SIGPLAN Not 37:191–202

    Article  Google Scholar 

  22. GNU (2010) Gcov coverage. [Online]. Available: http://gcc.gnu.org/onlinedocs/gcc/Gcov.html

  23. Godefroid P, Klarlund N, Sen K (2005) Dart: directed automated random testing. SIGPLAN Not 40 (6):213–223. doi:10.1145/1064978.1065036

    Article  Google Scholar 

  24. Gorai S, Biswas S, Bhatia L, Tiwari P, Mitra RS (2006) Directed-simulation assisted formal verification of serial protocol and bridge. In: Proceedings of the 43rd annual design automation conference, DAC ’06. ACM, New York , pp 731–736

    Book  Google Scholar 

  25. Henzinger TA, Jhala R, Majumdar R (2005) The BLAST software verification system. Model Checking Softw 3639:25–26

    Article  Google Scholar 

  26. Jerraya AA, Yoo S, Verkest D, Wehn N (2003) Embedded Software for SoC. Kluwer Academic Publishers, Norwell

    Book  MATH  Google Scholar 

  27. Kirchner F, Kosmatov N, Prevosto V, Signoles J, Yakobowski B (2015) Frama-c: a software analysis perspective. Form Asp Comput:1–37

  28. Kroening D (2009) Bounded model checking for ANSI-C. [Online]. Available: http://www.cprover.org/cbmc/

  29. Lattner C, Adve V (2005) The llvm compiler framework and infrastructure tutorial. In: Eigenmann R, Li Z, Midkiff S (eds) Languages and compilers for high performance computing, ser. Lecture notes in computer science, vol 3602. Springer, Berlin, pp 15–16

    Google Scholar 

  30. Lettnin D, Nalla PK, Ruf J, Kropf T, Rosenstiel W, Kirsten T, Schönknecht V, Reitemeyer S (2008) Verification of temporal properties in automotive embedded software. In: DATE ’08: proceedings of the conference on design, automation and test in Europe. ACM, New York , pp 164–169

    Google Scholar 

  31. Lettnin D, Nalla PK, Behrend J, Ruf J, Gerlach J, Kropf T, Rosenstiel W, Schönknecht V, Reitemeyer S (2009) Semiformal verification of temporal properties in automotive hardware dependent software. In: DATE ’09: Proceedings of the conference on design, automation and test in Europe, pp 1214–1217

  32. Malik A, Moyer B, Cermak D (2000) The M’CORE(TM) M340 Unified Cache Architecture. In: Proceedings of the 2000 international conference on computer design. pp 577–580

  33. MISRA MISRA - The Motor Industry Software Reliability Association,” 2000. [Online]. Available: http://www.misra.org.uk/

  34. Nanshi K, Somenzi F (2006) Guiding simulation with increasingly refined abstract traces. In: DAC ’06: Proceedings of the 43rd annual Design Automation Conference. ACM, New York , pp 737–742

    Book  Google Scholar 

  35. Necula GC, McPeak S, Rahul SP, Weimer W (2002) CIL: intermediate language and tools for analysis and transformation of C programs. Comput Complex:213–228

  36. NEC NEC Electronics (Europe) GmbH http://www.eu.necel.com/

  37. Open SystemC Initiative (2003) SystemC Verification Standard Library 1.0p Users Manual

  38. Ruf J., Peranandam PM, Kropf T, Rosenstiel W (2003) Bounded property checking with symbolic simulation. In: FDL

  39. Sen K, Marinov D, Agha G (2005) CUTE: a concolic unit testing engine for C. SIGSOFT Softw Eng Notes 30(5):263–272. doi:10.1145/1095430.1081750

    Article  Google Scholar 

  40. Shea R Call graph visualization for C and TinyOS programs, Dept. of Computer Science School of Engineering UCLA, 2009. [Online]. Available: http://www.ambleramble.org/callgraph/index.html

  41. Tillmann N, De Halleux J (2008) Pex: White box test generation for.net. In: Proceedings of the 2Nd international conference on tests and proofs, ser. TAP’08. [Online]. Available: http://dl.acm.org/citation.cfm?id=1792786.1792798. Springer, Berlin, pp 134–153

    Google Scholar 

  42. Weiss RJ, Ruf J, Kropf T, Rosenstiel W (2005) Efficient and customizable integration of temporal properties into SystemC. Forum on specification & Design Languages (FDL):271–282

Download references

Acknowledgments

The authors would like to thank Edgar Auerswald, Patrick Koecher and Sebastian Welsch for supporting the development of the VERIFYR platform.

Conflict of interests

The authors declare no conflict of interest.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jörg Behrend.

Additional information

Responsible Editor: L. M. Bolzani Poehls

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Behrend, J., Lettnin, D., Grünhage, A. et al. Scalable and Optimized Hybrid Verification of Embedded Software. J Electron Test 31, 151–166 (2015). https://doi.org/10.1007/s10836-015-5518-4

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10836-015-5518-4

Keywords

Navigation