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

  1. Cross Basics — product-of-bins semantics, auto-generated cross bins, crossing 3+ points, when a cross encodes real intent.

  2. binsof & intersect — selecting cross subsets, && / || / ! combinations, building named cross bins.

  3. Pruning Crosses — ignore_bins for impossible combinations, illegal_bins as runtime checks, the goal-math effect.

  4. Managing Cross Explosion — bin-count multiplication, coarser bins, targeted crosses, splitting covergroups.

  5. Cross Coverage Patterns — opcode×operand, burst×length×alignment, state×event, error×recovery; spec table to crosses.

diagram
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 bins

Key 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.