Abstract
Verification of hardware and software usually proceeds separately, software analysis relying on the correctness of processors executing instructions. This assumption is valid as long as the software runs on standard CPUs that have been extensively validated and are in wide use. However, for processors exploiting custom instruction set extensions to meet performance and energy constraints the validation might be less extensive, challenging the correctness assumption.
In this paper we present an approach for integrating software analyses with hardware verification, specifically targeting custom instruction set extensions. We propose three different techniques for deriving the properties to be proven for the hardware implementation of a custom instruction in order to support software analyses. The techniques are designed to explore the trade-off between generality and efficiency and span from proving functional equivalence over checking the rules of a particular analysis domain to verifying actual pre and post conditions resulting from program analysis. We demonstrate and compare the three techniques on example programs with custom instructions, using state-of-the-art software and hardware verification techniques.
This work was partially supported by the German Research Foundation (DFG) within the Collaborative Research Centre “On-The-Fly Computing” (SFB 901).
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Beyer, D.: Status report on software verification. In: Ábrahám, E., Havelund, K. (eds.) TACAS 2014 (ETAPS). LNCS, vol. 8413, pp. 373–388. Springer, Heidelberg (2014)
Beyer, D., Henzinger, T., Théoduloz, G.: Configurable software verification: Concretizing the convergence of model checking and program analysis. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 504–518. Springer, Heidelberg (2007)
Beyer, D., Keremoglu, M.E.: CPAchecker: A Tool for Configurable Software Verification. In: Gopalakrishnan, G., Qadeer, S. (eds.) CAV 2011. LNCS, vol. 6806, pp. 184–190. Springer, Heidelberg (2011)
Biere, A.: PicoSAT essentials. JSAT 4(2-4), 75–97 (2008)
Clark, N., Blome, J., Chu, M., Mahlke, S., Biles, S., Flautner, K.: An architecture framework for transparent instruction set customization in embedded processors. In: ISCA, pp. 272–283. IEEE Computer Society (2005)
Clarke, E., Kroening, D.: Hardware verification using ANSI-C programs as a reference. In: ASP-DAC, pp. 308–311. ACM (2003)
Drzevitzky, S., Kastens, U., Platzner, M.: Proof-carrying hardware: Towards runtime verification of reconfigurable modules. In: ReConFig, pp. 189–194. IEEE (2009)
Erkok, L., Carlsson, M., Wick, A.: Hardware/software co-verification of cryptographic algorithms using Cryptol. In: FMCAD, pp. 188–191. IEEE (2009)
Galuzzi, C., Bertels, K.: The instruction-set extension problem: A survey. ACM Trans. Reconfigurable Technol. Syst. 4(2), 18:1–18:28 (2011)
Henzinger, T.A., Jhala, R., Majumdar, R., Sutre, G.: Lazy abstraction. In: POPL, pp. 58–70. ACM (2002)
Horn, A., Tautschnig, M., Val, C., Liang, L., Melham, T., Grundy, J., Kroening, D.: Formal co-validation of low-level hardware/software interfaces. In: FMCAD, pp. 121–128. IEEE (2013)
Kurshan, R., Levin, V., Minea, M., Peled, D., Yenigun, H.: Verifying hardware in its software context. In: CAD, pp. 742–749. IEEE (1997)
Li, J., Xie, F., Ball, T., Levin, V., McGarvey, C.: An Automata-Theoretic Approach to Hardware/Software Co-verification. In: Rosenblum, D.S., Taentzer, G. (eds.) FASE 2010. LNCS, vol. 6013, pp. 248–262. Springer, Heidelberg (2010)
Loitz, S., Wedler, M., Brehm, C., Vogt, T., Wehn, N., Kunz, W.: Proving functional correctness of weakly programmable IPs - a case study with formal property checking. In: SASP, pp. 48–54. IEEE (2008)
Mishchenko, A., Chatterjee, S., Brayton, R.K., Eén, N.: Improvements to combinational equivalence checking. In: ICCAD, pp. 836–843. ACM (2006)
de Moura, L.M., Bjørner, N.: Satisfiability modulo theories: introduction and applications. Commun. ACM 54(9), 69–77 (2011)
Necula, G.C.: Proof-carrying code. In: POPL, pp. 106–119. ACM (1997)
Necula, G., McPeak, S., Rahul, S., Weimer, W.: CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs. In: Nigel Horspool, R. (ed.) CC 2002. LNCS, vol. 2304, pp. 213–228. Springer, Heidelberg (2002)
Nguyen, M., Wedler, M., Stoffel, D., Kunz, W.: Formal hardware/software co-verification by interval property checking with abstraction. In: DAC, pp. 510–515. ACM (2011)
Rose, J., Luu, J., Yu, C.W., Densmore, O., Goeders, J., Somerville, A., Kent, K.B., Jamieson, P., Anderson, J.: The VTR project: Architecture and CAD for FPGAs from Verilog to Routing. In: FPGA, pp. 77–86. ACM (2012)
Sankaranarayanan, S., Ivancic, F.: Necla static analysis benchmarks (necla-static-small) v1.1, http://www.nec-labs.com/research/system/systems_SAV-website/small_static_bench-v1.1.tar.gz
Wagner, I., Bertacco, V.: Post-Silicon and Runtime Verification for Modern Processors. Springer (2011)
Xie, F., Yang, G., Song, X.: Component-based hardware/software co-verification for building trustworthy embedded systems. Journal of Systems and Software 80(5), 643–654 (2007)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Jakobs, MC., Platzner, M., Wehrheim, H., Wiersema, T. (2014). Integrating Software and Hardware Verification. In: Albert, E., Sekerinski, E. (eds) Integrated Formal Methods. IFM 2014. Lecture Notes in Computer Science(), vol 8739. Springer, Cham. https://doi.org/10.1007/978-3-319-10181-1_19
Download citation
DOI: https://doi.org/10.1007/978-3-319-10181-1_19
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-10180-4
Online ISBN: 978-3-319-10181-1
eBook Packages: Computer ScienceComputer Science (R0)