Skip to main content

Stimuli Generation for Functional Hardware Verification with Constraint Programming

  • Chapter
  • First Online:
Hybrid Optimization

Part of the book series: Springer Optimization and Its Applications ((SOIA,volume 45))

  • 1316 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 129.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 169.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 169.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 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. 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. 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

  1. 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

    Google Scholar 

  2. Moss A (2007) Constraint patterns and search procedures for CP-based random test generation. In: Haifa verification conference, pp 86–103

    Google Scholar 

  3. 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

  4. 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

    Google Scholar 

  5. 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

    Google Scholar 

  6. 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

    Google Scholar 

  7. 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

    Google Scholar 

  8. 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

    Article  Google Scholar 

  9. 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).

    Google Scholar 

  10. 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.

    Book  Google Scholar 

  11. 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

    Google Scholar 

  12. Wile B, Goss JC, Roesner W (2005) Comprehensive functional verification - the complete industry cycle. Elsevier, UK

    Google Scholar 

  13. Kropf T (1999) Introduction to formal hardware verification. Springer, Berlin

    Book  Google Scholar 

  14. Clarke EM, Grumberg O, Peled DA (1999) Model Checking. MIT Press, Cambridge

    MATH  Google Scholar 

  15. 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

    Google Scholar 

  16. 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

    Article  Google Scholar 

  17. Lavagno L, Martin G, Scheffer L (2006) Electronic design automation for integrated circuits handbook. CRC Press, Boca Raton

    Google Scholar 

  18. 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

    Google Scholar 

  19. 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

    Google Scholar 

  20. 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

    Article  Google Scholar 

  21. 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

    Google Scholar 

  22. SystemVerilog web page (2009). http://www.systemverilog.org/

  23. IEEE Standard(2008) Functional verification language e 3 Aug 2008

    Google Scholar 

  24. 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

    Google Scholar 

  25. 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

    Google Scholar 

  26. Freuder E (1996) In pursuit of the holy grail. ACM Comput Surv 63

    Google Scholar 

  27. 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

    Google Scholar 

  28. Borning A, Freeman-Benson B, Willson M (1992) Constraint hierarchies. Lisp Symbol Comput 5:223–270

    Article  Google Scholar 

  29. 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

    Google Scholar 

  30. 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

    Google Scholar 

  31. 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

    Google Scholar 

  32. 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

    Google Scholar 

  33. 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

    Google Scholar 

  34. 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

  35. CoWare web page (2009) Coware processor designer. http://www.coware.com/products/processordesigner.php

  36. Target web page (2009) http://www.retarget.com

  37. 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

    Google Scholar 

  38. 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

    Google Scholar 

  39. Tensilica web page (2009). http://www.tensilica.com

  40. ARC web page (2009) ARC configurable CPU/DSP cores. http://www.arc.com/ configurablecores

  41. Tensilica web page (2009) Create TIE processor extensions. http://www.tensilica.com/products/xtensa/extensible/create_tie.htm

  42. 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

    Google Scholar 

  43. 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

    Google Scholar 

  44. 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

    Google Scholar 

  45. 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

    Google Scholar 

  46. 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

    Article  Google Scholar 

  47. 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

    Google Scholar 

  48. Abramovici M, Breuer M, Friedman A (1995) Digital systems testing and testable design. Wiley IEEE Press, New York

    Google Scholar 

  49. Hentenryck PV, Simonis H, Dincbas M (1992) Constraint satisfaction using constraint logic programming. In: Artificial intelligence, 58(1-3):113–159

    Article  MathSciNet  Google Scholar 

  50. 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

    Google Scholar 

  51. Brand S (2001) Sequential automatic test pattern generation by constraint programming. In: CP2001 post conference workshop modelling and problem formulation

    Google Scholar 

  52. 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

    Google Scholar 

  53. 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

    Google Scholar 

  54. 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

    Google Scholar 

  55. STMicroelectronics web page (2009) STMicroelectronics demonstrates complex multimedia application on VLIW micro core. http://www.st.com/stonline/press/news/year2002/ t1124p.htm

  56. Adve SV, Gharachorloo K (1996) Shared memory consistency models: A tutorial. In: Computer,pp 66–76

    Google Scholar 

  57. Lamport L (1979) How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans Comput C-28:690–691

    Article  Google Scholar 

  58. 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

    Google Scholar 

  59. 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

    Article  Google Scholar 

  60. 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

    Chapter  Google Scholar 

  61. 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

    Google Scholar 

  62. 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

    Article  Google Scholar 

  63. 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.

    Google Scholar 

Download references

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

Authors

Corresponding authors

Correspondence to Allon Adir or Yehuda Naveh .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics