Most wasted closure effort traces back to a few repeated misreadings. This lesson lists them with the check that avoids each, so you can run through it before committing to a fix.
# | Misreading | Correction |
|---|---|---|
1 | Treating MET as proof the design works | MET means this check passes under these constraints; constraints and other checks still matter |
2 | Ignoring the path type (max versus min) | Read the header first; setup and hold fixes are opposite |
3 | Fixing the largest cell instead of the largest increment | Delay per stage, not cell size, is the lever |
4 | Comparing slack between different clock models or corners | Check the header: ideal or propagated, which view |
5 | Reading Path as if it were Incr | Path is cumulative; Incr is the step |
6 | Assuming a missing path is clean | A path can be missing because it is unconstrained |
7 | Blaming logic for a clock-side loss | Read the launch and capture clock sections |
8 | Ignoring the pessimism credit when comparing runs | Compare with the same CRPR setting |
# Misreading 5: summing the Path column instead of the Incr column
incr = [0.30, 0.00, 0.40, 0.30, 0.15, 0.05]
cum = []
t = 0.0
for x in incr:
t += x; cum.append(round(t, 2))
assert cum[-1] == 1.20 # the last Path value already IS the arrival
assert sum(cum) != cum[-1] # summing Path double counts
print("PASS: arrival", cum[-1], "ns; summing the cumulative column would give", round(sum(cum), 2))The cumulative column already holds the answer at the last row; adding its entries gives 4.65 ns, an absurd number. The Incr column is for finding the largest steps, the Path column for totals. Writing this distinction down once saves repeated confusion in new team members.
A short pre-fix checklist in the closure procedure: type, view, clock sections, constraints, then logic.
Reviews quote the header with every report, so cross-run comparisons are valid.
New engineers recompute one report by hand in their first week.
Unconstrained endpoints: some flops have no clock or no constraint, so they are not reported. Run the clock and constraint audits before trusting the clean slack.