Overview

Coverage is a verification methodology used to track and analyze how thoroughly a design has been tested. It provides insights into which parts of the design have been exercised during simulation and helps identify untested or inadequately tested areas. Coverage analysis is essential for ensuring the effectiveness and completeness of your verification efforts.

1. Coverage Metrics: Coverage metrics define what aspects of the design you want to measure. There are various coverage metrics, such as line coverage, statement coverage, branch coverage, toggle coverage, and more. Each metric focuses on specific types of design elements and their execution during simulation.

2. Coverage Models: Coverage models define the rules and criteria for determining when a coverage metric is considered "covered." These models specify the conditions that need to be met to mark a particular coverage point as exercised.

3. Coverage Points: Coverage points are specific locations in your code where coverage metrics are evaluated. These points can include branches, conditions, assignments, state transitions, and more.

4. Coverage Bins: Coverage bins are predefined ranges or categories used to classify the outcomes of a coverage point. Bins determine how the simulation results are grouped for analysis.

5. Cross Coverage: Cross coverage involves combining different coverage metrics to analyze interactions between different parts of the design. For example, it can help ensure that all possible combinations of inputs and states are exercised.

6. Coverage Reports: After simulation, coverage reports are generated to display the results of the coverage analysis. These reports provide information about the coverage achieved for each coverage metric, highlighting areas that need further testing.

Important Keywords

covergroup-endcovergroup
@@
{covergroup}.sample
coverpoint-endcoverpoint
cross
bins
illegal_bins
ignore_bins


Theory Questions
    Coverage is necessary in verification to ensure that all aspects of the design under test (DUT) have been thoroughly exercised. It helps identify whether the verification environment has tested all intended scenarios, including corner cases. By measuring functional coverage and code coverage, verification engineers can assess how much of the design functionality and code has been exercised, guiding the creation of additional tests if needed. Coverage provides confidence that the design is robust and performs as expected under a wide range of conditions, reducing the risk of bugs going undetected.
    This means that there is code missing for the functionaly whihc was actually part of the signoff criteria. It could also mean that the VErif engineer has added many redundant coverage requirements which were not part of the sign off.
    This primarily means that the coverage planned and coded for the design is incomplete. Now the Verif engineer would have to sit with the designer and conclude if any covergroups are needed or if the code has redundancies which the designer will later have to remove to meet the sign off criteria.
    Line Coverage: Measures whether each line of the design code has been executed. Statement Coverage: Tracks the execution of individual statements in the code. Branch Coverage: Ensures that all branches of control structures (like if-else, case tatements) have been taken. Condition Coverage: Verifies whether each boolean sub-expression in a condition has been evaluated to both true and false. Expression Coverage: Checks the evaluation of complex expressions and whether all parts have been exercised. Toggle Coverage: Monitors if each bit in a signal or variable has toggled between 0 and 1.