Declaring bins says what to measure. Options, methods, and constructor arguments say how: which instances report separately, how much each part counts, when sampling runs, and how one definition serves many instances.
Knob | Question it answers |
|---|---|
| Do N instances merge into one number or report as N rows, and what labels those rows? |
| How much does each element count, what is the target, and how many hits make a bin trustworthy? |
| How does a test trigger, read, and pause coverage at runtime? |
Constructor arguments | How does one covergroup definition serve instances with different ranges and names? |
Lesson | What it covers |
|---|---|
Type-level versus per-instance accumulation, instance naming, and when separate rows matter. | |
Rollup weighting, done thresholds, hit thresholds, and instance scope versus type scope. | |
Procedural sampling, coverage queries, gating windows, and tests that stop on goal. | |
Constructor arguments, value versus ref passing, and one definition reused per port. |
The type-level number blends all instances. 98% here is the union of their bins (type_option.merge_instances = 1): three healthy ports hit nearly every bin, and an idle fourth port changes nothing. Per-instance rows make each port visible.