Part 11 · Senior Prep · Intermediate

Coverage Plan Traceability: Bins That Mean Something

Linking covergroups, coverpoints, and crosses to verification-plan feature IDs — naming discipline, cross design, and audit-ready traceability.

Every bin answers a plan question

A coverpoint without a plan row is decoration. Senior engineers name option.name, bins, and crosses so a coverage report row maps directly to a verification-plan feature ID — e.g. FEAT-AXI-042 for write-large-burst cross coverage.

diagram
[CLOSE][SENIOR][UVM] traceability chain

  Verification Plan          Coverage Implementation
  ─────────────────          ───────────────────────
  FEAT-BUS-010: read         cp_dir.bins read
  FEAT-BUS-011: write        cp_dir.bins write
  FEAT-BUS-020: burst len    cp_len bins single/small/large
  FEAT-BUS-030: wr+large     x_dir_len cross (write × large)

  Matrix column: Plan ID | Covergroup | Bin/Cross | Owner | Status
systemverilog
covergroup axi_cov with function sample(axi_txn t);
  option.name = "axi_cov";  // matches plan section name
  option.comment = "FEAT-AXI-* bus protocol coverage";

  cp_dir : coverpoint t.write {
    bins read  = {0};   // FEAT-AXI-010
    bins write = {1};   // FEAT-AXI-011
  }
  cp_len : coverpoint t.burst_len {
    bins single = {1};       // FEAT-AXI-020
    bins small  = {[2:4]};
    bins large  = {[5:16]};  // FEAT-AXI-021
  }
  x_wr_large : cross cp_dir, cp_len {
    bins wr_large = binsof(cp_dir.write) && binsof(cp_len.large);
    // FEAT-AXI-030 — plan-mandatory cross
  }
endgroup
  • Maintain a spreadsheet or tool export: Plan ID ↔ covergroup ↔ bin/cross ↔ owner.

  • Use option.comment on covergroups for audit trails in merged reports.

  • Design crosses for plan scenarios — not every mathematical combination.

Key takeaways

  • Traceability turns coverage % into plan compliance evidence.

  • Name bins for humans and auditors — not just the simulator.

  • Cross design follows plan scenarios; avoid bin explosion.

Common pitfalls

  • Auto-generated crosses with thousands of unreachable cells.

  • Renaming bins mid-project without updating the traceability matrix.

  • Sampling driver intent instead of monitor-visible DUT behavior.


Cross design for closure velocity

Use ignore_bins and illegal_bins to prune spec-illegal combinations early. Use binsof filtering to name the crosses closure engineers will target:

systemverilog
x_qos : cross cp_qos, cp_len {
  ignore_bins reserved = binsof(cp_qos.reserved);
  bins hi_small = binsof(cp_qos.high) && binsof(cp_len.small);
  bins hi_large = binsof(cp_qos.high) && binsof(cp_len.large);
}

Traceability review ritual

  1. Walk plan rows top-down; confirm each has a coverpoint or cross.

  2. Flag plan rows with no coverage hook — add covergroup or document waiver.

  3. Flag coverpoints with no plan row — delete or justify as debug-only.

  4. Assign closure owner per cross before regression merge review.

Key takeaways

  • Prune illegal/reserved combinations before merge review.

  • Named cross bins become closure tickets — one owner per stubborn cell.

Common pitfalls

  • Closure meetings debating unnamed auto-cross cells.

  • Treating ignore_bins as a waiver substitute — they are different.