SI analysis is easy to run and easy to run incorrectly: wrong parasitics, a missing corner, a threshold left from an experiment. A short checklist with evidence for each line is the last defence.
Item | Evidence |
|---|---|
SI is enabled in every setup and hold scenario used for signoff | Per-scenario settings read back |
Parasitics are final and contain coupling | Extraction version and coupling flag |
Clock nets are in the analysis | Clock victim list is non-empty and reviewed |
Thresholds and filters documented, hidden totals reported | Filter table with hidden delay on the worst victims |
Noise analysis run with receiver margins; critical receivers clean | Noise summary by class |
Exclusivity and case-analysis claims reviewed | Claim list with owners and evidence |
Last ECO verified before and after | Before-and-after endpoint table |
items = {
"SI enabled in all signoff scenarios": True,
"parasitics final with coupling": True,
"clock nets analysed": True,
"filters documented with hidden totals": False,
"noise run, critical receivers clean": True,
"exclusivity claims reviewed": True,
"last ECO verified": True,
}
open_items = [k for k, v in items.items() if not v]
wns_si = 0.004
assert open_items == ["filters documented with hidden totals"]
ready = not open_items and wns_si >= 0
assert ready is False
print("PASS: not ready; open items", open_items, "although WNS with SI is", wns_si, "ns")With SI on, the worst setup slack is +0.004 ns and everything looks fine, but one item is open: the filter table with hidden totals is missing, so nobody knows how much delay the thresholds hide. A signoff review treats the missing evidence, not the positive WNS, as the deciding fact. The WNS is 4 ps: the hidden total might be larger than that.
Every line has a link to the run and the date; a line without evidence is open.
The checklist is repeated, not copied, after each ECO that changes routing.
Open items have an owner and an expiry date before signoff is declared.
Because the filters can hide several picoseconds of delay; with only 4 ps of slack, the hidden total could be enough to turn the result negative.