BeginnerQuestion 129 of 157Source: Synopsys PrimeTime User Guide: Reporting and Debugging Analysis Results

What are WNS, TNS and the number of violating endpoints, and what does each tell you?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

WNS is the worst negative slack, the single worst endpoint. TNS is the total negative slack, the sum of the negative slacks of all failing endpoints. NVE is the number of violating endpoints. Together they tell you how bad the worst path is, how much total work is left, and whether the problem is a few paths or a wide spread.

Technical Reference DiagramWhat are WNS, TNS and the number of violating endpoints, and what does each tell you?
Histogram of endpoint slacks with the negative bins highlighted, annotated with WNS at the worst bin, TNS as the summed negative area and NVE as the count of failing endpoints.

Technical Explanation

  • Slack is computed per endpoint, and each endpoint keeps only its worst slack. WNS is the most negative of those values. It tells you how far the single worst path is from passing, which usually sets the size of the fix you need, such as a Vt swap versus a restructure.
  • TNS adds up the negative slacks of every failing endpoint. Passing endpoints contribute nothing. It measures the total amount of work left, and it is the better number for tracking whether an ECO loop is converging.
  • NVE counts the failing endpoints. It separates a narrow problem from a wide one. A TNS of -2 ns could be 4 endpoints at -500 ps or 400 endpoints at -5 ps, and those need very different fixes.
  • In PrimeTime, TNS defaults to union mode: timing_report_union_tns (PT) is true, so each endpoint contributes its worst slack once across path groups and scenarios. In every-group mode an endpoint that fails in two path groups counts twice.
  • report_qor (PT) and report_qor (ICC2) both summarize timing per path group, including TNS, but their numbers differ because the timing engines and parasitics differ. Compare like with like across loops.
  • report_global_timing (PT) reports WNS, TNS and violating counts gathered from violating paths only, split into categories such as in-to-reg, reg-to-reg and reg-to-out. That split quickly shows whether failures sit on I/O constraints or internal logic.
  • Setup and hold have separate WNS, TNS and NVE. Always read them as two sets of three numbers, per scenario.

Formula Or Decision Rule

  • Endpoint slack: slack(e) = worst slack over all paths ending at e.
  • WNS = min over endpoints of slack(e), reported as a negative number only when something fails.
  • TNS = sum of slack(e) over all endpoints with slack(e) < 0.
  • NVE = count of endpoints with slack(e) < 0.
  • Average violation = TNS / NVE, a quick way to tell a few deep failures from many shallow ones.

What To Check

  • WNS, TNS and NVE for setup and for hold, per active scenario.
  • Whether TNS is in union mode, so the number matches what the team is tracking.
  • The spread of failures across path groups from report_global_timing (PT).
  • The TNS / NVE ratio, which shows whether you face deep or shallow violations.
  • The trend of all three numbers across ECO loops, not just the latest value.

Command Checks & Actions

PrimeTime (pt_shell)report_qor

Prints the per-path-group timing summary, including TNS, for the current PrimeTime session.

PrimeTime (pt_shell)report_global_timing

Summarizes WNS, TNS and violation counts from violating paths, split by path category.

ICC2 (icc2_shell)report_qor

Prints WNS, TNS and violation counts inside ICC2, useful for tracking optimization before signoff.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Setup and hold WNS at or above 0, TNS 0 and NVE 0 in every active scenario.
  • Suspicious (illustrative): WNS of -10 ps with NVE under 20 at signoff, all on one or two path groups you can explain.
  • Hard stop: TNS that grows between two ECO loops, or NVE in the thousands at signoff. The loop is not converging and needs a different strategy.

Common Mistake

The Trap: Tracking only WNS. A junior reports "WNS improved from -40 ps to -25 ps" after an ECO, while TNS went from -1.2 ns to -3.8 ns because the fix pushed 200 near-critical endpoints just below zero. The next loop has to undo most of the changes, costing a full ECO iteration.

What The Interviewer Is Testing

  • Can you define TNS precisely, including that only negative endpoint slacks add up?
  • Knowing that the same TNS can mean very different problems depending on NVE.
  • Awareness that report_qor (ICC2) and report_qor (PT) numbers differ and should not be mixed.

Follow-up Question & Model Response

"Why can TNS get worse while WNS gets better?"

Candidate Model Response: WNS looks at one endpoint and TNS looks at all of them. An ECO that upsizes cells on the worst path adds input capacitance to shared fan-in logic. That slows other paths through the same drivers, and some move from +2 ps to -3 ps. WNS improves because the worst path got faster, but NVE goes up and TNS gets worse. Watch all three numbers after every loop.

Practical Example

Tapeout Scenario: A reg-to-reg setup scenario shows 5 failing endpoints with slacks of -42, -30, -18, -6 and -4 ps (illustrative). WNS is -42 ps, TNS is -42 - 30 - 18 - 6 - 4 = -100 ps, and NVE is 5, giving an average of -20 ps. A second block reports WNS -9 ps, TNS -1.8 ns and NVE 240, an average of -7.5 ps. The first needs targeted work on a few deep paths. The second needs broad, cheap fixes such as Vt swaps across many shallow paths.

PnR Flow Mentor Guide

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.

PnR Flow Physical Design Mentor Guide — eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out. →