ExpertQuestion 138 of 141Source: Synopsys PrimeTime User Guide: Reporting and Debugging Analysis Results (Reporting Normalized Slack)

How do you use normalized slack to decide the achievable clock period?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

Normalized slack divides a path's slack by the propagation delay it is allowed, so paths with different cycle counts can be compared on their effect on frequency. With the same launch and capture clock, the worst normalized slack gives the period change directly: ΔPeriod = −(worst normalized slack) × period. Enable it with set_app_var timing_enable_normalized_slack true (PT) before the timing update.

Technical Reference DiagramHow do you use normalized slack to decide the achievable clock period?
A worked table with two paths, a single-cycle path and a two-cycle multicycle path, showing slack, allowed propagation delay and normalized slack, and the resulting period change computed from the worst normalized slack.

Technical Explanation

  • Raw slack is misleading across path types. A single-cycle path at -10 ps with a 500 ps period has normalized slack -0.02. A four-cycle path at -20 ps with the same period is allowed 2,000 ps, so its normalized slack is -0.01. The first path limits frequency more even though its slack is smaller in magnitude.
  • Set timing_enable_normalized_slack (PT) to true before timing analysis. report_timing -normalized_slack (PT) then reports the worst normalized slack, and the tool can sort paths by it.
  • The normalized_slack attribute on paths from get_timing_paths (PT) is available only if normalized slack was enabled before the last full timing update.
  • It costs runtime and memory. timing_max_normalization_cycles (PT) limits the allowed propagation delay to a multiple of the clock period; the default is four cycles.
  • The period formula applies when launch and capture clocks are the same. For each domain, use the worst normalized slack among its paths. A positive result means the design can run faster, and the same formula gives a negative ΔPeriod.
  • Latches need care. With advanced latch analysis, normalized slack can give the maximum frequency except for recovered paths and paths with latches identified as loop breakers or path breakers.
  • The number is an estimate at the current netlist and parasitics. A slower clock changes nothing physical, but a faster one tightens every path, and the ECO work to reach it is a separate question.

Formula Or Decision Rule

  • Normalized slack = path slack / allowed propagation delay for the path.
  • Allowed propagation delay = number of allowed clock cycles × clock period (capped by timing_max_normalization_cycles (PT), default 4).
  • Period change (same launch and capture clock): ΔPeriod = −(worst normalized slack) × period.
  • Rule: new period = period + ΔPeriod; a negative ΔPeriod means the clock can be sped up.

What To Check

  • That normalized slack was enabled before the last full timing update.
  • Worst normalized slack per clock domain, not only the worst raw slack.
  • Paths with launch and capture on different clocks, where the simple formula does not apply.
  • Latch paths flagged as recovered, loop breakers or path breakers.

Command Checks & Actions

PrimeTime (pt_shell)set_app_var timing_enable_normalized_slack true

Enables normalized slack analysis before timing update.

PrimeTime (pt_shell)report_timing -normalized_slack

Reports the path with the worst normalized slack.

PrimeTime (pt_shell)set_app_var timing_max_normalization_cycles 4

Caps the allowed propagation delay at four cycles to limit runtime.

PrimeTime (pt_shell)get_timing_paths -max_paths 100

Collects paths whose normalized_slack attribute can be queried.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Worst normalized slack -0.01 on an 800 ps clock, so the period needs 8 ps more, within the agreed margin.
  • Suspicious (illustrative): Worst normalized slack comes from a multicycle path whose exception has not been reviewed.
  • Hard stop: Normalized slack below -0.10 on a single-cycle path at the target frequency. The period or the architecture has to change.

Common Mistake

The Trap: Taking the worst raw slack path and dividing by the period to set the new clock. If the worst raw slack is on a four-cycle multicycle path, the result overstates the change by four times, and the team relaxes the clock far more than needed, giving away frequency the design could have met.

What The Interviewer Is Testing

  • Can you compute normalized slack and the period change by hand?
  • Knowing when the simple formula applies and when it does not.
  • Awareness of the enabling variable, its timing, and the cycle cap.

Follow-up Question & Model Response

"What happens with paths between two clocks with different periods?"

Candidate Model Response: The PT UG says normalized slack of such a path indicates how much the clock period needs to change for the path to meet timing, but the simple ΔPeriod formula is stated for the case where launch and capture clocks are the same. For cross-clock paths I look at which clock I can actually change and how the two periods are related, and I compute that path separately rather than applying the same-clock formula. Often only one of the two clocks is negotiable, which changes the answer.

Practical Example

Tapeout Scenario: A domain with an 800 ps clock (illustrative). Path A, single cycle, slack -24 ps: normalized slack -24/800 = -0.03. Path B, two-cycle multicycle, slack -40 ps: -40/1600 = -0.025. The worst normalized slack is -0.03, so ΔPeriod = -(-0.03) × 800 = 24 ps and the achievable period is 824 ps. Using path B's raw slack against one period would have suggested 840 ps and given away 16 ps.

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. →