By the end of a project there are many things to confirm, and they differ in weight. A checklist that treats a missing clock definition and a missing log file alike teaches nobody anything. Weighting items into blockers (must be closed) and majors (closed or waived with evidence) gives a decision rule.
Item | Weight | Evidence |
|---|---|---|
No unclocked registers or unconstrained endpoints | Blocker | Coverage report is empty |
Every exception reviewed with its path count | Blocker | Exception register |
All scenarios run, setup and hold clean | Blocker | Per-scenario summary |
Multicycle setup exceptions have hold counterparts | Blocker | Exception register |
Derate audit and library sanity checks passed | Blocker | Audit output |
Run manifest complete and reproducible within tolerance | Blocker | Manifest and comparison |
SI and noise: critical receivers and filters clean | Blocker | SI checklist |
SI and noise signoff: remaining items | Major | SI checklist |
Waivers documented with owner and expiry | Major | Waiver list |
items = [
("coverage", "blocker", "closed"),
("exceptions reviewed", "blocker", "closed"),
("all scenarios clean", "blocker", "closed"),
("multicycle hold counterparts", "blocker", "closed"),
("derate audit and sanity checks", "blocker", "closed"),
("manifest reproducible", "blocker", "closed"),
("si/noise critical receivers and filters", "blocker", "closed"),
("si and noise signoff (remaining)", "major", "open"),
("waivers documented", "major", "closed"),
]
blockers_open = [n for n, w, s in items if w == "blocker" and s != "closed"]
majors_open = [n for n, w, s in items if w == "major" and s == "open"]
majors_waived = [n for n, w, s in items if w == "major" and s == "waived"]
ready = not blockers_open and not majors_open
assert blockers_open == [] and majors_open == ["si and noise signoff (remaining)"] and majors_waived == []
assert ready is False
print("PASS: not ready; open majors", majors_open, "; waived majors", majors_waived)All seven blockers are closed, including the derate and library sanity audit, reproducibility against the manifest, and the critical SI and noise receivers and filters: nondeterminism is a defect to fix first, open critical SI and noise items block signoff, and a failed library sanity check is not waivable. One major is still open: the remaining SI and noise items. The rule says that signoff waits for the open major to be closed or formally waived. Showing the waived items separately keeps accepted risk visible: a waived item is not a closed item, and the signoff statement lists it. The weights here are an example policy; adjust them to your project, but keep reproducibility, the library and derate audit, and critical SI and noise receivers as blockers.
Each item has a weight, an owner, an evidence link and a status of closed, waived or open.
Waived items carry the waiver text, approver and expiry date.
The checklist is regenerated from the current state, not carried over from the previous milestone.
No: it is a blocker. Blockers have to be closed; only majors can be waived.