ExpertQuestion 36 of 69

A path fails hold only after you enabled crosstalk analysis. Could CRPR be involved, and how would you investigate?

From PDVerse STA Mentor Guide, part of the pdVerse Mentor Guide

Short Answer

Possibly. Crosstalk-induced delay change on the shared segment of the launch and capture clock paths is only pessimistic — and only removable by CRPR — for a zero-cycle check, where the same clock edge launches and captures. The discriminator is whether this specific check is zero-cycle; if it is not, the crosstalk effect on launch and capture cannot be assumed identical, and CRPR correctly leaves it alone.

Technical Reference DiagramA path fails hold only after you enabled crosstalk analysis. Could CRPR be involved, and how would you investigate?

Technical Explanation

Crosstalk analysis and CRPR interact in exactly one well-defined case, and knowing which case you are in changes the entire debug.

  • Why crosstalk pessimism exists at all on the clock path. When PrimeTime SI performs crosstalk analysis, an aggressor net can push or pull a clock signal's delay on the shared segment of the launch and capture clock trees.
  • Why that is only pessimistic for a zero-cycle check. A zero-cycle check is one where the same clock edge drives both the launch and capture event. There, aggressor switching affects both signals the same way at the same time, so treating the crosstalk delay as independent on each side is double-counting.
  • Why other checks are different. For a check that is not zero-cycle, the crosstalk-induced delay change cannot be assumed identical on launch and capture, since they are different clock events — there is no guaranteed common effect for CRPR to remove, and the extra delay reflects a real SI concern.
  • Where zero-cycle checks actually show up. A standard hold check, a hold check on a register whose Q-bar feeds back to D as in a divide-by-2 circuit, hold checks with crosstalk feedback from Q-bar-to-D coupling, and a multicycle path deliberately set to zero with designed-in launch-capture skew.
  • The investigation, in order. First, confirm the check really is zero-cycle by reading the launch and capture edges out of report_timing (PT) — infer nothing from topology alone. Second, run report_crpr (PT) and check whether the crosstalk delta on the shared segment is being removed. Third, confirm timing_remove_clock_reconvergence_pessimism (PT) is true.
  • The branch people skip. If the check is not zero-cycle, CRPR is correct to leave the crosstalk delta in place — the failure is likely real SI, and the next step is shielding or spacing, not hunting for a credit that was never supposed to apply.

Common Mistake

The Trap: assuming any hold failure that appears only after enabling si_enable_analysis true (PT) must be a missing CRPR credit, without first checking whether the specific path is a zero-cycle check.

  • On a non-zero-cycle path, chasing a CRPR fix wastes time on a mechanism that was never supposed to apply, while the real crosstalk-induced delay stays unaddressed.
  • Confusing the two debugs can also lead to disabling or misconfiguring CRPR globally in an attempt to "fix" a path where it was never the actual cause.

Follow-up Question & Model Response

"You confirm the check is zero-cycle and report_crpr shows the crosstalk delta is not being removed. What would you check next?"

Candidate Model Response: I would confirm timing_remove_clock_reconvergence_pessimism (PT) is actually set true for this run, since CRPR is off entirely if it is false, and I would verify the common clock node CRPR identifies is a real, physically shared point rather than a miscomputed one — for instance, confirming it is not sitting on the wrong side of a clock-gating cell that should have split the launch and capture trees earlier than the tool assumed. If both check out and the credit is still missing, that points to a tool or setup issue worth escalating rather than a modeling gap in the design.

Practical Example

A divide-by-2 clock circuit feeds a register whose Q-bar output loops back to its own D input — a textbook zero-cycle case. Before crosstalk analysis is enabled, report_timing -delay_type min (PT) shows +6 ps hold slack. After set_app_var si_enable_analysis true (PT), an aggressor net routed alongside the shared clock segment pushes the reported slack to −11 ps. report_timing (PT) confirms both launch and capture use the same clock edge, so this is zero-cycle; report_crpr (PT) then shows the crosstalk-induced delta on the shared segment is not being credited back because timing_remove_clock_reconvergence_pessimism (PT) had been left false for this particular run. Re-enabling it restores the delta's removal and the path returns to +5 ps — confirming the failure was a missing CRPR credit, not a real signal integrity problem, precisely because the check was zero-cycle.

Complete STA Handbook

Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.

Offline PDF Bundle

Want all 1109 questions offline?

Get the complete 4-book PDF bundle (PnR, STA, MMMC, Low Power) with a clickable table of contents - no ads, no internet needed.

See what's inside the bundle
Static Timing Analysis (STA) Handbook — ten chaptersSTA HandbookTen chapters on setup, hold, OCV, and PrimeTime signoff.