Part 11 · Senior Prep · Intermediate
Coverage Closure Strategy: Plan-Driven Regression Loop
Hub — verification-plan traceability, regression merge, hole analysis, directed closure tests, sign-off metrics, and the closure pitfalls playbook.
Closure is a disciplined loop, not a pile of tests
Senior closure engineers treat functional coverage as a contract against the verification plan , not a percentage on a single run. Random regressions find broad scenarios; closure closes the gaps the plan still requires — with traceable bins, merged databases, targeted stimulus, and signed waivers.
This hub walks the full loop: map coverpoints to plan features, merge UCDB/VDB across seeds, analyze holes with root-cause discipline, write directed or constrained sequences for stubborn bins, present sign-off metrics to leads, and avoid the anti-patterns that stall tape-out.
Sub-lessons in this topic
coverage-plan-traceability — feature IDs, bin naming, cross design tied to plan rows.
regression-coverage-merge — nightly merge, seed attribution, database hygiene.
hole-analysis-workflow — triage uncovered bins, root cause, owner assignment.
directed-closure-tests — constrained sequences and closure test templates.
signoff-metrics-dashboard — closure scorecard, trend lines, waiver audit trail.
closure-pitfalls-playbook — the failures that look like progress but are not.
Legend: [CLOSE][SENIOR][UVM]
┌─────────────────────────────────────────────────────────────────────────┐
│ COVERAGE CLOSURE LOOP (plan-driven) │
├─────────────────────────────────────────────────────────────────────────┤
│ 1. PLAN MAP coverpoint/cross name ↔ verification-plan feature ID │
│ 2. MERGE all regression seeds → single UCDB/VDB │
│ 3. HOLE TRIAGE uncovered bins → root cause (stimulus / unreachable) │
│ 4. TARGET directed / constrained-random closure sequences │
│ 5. RE-MERGE confirm hole closed, no checker regression │
│ 6. SIGN-OFF metrics dashboard + documented waivers │
└─────────────────────────────────────────────────────────────────────────┘[CLOSE][SENIOR][UVM] data path — monitor to closure metric
dut_mon.ap ──► cov_subscriber.write(t)
│
├─ reset gate? skip
├─ sample on RESPONSE only
└─ cg.sample(t) → per-run UCDB
│
▼
regression merge (all seeds)
│
▼
hole report ↔ plan feature ID
│
▼
closure seq / waiver / sign-offSenior closure mindset
A passing test with zero new bin hits is not closure progress — measure merged functional coverage.
Every uncovered bin must map to a plan row or an explicit waiver with owner approval.
Directed stimulus is a surgical tool for stubborn crosses, not a replacement for random regression.
Code coverage supports confidence; functional coverage against the plan is the closure gate.
Key takeaways
Closure = plan map → merge → hole triage → target → re-merge → sign-off.
Name bins and crosses to match verification-plan feature IDs.
Waivers are documented decisions with rationale — not silent deletes.
Common pitfalls
Reporting single-seed coverage % as 'done' while merged holes remain.
Writing closure tests without updating the plan traceability matrix.
Waiving bins because random did not hit them — without spec review.
When to enter the closure phase
Enter systematic closure when random regression returns diminishing new bin hits — typically after smoke and broad random suites are stable. Prioritize holes on critical crosses and plan-mandatory features before cosmetic bin polish.
[CLOSE][SENIOR] closure readiness checklist
READY:
□ merged functional DB exists for last N nightly runs
□ plan traceability matrix links every covergroup to a feature ID
□ hole report reviewed with design + verification leads
□ closure owner assigned per uncovered cross
NOT READY:
✗ chasing 100% code coverage while functional holes remain
✗ adding seeds without analyzing which bins they might hitKey takeaways
Start closure when random regression plateaus — not on day one.
Critical crosses and plan-mandatory features close first.
Common pitfalls
Declaring closure 'started' without a merged database or plan map.
Closing easy scalar bins while ignoring high-value crosses.