Efficient Symbolic Simulation of Low Level Software

Symbolic execution has long been a staple technique for formal hardware verification. Its application to software requires methods for dealing with software specific complexities. In this paper we elaborate methods for the efficient symbolic simulation of embedded software; some methods are new, others are improvements of existing methods. Using these techniques we have been able to symbolically execute real life microcode of thousands of lines, allowing formal methods to become an integral part of microcode validation in Intel Corporation.

[1]  Carl Pixley,et al.  Constructing Efficient Formal Models from High-Level Descriptions Using Symbolic Simulation , 2005, International Journal of Parallel Programming.

[2]  Alan J. Hu,et al.  Embedded Software Verification Using Symbolic Execution and Uninterpreted Functions , 2006, International Journal of Parallel Programming.

[3]  Shin-ichi Minato Generation of BDDs from hardware algorithm descriptions , 1996, Proceedings of International Conference on Computer Aided Design.

[4]  Cormac Flanagan,et al.  Avoiding exponential explosion: generating compact verification conditions , 2001, POPL '01.

[5]  Randal E. Bryant,et al.  Symbolic simulation—techniques and applications , 1990, DAC '90.

[6]  A. Hu,et al.  Automatic formal verification of dsp software , 2000, Proceedings 37th Design Automation Conference.

[7]  Alan J. Hu,et al.  Structural Abstraction of Software Verification Conditions , 2007, CAV.

[8]  Shin-ichi Minato Generation of BDDs from hardware algorithm descriptions , 1996, ICCAD 1996.

[9]  Eli Singerman,et al.  Embedded Software Validation: Applying Formal Techniques for Coverage and Test Generation , 2006, Seventh International Workshop on Microprocessor Test and Verification (MTV'06).

[10]  Daniel Kroening,et al.  Behavioral consistency of C and Verilog programs using bounded model checking , 2003, Proceedings 2003. Design Automation Conference (IEEE Cat. No.03CH37451).

[11]  Moshe Y. Vardi,et al.  Formal Verification of Backward Compatibility of Microcode , 2005, CAV.