Improved verification of hardware designs through antecedent conditioned slicing

  • Shobha VasudevanEmail author
  • E. Allen Emerson
  • Jacob A. Abraham
Special Section on Advances in Automated Verification of Critical Systems


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.


Hardware verification Model checking Program slicing LTL property Antecedent conditioned slicing Hardware description languages Verilog RTL 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 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)Google Scholar
  2. 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)Google Scholar
  3. 3.
    Canfora G., Cimitile A., De Lucia A. (1998) Conditioned program slicing. Inf Softw. Technol. Spec. Issue Program Slicing 40, 595–607Google Scholar
  4. 4.
    Canfora G., De Lucia A., Munro M.C.(1998) An integrated environment for reuse reengineering C code. J. Syst. Softw. 42, 153–164CrossRefGoogle Scholar
  5. 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–110CrossRefGoogle Scholar
  6. 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–263CrossRefzbMATHGoogle Scholar
  7. 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)Google Scholar
  8. 8.
    USB Source Code: http://allowbreak www. opencores. org/ pdownloads.cgi/ list/ usb.Google Scholar
  9. 9.
    Danicic S., Fox C., Harman M., Hierons R. Consit: a conditioned program slicer. pp. 216–226 (2000)Google Scholar
  10. 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)Google Scholar
  11. 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)Google Scholar
  12. 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)Google Scholar
  13. 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–349CrossRefzbMATHGoogle Scholar
  14. 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)Google Scholar
  15. 15.
    Gallagher K.B., Lyle J.R. Using program slicing in software maintenance. In: IEEE Transactions on Software Engineering, pp. 751–761 (1991)Google Scholar
  16. 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)Google Scholar
  17. 17.
    Iwaihara M., Nomura M., Ichinose S., Yasuura H. Program slicing on VHDL descriptions and its applications. pp. 132–139 (1996)Google Scholar
  18. 18.
    Korel B., Laski J. (1988) Dynamic program slicing. Inf. Process. Lett. 29(3): 155–163CrossRefzbMATHGoogle Scholar
  19. 19.
    Kurshan R.P. Computer-aided verification of coordinating processes: the automata-theoretic approach. Princeton University Press, Princeton (1994)Google Scholar
  20. 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)Google Scholar
  21. 21.
    Manna Z., Pnueli A. (1992) The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer, Berlin Heidelberg New YorkGoogle Scholar
  22. 22.
    McMillan K.L. (2000) A methodology for hardware verification using compositional model checking. Sci. Comput. Program. 37(1–3): 279–309CrossRefzbMATHGoogle Scholar
  23. 23.
    Ottenstein K.J., Ottenstein L.M. (1984) The program dependence graph in software development environments. SIGPLAN, Notices 19(5): 177–184CrossRefGoogle Scholar
  24. 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)Google Scholar
  25. 25.
    Tip F. Generation of Program Analysis Tools. Ph.D. thesis, University of Amsterdam (1995)Google Scholar
  26. 26.
    Tip F. (1995) A survey of program slicing techniques. J. program. lang. 3, 121–189Google Scholar
  27. 27.
    USB Specification Document. Scholar
  28. 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)Google Scholar
  29. 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–160CrossRefGoogle Scholar
  30. 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)Google Scholar
  31. 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)Google Scholar
  32. 32.
    Weiser M. Program slices: formal, psychological, and practical investigations of an automatic program abstraction method. Ph.D. Thesis (1979)Google Scholar
  33. 33.
    Weiser M. (1982) Programmers use slices when debugging. Commun. ACM 25(7): 446–452CrossRefGoogle Scholar
  34. 34.
    Weiser M. (1984) Program slicing. IEEE Trans. Softw. Eng. 10(4): 352–357CrossRefGoogle Scholar

Copyright information

© Springer-Verlag 2006

Authors and Affiliations

  • Shobha Vasudevan
    • 1
    Email author
  • E. Allen Emerson
    • 2
  • Jacob A. Abraham
    • 1
  1. 1.Computer Engineering Research CenterUniversity of Texas at AustinAustinUSA
  2. 2.Department of Computer SciencesUniversity of Texas at AustinAustinUSA

Personalised recommendations