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(antecedent ⇒ consequent) 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.
Similar content being viewed by others
References
Aagaard M., Ciubotariu V., Higgins J., Khalvati F. Combining equivalence verification and completion functions. In: Formal Methods in Computer-Aided Design, (FMCAD 2004)(2004)
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)
Canfora G., Cimitile A., De Lucia A. (1998) Conditioned program slicing. Inf Softw. Technol. Spec. Issue Program Slicing 40, 595–607
Canfora G., De Lucia A., Munro M.C.(1998) An integrated environment for reuse reengineering C code. J. Syst. Softw. 42, 153–164
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
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
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)
USB Source Code: http://allowbreak www. opencores. org/ pdownloads.cgi/ list/ usb.
Danicic S., Fox C., Harman M., Hierons R. Consit: a conditioned program slicer. pp. 216–226 (2000)
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)
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)
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)
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
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)
Gallagher K.B., Lyle J.R. Using program slicing in software maintenance. In: IEEE Transactions on Software Engineering, pp. 751–761 (1991)
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)
Iwaihara M., Nomura M., Ichinose S., Yasuura H. Program slicing on VHDL descriptions and its applications. pp. 132–139 (1996)
Korel B., Laski J. (1988) Dynamic program slicing. Inf. Process. Lett. 29(3): 155–163
Kurshan R.P. Computer-aided verification of coordinating processes: the automata-theoretic approach. Princeton University Press, Princeton (1994)
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)
Manna Z., Pnueli A. (1992) The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer, Berlin Heidelberg New York
McMillan K.L. (2000) A methodology for hardware verification using compositional model checking. Sci. Comput. Program. 37(1–3): 279–309
Ottenstein K.J., Ottenstein L.M. (1984) The program dependence graph in software development environments. SIGPLAN, Notices 19(5): 177–184
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)
Tip F. Generation of Program Analysis Tools. Ph.D. thesis, University of Amsterdam (1995)
Tip F. (1995) A survey of program slicing techniques. J. program. lang. 3, 121–189
USB Specification Document. http://www.usb.org/developers/docs/
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)
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
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)
Venkatesh G.A. The semantic approach to program slicing.In: ACM SIGPLAN Conference on Programming Language Design and Implementation, 26(6), 107–119 (1991)
Weiser M. Program slices: formal, psychological, and practical investigations of an automatic program abstraction method. Ph.D. Thesis (1979)
Weiser M. (1982) Programmers use slices when debugging. Commun. ACM 25(7): 446–452
Weiser M. (1984) Program slicing. IEEE Trans. Softw. Eng. 10(4): 352–357
Author information
Authors and Affiliations
Corresponding author
Rights 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
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-006-0022-x