Coverage for functional verification
If you don’t measure something you certainly can’t improve it in any meaningful way. This is especially important with a process that can never be completed due to the sheer magnitude of the possibilities. We are of course talking about the functional verification process. The total number of states that a design can be in far exceeds our ability to visit them all during the design process and so we have to carefully choose those that are exercised. Back in the days of directed test, each test was carefully crafted to verify certain pieces of functionality. Holes were discovered by using code coverage.
While this was a fairly good method twenty years ago it doesn’t work well today. The first reason is that designs today contain a lot of concurrency and the ways in which independent state machines interact with each other cannot be seen with code coverage – it can only see which states and transitions each state machine has executed. The second reason is that generating directed tests has become too difficult and time consuming. Thus the industry adopted constrained random pattern generation. While this technology has a lot of problems, it is what the industry has adopted for block level verification and it requires a different kind of coverage.
Functional coverage was developed to be an orthogonal measure of the effectiveness of tests generated by constrained random tools. It became possible to see which aspects of a design they stimulated. By identifying the aspects of a design that were important, it became possible to measure verification progress. Of course this relies on the correct functional coverage metrics being defined. Define too many and you are wasting time, don’t define enough, or the wrong ones and bugs can slip through. This is perhaps one area, more than the rest of the verification process, where it can truly be described as an art.
To help with the general problems associated with functional verification, Mentor has been creating the Verification Academy. This contains language help, methodology guides, a series of cookbooks and online training. A couple of days ago, Mentor announced the latest addition – The Coverage Cookbook. Mentor describes it like this:
This first phase of the Coverage Cookbook introduces a methodology focused on coverage that complements the Universal Verification Methodology (UVM), an industry standard verification methodology that has gained a significant following over the last several years. The Coverage Cookbook is a series of online linked articles designed to help you master the methodology and process required to effectively adopt a coverage-driven verification flow by providing:
- a foundation of understanding on the various types of coverage metrics available today, and how to effectively use them
- a repeatable process for creating functional coverage models distilled from a specification
- real-world examples used to demonstrate the functional coverage modeling process.
The guide introduces a systematic methodology for developing functional coverage models and coverage-driven processes. Most people should be able to gain access to this material, although it does require a registration.
Brian Bailey – keeping you covered
If you liked this feature, and would like to see a weekly or bi-weekly collection of related features delivered directly to your inbox, sign up for the IC Design newsletter.