Slack
Tell me
Lens reads each path's slack from your timing reports; it does not run timing analysis itself. A path with slack below zero is violating, and for each check Lens reports WNS, the single worst path's slack, and TNS, the sum of the violating paths' slacks.
Show me
- Timing Review tab, KPI cards: the SETUP and HOLD cards each show WNS (ns), TNS (ns) and Violations. With violations they show the real values in red-orange. With none they read 0.000 ns and 0 violations, with the message "No timing violations detected."
- Timing Review tab, Per-Clock Breakdown: WNS, TNS and Violations for each clock. A red or amber row means a violating path was reported. A grey N/A row means no violating path for that check was reported in this scenario.
- Timing Explorer: the Summary Information strip shows the clock's WNS and TNS, and the context line above Top Net Segments shows the Worst Slack.
- Scenario Analyzer: the Clock × Scenario Stress Matrix colours each cell RED, AMBER or GREEN by absolute slack, and Most Sensitive Clocks gives each clock's worst slack and the scenario it occurred in.
- Lens Compare, Path Diff: Base Slack (ns), Cand Slack (ns) and ΔSlack (ns) for each path. See Compare two runs.
Teach me
Slack is the margin on a timing path: the time by which the signal arrives before it had to (positive slack) or after it had to (negative slack, a violation).
POCV reports. In a report made with POCV (report_timing -variation), each slack line prints three numbers: Mean, Sensitivity, and the corner Value that the report's verdict is judged against. Lens reads the corner Value as the slack. The Path Budget Waterfall's components use their corner Values too, so the waterfall, the paths table and the report agree. Lens goes by the report's own Mean Sensit … Value column-header row. If that row and the -variation option in the report's command echo disagree, Lens logs a warning naming both and still follows the header; it never decides by counting numbers. Earlier releases read the Mean instead; see Releases.
A dash is not a zero. A value that is not in the loaded reports shows as an em dash with a reason, given on hover, in a caption or in the card text. It never shows as 0 or as green.
N/A is about the report, not the clock. A grey N/A row does not mean the clock is inactive, unconstrained, not analysed, or passing at zero slack. A violation-only report (report_timing -slack_lesser_than 0) carries no passing margin, which is why passing clocks show N/A rather than 0.
Clean reports. A PrimeTime report that reads No paths with slack less than 0.0000 has nothing to analyse. Lens treats it as normal and passing, with no warning.
Truncated reports understate TNS. If your PrimeTime or Fusion Compiler run truncates its paths, for example with a -max_paths limit far below the number of violations, Lens TNS is understated. That comes from the report, not from Lens. Check your report_timing -max_paths setting before you quote TNS.
PASS_INFERRED is not slack. In Corner Sensitivity, a point drawn at WNS = 0.000 for a PASS_INFERRED status is not real slack. See Corners and scenarios.
Units. PrimeTime numbers are always in nanoseconds. A Cadence report states no time unit, so until you set Settings > Timing unit for Cadence reports to ns or ps, Lens marks numbers from Cadence reports "unit unknown". The setting is your statement of the unit; Lens does not detect it.
Fusion Compiler numbers are also always in nanoseconds; only Cadence reports need the setting.
Still have a question?
Updated 19 October 2026