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.
covergroup-endcovergroup
@@
{covergroup}.sample
coverpoint-endcoverpoint
cross
bins
illegal_bins
ignore_bins