Skip to main content
Log in

Improved verification of hardware designs through antecedent conditioned slicing

  • Special Section on Advances in Automated Verification of Critical Systems
  • Published:
International Journal on Software Tools for Technology Transfer Aims and scope Submit manuscript

Abstract

Static slicing has shown itself to be a valuable tool, facilitating the verification of hardware designs. In this paper, we present a sharpened notion, antecedent conditioned slicing that provides a more effective abstraction for reducing the size of the state space. In antecedent conditioned slicing, extra information from the antecedent is used to permit greater pruning of the state space. In a previous version of this paper, we applied antecedent conditioned slicing to safety properties of the form G(antecedentconsequent) where antecedent and consequent were written in propositional logic. In this paper, we use antecedent conditioned slicing to handle safety and bounded liveness property specifications written in linear time temporal logic. We present a theoretical justification of our technique. We provide experimental results on a Verilog RTL implementation of the USB 2.0 functional core, which is a large design with about 1,100 state elements (10331 states). The results demonstrate that the technique provides significant performance benefits over static program slicing using state-of-the-art model checkers.

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.

Institutional subscriptions

Similar content being viewed by others

References

  1. Aagaard M., Ciubotariu V., Higgins J., Khalvati F. Combining equivalence verification and completion functions. In: Formal Methods in Computer-Aided Design, (FMCAD 2004)(2004)

  2. Canfora G., Cimitile A., De Lucia A., Di LuccaG G. Software salvaging based on conditions. In: Proceedings of the International Conference on Software Maintenance, pp. 424–433 (1994)

  3. Canfora G., Cimitile A., De Lucia A. (1998) Conditioned program slicing. Inf Softw. Technol. Spec. Issue Program Slicing 40, 595–607

    Google Scholar 

  4. Canfora G., De Lucia A., Munro M.C.(1998) An integrated environment for reuse reengineering C code. J. Syst. Softw. 42, 153–164

    Article  Google Scholar 

  5. Canfora G., Cimitile A., De Lucia A., Di Lucca G.A. (2000) Decomposing legacy programs: a first step towards migrating to client-server platforms. J. Syst. Softw. 54(2): 99–110

    Article  Google Scholar 

  6. Clarke E.M., Emerson E.A., Sistla A.P. (1986) Automatic verification of finite state concurrent systems using temporal logic specifications: a practical approach. ACM Trans. Program. Lang. Syst. 8(2): 244–263

    Article  MATH  Google Scholar 

  7. Clarke E.M., Fujita M., Rajan S.P., Reps T.W., Shankar, S, Teitelbaum T. Program slicing of hardware description languages. In: Conference on Correct Hardware Design and Verification Methods, pp. 298–312 (1999)

  8. USB Source Code: http://allowbreak www. opencores. org/ pdownloads.cgi/ list/ usb.

  9. Danicic S., Fox C., Harman M., Hierons R. Consit: a conditioned program slicer. pp. 216–226 (2000)

  10. Daoudi M., Ouarbya L., Howroyd J., Danicic S., Marman. Mark, Fox,C., Ward,M.P.: Consus: a scalable approach to conditional slicing. In: IEEE Proceedings of the Working Conference on Reverse Engineering, pp. 181–189 (2002)

  11. De Lucia A., Fasolino A.R., Munro M. Understanding function behaviors through program slicing. In: Proceedings of the 4th International Workshop on Program Comprehension, pp. 9 (1996)

  12. Duesterwald E., Gupta R., Soffa M.L. Rigorous data flow testing through output influences. In: Proceedings of 2nd Irvine Software Symposium, pp. 131–145 (1992)

  13. Ferrante J., Ottenstein K.J., Warren J.D. (1987) The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9(3): 319–349

    Article  MATH  Google Scholar 

  14. Fox C., Harman M., Hierons R., Danicic S. Backward conditioning: a new program specialisation technique and its application to program comprehension. In: 9th IEEE International Workshop on Program Comprehesion, pp. 89–97 (2001)

  15. Gallagher K.B., Lyle J.R. Using program slicing in software maintenance. In: IEEE Transactions on Software Engineering, pp. 751–761 (1991)

  16. Horwitz S., Reps T., Binkley D. Interprocedural slicing using dependence graphs. In: Proceedings of the ACM SIGPLAN’88 Conference on Programming Language Design and Implementation, vol. 23, pp. 35–46 (1988)

  17. Iwaihara M., Nomura M., Ichinose S., Yasuura H. Program slicing on VHDL descriptions and its applications. pp. 132–139 (1996)

  18. Korel B., Laski J. (1988) Dynamic program slicing. Inf. Process. Lett. 29(3): 155–163

    Article  MATH  Google Scholar 

  19. Kurshan R.P. Computer-aided verification of coordinating processes: the automata-theoretic approach. Princeton University Press, Princeton (1994)

  20. Lichtenstein O., Pnueli A. Checking that finite state concurrent programs satisfy their linear specification. In: Proceedings of the 12th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pp. 97–107 (1985)

  21. Manna Z., Pnueli A. (1992) The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer, Berlin Heidelberg New York

    Google Scholar 

  22. McMillan K.L. (2000) A methodology for hardware verification using compositional model checking. Sci. Comput. Program. 37(1–3): 279–309

    Article  MATH  Google Scholar 

  23. Ottenstein K.J., Ottenstein L.M. (1984) The program dependence graph in software development environments. SIGPLAN, Notices 19(5): 177–184

    Article  Google Scholar 

  24. Reps T., Bricker T. Illustrating interference in interfering versions of programs. In: Proceedings of the 2nd International Workshop on Software Configuration Management, pp. 46–55 (1989)

  25. Tip F. Generation of Program Analysis Tools. Ph.D. thesis, University of Amsterdam (1995)

  26. Tip F. (1995) A survey of program slicing techniques. J. program. lang. 3, 121–189

    Google Scholar 

  27. USB Specification Document. http://www.usb.org/developers/docs/

  28. Vasudevan S., Emerson E.A., Abraham J.A. Efficient model checking of hardware using conditioned slicing. In: Preliminary Proceedings of 4th International Workshop on Automated Verification of Critical Systems (2004)

  29. Vedula V.M., Abraham J.A., Bhadra J., Tupuri R. (2003) A hierarchical test generation approach using program slicing techniques on hardware description languages. J. Electron. Test Theory Appl. 19(2): 149–160

    Article  Google Scholar 

  30. Vedula V.M., Townsend W.J., Abraham J.A. Program slicing for ATPG-based property checking.In: International Conference on VLSI Design, pp. 591–596 (2004)

  31. Venkatesh G.A. The semantic approach to program slicing.In: ACM SIGPLAN Conference on Programming Language Design and Implementation, 26(6), 107–119 (1991)

  32. Weiser M. Program slices: formal, psychological, and practical investigations of an automatic program abstraction method. Ph.D. Thesis (1979)

  33. Weiser M. (1982) Programmers use slices when debugging. Commun. ACM 25(7): 446–452

    Article  Google Scholar 

  34. Weiser M. (1984) Program slicing. IEEE Trans. Softw. Eng. 10(4): 352–357

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Shobha Vasudevan.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Vasudevan, S., Emerson, E.A. & Abraham, J.A. Improved verification of hardware designs through antecedent conditioned slicing. Int J Softw Tools Technol Transfer 9, 89–101 (2007). https://doi.org/10.1007/s10009-006-0022-x

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10009-006-0022-x

Keywords

Navigation