Hardware/Software Co-verification Using Path-based Symbolic Execution

Conventional tools for formal hardware/software co-verification use bounded model checking techniques to construct a single monolithic propositional formula. Formulas generated in this way are extremely complex and contain a great deal of irrelevant logic, hence are difficult to solve even by the state-of-the-art Satisfiability (SAT) solvers. In a typical hardware/software co-design the firmware only exercises a fraction of the hardware state-space, and we can use this observation to generate simpler and more concise formulas. In this paper, we present a novel verification algorithm for hardware/software co-designs that identify partitions of the firmware and the hardware logic pertaining to the feasible execution paths by means of path-based symbolic simulation with custom path-pruning, propertyguided slicing and incremental SAT solving. We have implemented this approach in our tool COVERIF. We have experimentally compared COVERIF with HW-CBMC, a monolithic BMC based co-verification tool, and observed an average speed-up of 5× over HW-CBMC for proving safety properties as well as detecting critical co-design bugs in an open-source Universal Asynchronous Receiver Transmitter design and a large SoC design.

[1]  Sharad Malik,et al.  Completeness bounds and sequentialization for model checking of interacting firmware and hardware , 2015, 2015 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS).

[2]  Daniel Kroening,et al.  v2c - A Verilog to C Translator , 2016, TACAS.

[3]  Daniel Kroening,et al.  Formal techniques for effective co-verification of hardware/software co-designs , 2017, 2017 54th ACM/EDAC/IEEE Design Automation Conference (DAC).

[4]  Fei Xie,et al.  An Automata-Theoretic Approach to Hardware/Software Co-verification , 2010, FASE.

[5]  Armin Biere,et al.  Bounded model checking , 2003, Adv. Comput..

[6]  Daniel Kroening,et al.  Formal co-validation of low-level hardware/software interfaces , 2013, 2013 Formal Methods in Computer-Aided Design.

[7]  Guowu Yang,et al.  Component-based hardware/software co-verification , 2006, Fourth ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2006. MEMOCODE '06. Proceedings..

[8]  Daniel Kroening,et al.  Unbounded safety verification for hardware using software analyzers , 2016, 2016 Design, Automation & Test in Europe Conference & Exhibition (DATE).

[9]  Frank Ghenassia,et al.  Transaction Level Modeling with SystemC , 2005 .

[10]  David Monniaux,et al.  Verification of device drivers and intelligent controllers: a case study , 2007, EMSOFT '07.

[11]  Subhankar Mukherjee,et al.  Formal Verification of Hardware / Software Power Management Strategies , 2013, 2013 26th International Conference on VLSI Design and 2013 12th International Conference on Embedded Systems.

[12]  Christoph Hagleitner,et al.  Giving Text Analytics a Boost , 2014, IEEE Micro.

[13]  Jason R. Andrews Co-verification of Hardware and Software for ARM SoC Design , 2004 .

[14]  Daniel Kroening,et al.  Hardware Verification Using Software Analyzers , 2015, 2015 IEEE Computer Society Annual Symposium on VLSI.

[15]  Armin Biere,et al.  Effective Preprocessing in SAT Through Variable and Clause Elimination , 2005, SAT.

[16]  Sharad Malik,et al.  Automated firmware testing using firmware-hardware interaction patterns , 2014, 2014 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS).

[17]  Sharad Malik,et al.  Modeling Firmware as Service Functions and Its Application to Test Generation , 2013, Haifa Verification Conference.

[18]  Heiner Giefers,et al.  Accelerating arithmetic kernels with coherent attached FPGA coprocessors , 2015, 2015 Design, Automation & Test in Europe Conference & Exhibition (DATE).

[19]  Doron A. Peled,et al.  Combining Software and Hardware Verification Techniques , 2002, Formal Methods Syst. Des..

[20]  Heiner Giefers,et al.  Compiling text analytics queries to FPGAs , 2014, 2014 24th International Conference on Field Programmable Logic and Applications (FPL).

[21]  Sayak Ray,et al.  Template-based synthesis of instruction-level abstractions for SoC verification , 2015, 2015 Formal Methods in Computer-Aided Design (FMCAD).