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.
[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 | Statuscovergroup 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
}
endgroupMaintain 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:
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
Walk plan rows top-down; confirm each has a coverpoint or cross.
Flag plan rows with no coverage hook — add covergroup or document waiver.
Flag coverpoints with no plan row — delete or justify as debug-only.
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.