STA sign-off is the final gate before tape-out. It is a formal declaration that timing has been fully verified at all corners, in all operating modes, with all physical effects (OCV, crosstalk, clock skew) accounted for — and that every path in the design meets its timing requirement. This page gives you the complete sign-off checklist used in production ASIC design.
Sign-off timing is different from implementation timing. Implementation timing uses fast, approximate models to guide P&R decisions. Sign-off timing uses:
| Analysis | Process corner | Voltage | Temperature | Purpose |
|---|---|---|---|---|
| Setup (worst) | SS (Slow-Slow) | V_min | T_max (e.g. 125°C) | Slowest logic path — catches setup violations |
| Setup (nominal) | TT (Typical) | V_nom | 25°C | Verifies nominal operation |
| Hold (worst) | FF (Fast-Fast) | V_max | T_min (e.g. −40°C) | Fastest logic — data arrives earliest, catches hold violations |
| Leakage (worst) | FF | V_max | T_max | Not timing, but used for power sign-off |
| Scan shift (setup) | SS | V_min | 125°C | Scan clock path setup — often at slower scan clock frequency |
| Scan capture (hold) | FF | V_max | −40°C | Scan capture hold — DFT-specific |
No exceptions without written documentation and project lead sign-off. Every remaining violation after closure must either be fixed or carry a written technical justification with risk acceptance. Hold violations have zero tolerance — they cannot be deferred.
set_propagated_clock [all_clocks] is in the SDC.report_ocv_setting.set_si_mode -enable_delta_delay true). Check report_si_bottleneck for any delta-delay violations.set_false_path between asynchronous clock domains must be confirmed by CDC tool (Meridian CDC, Spyglass CDC). No unhandled asynchronous crossings.set_multicycle_path has a written justification of the architectural property that guarantees the multi-cycle behaviour. Verified in RTL and gate simulation.## ── Load sign-off environment ──
source signoff_setup.tcl ; # sets lib, netlist, SPEF paths for this corner
set_propagated_clock [all_clocks]
## ── Enable all physical effects ──
set_si_mode -enable_delta_delay true
set_ocv_mode -enable_pocv true ; # or set_timing_derate for AOCV
## ── Run timing update ──
update_timing -full
## ── Worst-case summary: must all be >= 0 ──
report_timing_summary -slack_lesser_than 0.001 \
-max_paths 10 -nworst 5
## ── Detailed violations (should be ZERO items) ──
report_timing -delay_type max -nworst 20 -slack_lesser_than 0 \
-path_type full > setup_violations_report.txt
report_timing -delay_type min -nworst 20 -slack_lesser_than 0 \
-path_type full > hold_violations_report.txt
## ── Per-clock-group summary ──
foreach clk [get_object_name [all_clocks]] {
set wns [get_attribute [get_timing_paths -delay_type max \
-group $clk -nworst 1] slack]
puts "Clock $clk : WNS = $wns"
}
## ── OCV settings in effect ──
report_ocv_setting
## ── SI analysis results ──
report_si_bottleneck -delta_delay -significant_power 0.5
## ── Exception list (must be reviewed/documented) ──
report_exceptions > exceptions_list.txt
set fp [open exceptions_list.txt r]
set n [llength [split [read $fp] "\n"]]
close $fp
puts "Total exception lines: $n <- review all of these"
| Failure | Typical root cause | Resolution |
|---|---|---|
| WNS < 0 only at SS corner | A critical path was fixed at TT but still fails SS due to higher delay derating | Size up additional cells; verify OCV factors; check if the path is critical at SS |
| Hold violations at FF corner | ECO buffers removed or insufficient; CTS skew too high | Insert more delay cells; check hold-aware CTS; verify ECO was applied correctly |
| Scan capture failures at at-speed | Launch-to-capture scan path too long at the functional clock frequency | Add scan clock buffering; check scan path constraints; consider dedicated scan corners |
| Cross-domain paths without exception | CDC paths not constrained; new paths added in late ECO not constrained | Run CDC tool; add appropriate set_false_path or set_max_delay; verify in CDC tool |
| SPEF timestamp mismatch | SPEF extracted from a different DEF revision than the sign-off netlist | Re-extract from the exact same routing database used for tapeout |
The netlist, SPEF, and SDC used for sign-off must be identical to what is submitted for tapeout. Any change after sign-off — including a “trivial” DRC fix, a spare cell connection, or a clock tree buffer swap — requires re-running sign-off timing. There is no such thing as a change too small to affect timing in a multi-GHz chip at advanced nodes. One re-routed net can shift a nearby victim net’s coupling capacitance enough to cause a crosstalk failure.
You’ve covered every major topic in Static Timing Analysis: from first principles of setup and hold, through Liberty files, PVT corners, OCV, timing exceptions, crosstalk, clock trees, reading reports, fixing violations, ECO flow, and finally sign-off. You now have the conceptual foundation and practical tool knowledge to work in ASIC timing closure.
At minimum: SS (Slow-Slow) at Vmin/Tmax for setup, FF (Fast-Fast) at Vmax/Tmin for hold, and TT at nominal for functional verification. Production designs also include SSG (for scan shift), FSSG, and IO interface corners. Every defined mode at every corner must show WNS ≥ 0 and zero hold violations.
WNS ≥ 0.000 ns at every corner and every mode. TNS = 0 (no path with negative slack). NVP = 0 (zero violating paths). Any remaining violation requires a formal waiver with written justification, risk assessment, and project lead signature — and even then, hold violations have zero tolerance and cannot be waived.
OCV accounts for manufacturing variation within a single die — identical gates at different locations have slightly different delays. At sign-off, timing must pass after OCV derating is applied to all paths. At advanced nodes (16nm and below), POCV (statistical sigma-based) is the preferred method. Sign-off without OCV is invalid because it ignores a real physical source of timing failure.
All CDC paths must be either synchronised (verified by CDC tool) or formally constrained as false paths with CDC tool confirmation. A CDC tool report with zero unhandled asynchronous crossings is a mandatory sign-off artifact alongside the timing reports. STA alone cannot detect CDC violations — a dedicated CDC tool is required.
Required: (1) timing report showing WNS=0/TNS=0 at all corners/modes; (2) exception list with architectural justification for every FP and MCP; (3) CDC tool report showing zero unhandled crossings; (4) OCV settings confirmation; (5) library version record with checksums; (6) sign-off checklist signed by timing lead and design lead. The golden netlist checksum is also recorded in the sign-off document.