Abstract
We survey the application of constraint programming techniques for stimuli generation in functional hardware verification, which can be considered the largest and most important industrial application of constraint programming. We provide a thorough introduction to the application domain, aimed at people unfamiliar with this area. We show the sources of constraints and the unique aspects of the constraint satisfaction problems (CSPs) arising in this field. We then present CSP models of a wide variety of stimuli generation problems, as well as the state of the art techniques used to solve them. We also discuss the current challenges in this area, and the prospects of solving them by advancing constraint programming technology beyond the state of the art.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Take, for example, the design of a processor. Then a test is simply a program, i.e., a sequence of assembly instructions, to be run on the processor. Only a very limited number of instruction sequences (including their parameters) form a valid program.
- 2.
This statement is somewhat weakened in the case of BMC, as the proof is only for a specific set of assertions, and only within a limited number of cycles.
- 3.
A pipeline is a micro-architecture mechanism that enables the concurrent computation of multiple instructions. The computation of a single instruction is broken into stages that are handled in corresponding stages of the pipeline. An instruction enters the pipeline and goes one by one through all the stages. Each stage can handle just one instruction at a time, but the pipeline can concurrently handle instructions at various stages.
References
Naveh Y, Rimon M, Jaeger I, Katz Y, Vinov M, Marcus E, Shurek G (2007) Constraint-based random stimuli generation for hardware verification. AI Mag 28:13–30
Moss A (2007) Constraint patterns and search procedures for CP-based random test generation. In: Haifa verification conference, pp 86–103
Cadence web page (2007) Incisive Enterprise Specman Products. http://www.cadence.com/rl/ Resources/datasheets/specman_elite_ds_OnlinePDF.pdf; We are not aware of an academic publication of Cadence’s constraint solver
Iyer MA (2003) Race a word-level ATPG-based constraints solver system for smart random simulation. In: Proceedings of the international test conference, 2003, (ITC’03), pp 299–308
Chandra AK, Iyengar VS (1992) Constraint solving for test case generation: a technique for high-level design verification. In: Proceedings of IEEE international conference on computer design: VLSI in computers and processors, ICCD’92, pp 245–248
Lichtenstein Y, Malka Y, Aharon A (1994) Model based test generation for processor verification. In: Sixth annual conference on innovative applications of artificial intelligence, Menlo Park, USA, 1994. American association for artificial intelligence, pp 83–94
Lewin D, Foumier L, Levinger M, Roytman E, Shurek G (1995) Constraint satisfaction for test program generation. In: Proceedings of the IEEE fourteenth annual international phoenix conference on computers and communication, pp 45–48
Bin E, Emek R, Shurek G, Ziv A (2002) Using a constraint satisfaction formulation and solution techniques for random test program generation. IBM Syst J 41:386–402
Naveh Y, Rimon M, Jaeger I, Katz Y, Vinov M, Marcus E, Shurek G (2006) Constraint-based random stimuli generation for hardware verification. In: Innovative applications of artifical intellegence (IAAI’06).
Zhang J, Wang X (2001) A constraint solver and its application to path feasibility analysis. In: Proceedings of international journal of software engineering and knowledge engineering.
Godefroid P, Klarlund N, Sen K (2005) Dart: directed automated random testing. In: Proceedings of the ACM SIGPLAN conference on programming language design and implementation, PLDI’05, pp 213–223
Wile B, Goss JC, Roesner W (2005) Comprehensive functional verification - the complete industry cycle. Elsevier, UK
Kropf T (1999) Introduction to formal hardware verification. Springer, Berlin
Clarke EM, Grumberg O, Peled DA (1999) Model Checking. MIT Press, Cambridge
Ganai MK, Gupta A (2006) Accelerating high-level bounded model checking. In: Proceedings of the IEEE/ACM international conference on computer-aided design, ICCAD’06, pp 794–801
Armando A, Mantovani J, Platania L (2008) Bounded model checking of software using SMT solvers instead of SAT solvers. Int J Software Tool Tech Tran 11(1):69–83
Lavagno L, Martin G, Scheffer L (2006) Electronic design automation for integrated circuits handbook. CRC Press, Boca Raton
Adir A, Bin E, Peled O, Ziv A (2003) Piparazzi: a test program generator for micro-architecture flow verification. In: High-level design validation and test workshop, 2003. 8th IEEE International, pp 23–28
Aharoni M, Asaf S, Fournier L, Koifman A, Nagel R (2003) FPGen - a test generation framework for datapath floating-point verification. In: High-level design validation and test workshop. Eighth IEEE international, 2003, pp 17–22
Adir A, Almog E, Fournier L, Marcus E, Rimon M, Vinov M, Ziv A (2004) Genesys-Pro: innovations in test program generation for functional processor verification. IEEE Design and Test of Computers 21:84–93
Behm M, Ludden J, Lichtenstein Y, Rimon M, Vinov M (2004) Industrial experience with test generation languages for processor verification. In: Design automation conference, 2004. 41st Proceedings, pp 36–40
SystemVerilog web page (2009). http://www.systemverilog.org/
IEEE Standard(2008) Functional verification language e 3 Aug 2008
Hollander Y, Morley M, Noy A (2001) The e language: a fresh separation of concerns. In: Proceedings of technology of object-oriented languages and systems, TOOLS’01
van Hoeve WJ (2009) Over-constrained problems. In: Hybrid Optimization: The Ten years of CPAIOR – edited collection. In: The Ten Years of CPAIOR: A Success Story, Springer, pp 1–9
Freuder E (1996) In pursuit of the holy grail. ACM Comput Surv 63
Dechter R, Kask K, Bin E, Emek R (2002) Generating random solutions for constraint satisfaction problems. In: 18th national conference on artificial intelligence, Menlo Park, USA. American association for artificial intelligence, pp 15–21
Borning A, Freeman-Benson B, Willson M (1992) Constraint hierarchies. Lisp Symbol Comput 5:223–270
Mittal S, Falkenhainer B (1989) Dynamic constraint satisfaction problems. In: 8th national conference on artificial intelligence, Menlo Park, USA. American association for artificial intelligence, pp 25–32
Nahir A, Shiloach Y, Ziv A (2007) Using linear programming techniques for scheduling-based random test-case generation. In: Proceedings of the Haifa verification conference (HVC’06), pp 16–33
Adir A, Asaf S, Fournier L, Jaeger I, Peled O (2007) A framework for the validation of processor architecture compliance. In: Design automation conference, 2007, DAC ’07. 44th ACM/IEEE, pp 902–905
Naveh Y (2008) Guiding stochastic search by dynamic learning of the problem topography. In: Perron L, Trick MA (eds) CPAIOR. Lecture notes in computer science, vol 5015. Springer, pp 349–354
Sabato S, Naveh Y (2007) Preprocessing expression-based constraint satisfaction problems for stochastic local search. In: Hentenryck PV, Wolsey LA (eds) CPAIOR. Lecture notes in computer science, vol 4510. Springer, pp 244–259
Cadence web page (2009) The new generation testcase utility. http://www.cadence.com/ community/blogs/fv/archive/2009/01/08/the-new-generation-testcase-utility.aspx
CoWare web page (2009) Coware processor designer. http://www.coware.com/products/processordesigner.php
Target web page (2009) http://www.retarget.com
Pees S, Hoffmann A, Zivojnovic V, Meyr H (1999) Lisa-machine description language for cycle-accurate models of programmable dsp architectures. In: Design automation conference, 1999. 36th Proceedings, pp 933–938
Zivojnovic V, Pees S, Meyr H (1996) Lisa-machine description language and generic machine model for hw/sw co-design. In: IEEE workshop on VLSI signal processing IX, pp 127–136
Tensilica web page (2009). http://www.tensilica.com
ARC web page (2009) ARC configurable CPU/DSP cores. http://www.arc.com/ configurablecores
Tensilica web page (2009) Create TIE processor extensions. http://www.tensilica.com/products/xtensa/extensible/create_tie.htm
Rimon M, Lichtenstein Y, Adir A, Jaeger I, Vinov M, Johnson S, Jani D (2006) Addressing test generation challenges for configurable processor verification. In: High-level design validation and test workshop, 2006. Eleventh annual IEEE international, pp 95–101
Gutkovich B, Moss A (2006) CP with architectural state lookup for functional test generation. In: High-level design validation and test workshop, 2006. Eleventh annual IEEE international, pp 111–118
Adir A, Founder L, Katz Y, Koyfman A (2006) DeepTrans - extending the model-based approach to functional verification of address translation mechanisms. In: High-level design validation and test workshop, 2006. Eleventh annual IEEE international, pp 102–110
Geller F, Veksler M (2005) Assumption-based pruning in conditional CSP. In: van Beek P (ed) CP 2005. Lecture notes in computer science, vol 3709. Springer, pp 241–255
Chencinski EW, Check MA, DeCusatis C, Deng H, Grassi M, Gregg TA, Helms MM, Koenig AD, Mohr L, Pandey K, Schlipf T, Schober T, Ulrich H, Walters CR (2009) IBM system z10 I/O subsystem. IBM J Res Dev 53:1–13
Emek R, Jaeger I, Naveh Y, Bergman G, Aloni G, Katz Y, Farkash M, Dozoretz I, Goldin A (2002) X-Gen: A random test-case generator for systems and socs. In: 7th IEEE international high-level design validation and test workshop, HLDVT-02, pp 145–150
Abramovici M, Breuer M, Friedman A (1995) Digital systems testing and testable design. Wiley IEEE Press, New York
Hentenryck PV, Simonis H, Dincbas M (1992) Constraint satisfaction using constraint logic programming. In: Artificial intelligence, 58(1-3):113–159
Simonis H (1989) Test generation using the constraint logic programming language chip. In: Proceedings of the 6th international conference on logic programming (ICLP ’89), pp 101–112
Brand S (2001) Sequential automatic test pattern generation by constraint programming. In: CP2001 post conference workshop modelling and problem formulation
Hartman A, Ur S, Ziv A (1999) Short vs long: Size does make a difference. In: Proceedings of the high-level design validation and test workshop, pp 23–28
Ellman T (1993) Abstraction by approximate symmetry. In: IJCAI’93: Proceedings of the 13th international joint conference on artificial intelligence, Morgan Kaufmann Publishers, San Francisco, 1993, pp 916–921
Adir A, Arbetman Y, Dubrov B, Liechtenstein Y, Rimon M, Vinov M, Calligaro M, Cofler A, Duffy G (2005) VLIW - a case study of parallelism verification. In: Design automation conference, 2005. 42nd Proceedings, pp 779–782
STMicroelectronics web page (2009) STMicroelectronics demonstrates complex multimedia application on VLIW micro core. http://www.st.com/stonline/press/news/year2002/ t1124p.htm
Adve SV, Gharachorloo K (1996) Shared memory consistency models: A tutorial. In: Computer,pp 66–76
Lamport L (1979) How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans Comput C-28:690–691
Gibbons P, Korach E (1992) The complexity of sequential consistency. In: Parallel and distributed processing, 1992. Proceedings of the Fourth IEEE Symposium on 1–4 December 1992, pp 317–325
Cantin J, Lipasti M, Smith J (2005) The complexity of verifying memory coherence and consistency. In: IEEE transactions on parallel and distributed systems, pp 663–671
Gopalakrishnan G, Yang Y, Sivaraj H (2004) QB or not QB: an efficient execution verification tool for memory orderings. In: Lecture notes in computer science: computer aided verification, pp 401–413
Yang Y, Gopalakrishnan G, Lindstrom G, Slind K (2004) Nemos: a framework for axiomatic and executable specifications of memory consistency models. In: Parallel and distributed processing symposium, 2004. Eighteenth international proceedings, pp 26–30
Adir A, Attiya H, Shurek G (2003) Information-flow models for shared memory with an application to the powerpc architecture. In: IEEE transactions on parallel and distributed systems, vol 14(5), pp 502–515
Naveh Y (2004) Stochastic solver for constraint satisfaction problems with learning of high-level characteristics of the problem topography. In: First international workshop on local search techniques in constraint satisfaction, LSCS’04.
Acknowledgments
We are grateful to Amir Nahir, Gil Shurek, and Avi Ziv with whom we held extensive discussions. The material and book [12] for the Verification Course given by them at the Technion, Israel Institute of Technology, formed the basis for many of the ideas presented in Sect. 2. We also thank Eitan Marcus for his contribution to the sections related to checking and to Merav Aharoni, Sigal Asaf, and Yoav Katz for some of the figures in this chapter. The advancements in CP for verification presented here could not have been accomplished without the innovation, talent, and dedication of dozens of researchers and engineers at IBM Research – Haifa, and without the continuous feedback of verification engineers across IBM. The work of all those people is described and cited in many places in this chapter.
Author information
Authors and Affiliations
Corresponding authors
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer Science+Business Media LLC
About this chapter
Cite this chapter
Adir, A., Naveh, Y. (2011). Stimuli Generation for Functional Hardware Verification with Constraint Programming. In: van Hentenryck, P., Milano, M. (eds) Hybrid Optimization. Springer Optimization and Its Applications, vol 45. Springer, New York, NY. https://doi.org/10.1007/978-1-4419-1644-0_16
Download citation
DOI: https://doi.org/10.1007/978-1-4419-1644-0_16
Published:
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4419-1643-3
Online ISBN: 978-1-4419-1644-0
eBook Packages: Mathematics and StatisticsMathematics and Statistics (R0)