When do you chase WNS, and when TNS?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Chase TNS when there are many shallow violations and the aim is to reduce the amount of fixing work left. Chase WNS when a few deep paths set the frequency or block signoff. Early in closure TNS tells you how much work remains; at signoff every violating endpoint must be fixed, so the order is only a question of which method moves the design fastest.
Technical Explanation
- WNS is the single worst slack. It sets the achievable frequency for that clock and tells you whether a structural fix is needed. TNS is the sum of negative slack over violating endpoints and tells you how much fixing remains.
- In PrimeTime,
timing_report_union_tns(PT) defaults to true, which counts each violating endpoint once, using its worst slack across path groups. Check the setting before comparing TNS numbers between runs or between tools. - A high TNS with a small WNS usually means many endpoints just short, often from one shared cause such as a clock uncertainty change or a weak cell on a common path. Bottleneck analysis and broad sizing attack it well.
- A deep WNS with low TNS means a few structurally bad paths. Sizing will not fix them; they need restructuring, a placement change, a pipeline stage, or a constraint review.
- Clock-network ECO can be told to target TNS.
fix_eco_timing -cell_type clock_network -target_violation_type tns(PT) allows some endpoints to get worse while total negative slack improves, with WNS held at the existing value or at a limit set by-wns_limit. Clock network fixing runs only in the physically aware flow, and TNS targeting needs a PrimeTime-ADV license (PT UG, ECO Flow). - Path groups decide what "worst" means during implementation. If a few deep paths dominate one group, the optimizer spends effort there; splitting them into their own group lets the other endpoints get attention too.
- Normalized slack is a useful third number when clocks differ. A -20 ps slack on a four-cycle path matters less to frequency than -10 ps on a single-cycle path, and
report_timing -normalized_slack(PT) ranks paths by that effect oncetiming_enable_normalized_slack(PT) is set to true before the timing update. - Near signoff the distinction fades. Every violating endpoint must be fixed or waived with evidence, so you track both numbers and the violating endpoint count.
Common Mistake
The Trap: Reporting "TNS improved by 40%" in the weekly review while WNS got worse. TNS-driven clock fixing is allowed to worsen some paths, and when -wns_limit (PT) is set looser than the existing WNS, the worst path can end up slower than before, so the chip got slower even though the total looks better. The team then plans the next two weeks around a number that hides the only path that matters for the frequency target, and the structural fix it needed starts late.
Follow-up Question & Model Response
"Why can fixing WNS first make TNS worse?"
Candidate Model Response: Fixing the worst path often means upsizing cells or changing clock arrival on registers that other paths share. Larger cells add load to their drivers and slow side paths, and clock changes shift slack from one stage to the next. Many endpoints that were slightly negative can get a little worse while the worst one improves. That is why I compare WNS, TNS and endpoint count together after each pass. If WNS is the blocker, I fix it with the smallest local change I can find and re-check the neighbours before moving on.
Practical Example
Tapeout Scenario: Two blocks at the same stage (illustrative). Block A: WNS -18 ps, TNS -9.4 ns over 1,200 endpoints; a single clock uncertainty change and one shared enable buffer explain most of it, so a TNS-first sizing pass removes 1,050 violations. Block B: WNS -260 ps, TNS -1.1 ns over 6 endpoints, all through a 38-level divider; no ECO sizing recovers 260 ps, so the path goes back for a pipeline stage and ECO effort goes elsewhere. Chasing Block B with TNS-driven sizing would have upsized 300 cells on side paths and left WNS at -250 ps; chasing Block A path by path from the worst endpoint would have spent two days on endpoints that one buffer change fixes together.
PnR Flow Mentor Guide
Master the Physical Design Implementation Flow
Read the complete 8-chapter PnR Flow Mentor Guide free on the web — library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

Continue practising