Part 5 · Functional Coverage · Intermediate
Cross Coverage
Hub — cross semantics, binsof/intersect selection, pruning with ignore/illegal bins, explosion control, and intent-driven cross patterns.
Overview
Individual coverpoints prove each field took its interesting values in isolation . Interaction bugs live in combinations: a burst write works, an unaligned address works, but an unaligned burst write corrupts data. cross coverage measures whether those combinations actually occurred. It is the highest-leverage construct in a coverage model — and the easiest to abuse, because the bin count multiplies.
A cross is declared inside a covergroup from two or more coverpoints. By default it generates one cross bin per combination of source bins — the full product. The skill of cross coverage is shaping that product so it matches verification intent: selecting subsets with binsof, removing impossible combinations with ignore_bins, and flagging forbidden ones with illegal_bins.
Sub-topics
Cross Basics — product-of-bins semantics, auto-generated cross bins, crossing 3+ points, when a cross encodes real intent.
binsof & intersect — selecting cross subsets, && / || / ! combinations, building named cross bins.
Pruning Crosses — ignore_bins for impossible combinations, illegal_bins as runtime checks, the goal-math effect.
Managing Cross Explosion — bin-count multiplication, coarser bins, targeted crosses, splitting covergroups.
Cross Coverage Patterns — opcode×operand, burst×length×alignment, state×event, error×recovery; spec table to crosses.
CROSS COVERAGE — topic map
coverpoint cp_op coverpoint cp_len
(4 bins) (3 bins)
│ │
└──────────┬──────────────┘
▼
cross cp_op, cp_len ── 1. basics: 4 × 3 = 12 auto bins
│
┌──────────┼──────────────┐
▼ ▼ ▼
binsof / ignore_bins explosion
intersect illegal_bins control
(select (prune the (coarsen, split,
subsets) product) target) ── 2/3/4
│
▼
intent-driven patterns ── 5. spec rows → named cross binsKey takeaways
A cross measures combinations of coverpoint bins — that is where interaction bugs hide.
The default cross is the full product of source bins; shape it to match the plan, never accept it blindly.
binsof selects, ignore_bins prunes the denominator, illegal_bins turns a combination into a runtime check.
Cross bin count multiplies — control explosion before it makes closure impossible.