Functional verification

Last updated

Functional verification is the task of verifying that the logic design conforms to specification. [1] Functional verification attempts to answer the question "Does this proposed design do what is intended?" [2] This is complex and takes the majority of time and effort (up to 70% of design and development time) [1] in most large electronic system design projects. Functional verification is a part of more encompassing design verification, which, besides functional verification, considers non-functional aspects like timing, layout and power. [3]

Contents

Background

Although the number of transistors increased exponentially according to Moore's law, increasing the number of engineers and time taken to produce the designs only increase linearly. As the transistors' complexity increases, the number of coding errors also increases. Most of the errors in logic coding come from careless coding (12.7%), miscommunication (11.4%), and microarchitecture challenges (9.3%). [1] Thus, electronic design automation (EDA) tools are produced to catch up with the complexity of transistors design. Languages such as Verilog and VHDL are introduced together with the EDA tools. [1]

Functional verification is very difficult because of the sheer volume of possible test-cases that exist in even a simple design. Frequently there are more than 10^80 possible tests to comprehensively verify a design – a number that is impossible to achieve in a lifetime. This effort is equivalent to program verification, and is NP-hard or even worse – and no solution has been found that works well in all cases.

The verification process and strategy

The verification plan

A functional verification project is guided by a verification plan. This is a foundational document that serves as a blueprint for the entire effort. It is a living document created early in the design cycle and is critical for defining scope and tracking progress. The plan typically defines: [4]

Coverage metrics

To measure the completeness of the verification effort, engineers rely on coverage metrics. [4] The process of achieving the predefined coverage goals is known as "coverage closure." There are two main types of coverage:

Levels of Abstraction in Verification

Functional verification is not a single, monolithic task but a continuous process that is applied at different levels of design abstraction as a chip is developed. This hierarchical approach is necessary to manage the immense complexity of modern SoCs. [5] [4]

Verification methodologies

Because exhaustive testing is impossible, a combination of methods is used to attack the verification problem. These are broadly categorized as dynamic, static, and hybrid approaches.

Dynamic verification (simulation-based)

Dynamic verification involves executing the design model with a given set of input stimuli and checking its output for correct behavior. This is the most widely used approach. [1]

A modern simulation testbench is a complex software environment. Key components include a generator to create stimuli (often using constrained-random techniques), a driver to translate stimuli into pin-level signals, a monitor to observe outputs, and a checker (or scoreboard) to validate the results against a reference model.

Static Verification

Static verification analyzes the design without executing it with test vectors: [1]

Hybrid Techniques

These approaches combine multiple verification techniques to achieve better results. For example, formal methods can be used to generate specific tests that target hard-to-reach corner cases, which are then run in the more scalable simulation environment. [6]

Components of simulated environments

A simulation environment is typically composed of several types of components:

Verification for specialized design domains

Low-power verification

Modern SoCs employ sophisticated power management techniques to conserve energy, such as power gating and multiple voltage domains. Verifying the correct functionality of these low-power features is a major task that involves ensuring logic states are correctly isolated, retained, and restored during power-down and power-up sequences. This is typically managed by specifying the power intent in a standardized format, such as the Unified Power Format (UPF), which guides the verification tools. [4]

Clock domain crossing (CDC) verification

Complex SoCs often contain multiple clock domains that operate asynchronously to one another. Passing data reliably between these domains is a common source of subtle hardware bugs. CDC verification focuses on identifying and ensuring the correctness of synchronizer circuits used at these asynchronous boundaries to prevent issues like metastability and data corruption. Specialized static analysis and formal verification tools are essential for comprehensive CDC verification. [4]

Machine learning in functional verification

Machine learning (ML) is being applied to various aspects of functional verification to improve efficiency and effectiveness. ML models can analyze large datasets from the verification process to identify patterns and make predictions. Key applications include: [7]

Hardware security verification

As electronic systems become more integrated into critical applications (e.g., AI, automotive), ensuring hardware security has become a key part of verification. The process is now being adapted to detect security vulnerabilities in addition to functional bugs. This includes testing for threats such as: [8]

See also

References

  1. 1 2 3 4 5 6 Molina, A; Cadenas, O (8 September 2006). "Functional verification: approaches and challenges". Latin American Applied Research. 37. ISSN   0327-0793. Archived from the original on 16 October 2022. Retrieved 12 October 2022.
  2. Rezaeian, Banafsheh; Rodrigues, Dr. Joachim; Rath, Alexander W. "Simulation and Verification Methodology of Mixed Signal Automotive ICs". Lund University, Department of Electrical and Information Technology.
  3. Stroud, Charles E; Change, Yao-Chang (2009). "CHAPTER 1 – Introduction". Design Verification. pp. 1–38. doi:10.1016/B978-0-12-374364-0.50008-4. ISBN   978-0-12-374364-0. Archived from the original on 12 October 2022. Retrieved 11 October 2022.
  4. 1 2 3 4 5 6 7 8 Mehta, Ashok B. (2018). "ASIC/SoC Functional Design Verification". SpringerLink. doi:10.1007/978-3-319-59418-7. ISBN   978-3-319-59417-0.
  5. 1 2 3 Evans, Adrian; Silburt, Allan; Vrckovnik, Gary; Brown, Thane; Dufresne, Mario; Hall, Geoffrey; Ho, Tung; Liu, Ying (1998-05-01). "Functional verification of large ASICs". Proceedings of the 35th annual conference on Design automation conference - DAC '98. New York, NY, USA: Association for Computing Machinery. pp. 650–655. doi:10.1145/277044.277210. ISBN   978-0-89791-964-7.
  6. Bhadra, Jayanta; Abadir, Magdy S.; Wang, Li-C.; Ray, Sandip (March 2007). "A Survey of Hybrid Techniques for Functional Verification". IEEE Design & Test of Computers. 24 (2): 112–122. Bibcode:2007IDTC...24..112B. doi:10.1109/MDT.2007.30. ISSN   1558-1918.
  7. A., Ismail, Khaled; Ghany, Mohamed A. Abd El (January 2021). "Survey on Machine Learning Algorithms Enhancing the Functional Verification Process". Electronics. 10 (21): 2688. doi: 10.3390/electronics10212688 . ISSN   2079-9292.{{cite journal}}: CS1 maint: multiple names: authors list (link)
  8. O, Emma; Packwood, Jack; Oistein, Michael. "Future Trends in ASIC Design Verification: The Convergence of Machine Learning and Hardware Security for AI Systems". researchgate.net.