SystemVerilog Covergroup Coverage for Functional Verification
Instructor: EDA Academy
Resource—All LevelEnglish
SystemVerilog covergroups define data-oriented functional coverage through sampling events, coverpoints, value and transition bins, cross coverage, options, and methods. They measure intended data behavior, value combinations, illegal cases, ignored cases, and coverage progress during simulation.
5.0
2students
This offering includes
- 1 module
- 5 lectures
- Access on mobile and computer
- 1.68 hours on-demand video
Description
SystemVerilog covergroup coverage provides a structured mechanism for measuring data-oriented functional verification progress. It captures verification intent through user-defined sampling, coverpoints, bins, crosses, options, and methods. Instead of only reporting which code was executed, covergroups describe which values, transitions, ranges, combinations, and special cases have actually occurred during simulation.
Coverpoints define the expressions to be sampled and turn observed values into measurable coverage bins. Automatic bins provide a fast starting point for value coverage, while explicit bins give precise control over which values are tracked and how they are grouped. Scalar bins group related values into one counter, while vector bins provide separate counters for individual values or distributed value groups. Ignore bins remove irrelevant values from coverage calculations, illegal bins identify forbidden values, and default bins collect remaining values when appropriate.
Transition coverage extends value coverage across time. A transition bin records ordered value movement across sampling events, including single changes, longer sequences, repeated values, and transitions across arrays or ranges. This allows a coverage model to measure dynamic data behavior rather than only static value hits. It is useful when functional correctness depends on the order in which values appear.
Cross coverage measures relationships between coverage items. A cover cross creates bins for combinations of coverpoints or variables, making it possible to verify that important value combinations have occurred together. Automatic cross bins provide broad combination coverage, while explicit cross bins use binsof, intersect, and logical selection operators to focus on meaningful cross-product regions. Illegal and ignored cross bins refine the cross space by removing irrelevant combinations and flagging forbidden combinations.
Covergroups can be used inside classes to bind coverage directly to object data and behavior. Class-based covergroups can access class properties, including protected and local members, and each class object can track coverage separately. Sampling can be event-based for active components or manual through sample() for data objects and transaction-style activity.
Coverage options control calculation, reporting, sampling, bin creation, missing-bin reporting, overlap detection, and per-instance tracking. Type options affect all instances of a covergroup type, while instance options support more localized control. Covergroup methods such as sample(), get_coverage(), get_inst_coverage(), set_inst_name(), start(), and stop() provide procedural access to sampling, status, naming, and collection control. Together, these mechanisms make covergroups a precise and practical tool for building measurable functional coverage models.
Catalogue:
Structural vs Functional Coverage
Functional Coverage Orientations
Data-Oriented Functional Coverage
Covergroup Model Basics
Coverpoints and Automatic Bins
Explicit Coverpoint Bins
Explicit Scalar and Vector Bins
Example: Explicit Scalar and Vector Bins
Counting Covergroup Bins
Cover Cross Basics
Example: Automatic Cross Bins
Explicit Cross Bins
Illegal and Ignored Cross Bins
Simplifying Cross Bins
Covergroups in Classes
Coverpoint Transition Bins
Coverage Option Types
Reference: Type-Specific type_option Fields
Reference: Instance-Specific option Fields
Reference: Covergroup Methods
You might also like
More offerings will load here.
Secure checkout via our payment partner.
