ExpertQuestion 220 of 111Source PDF page undefined

Why is scan-shift hold time fixing intentionally deferred during placement optimization?

From PDVerse PnR Interview Handbook ยท pdVerse Mentor Guide

Short Answer

Scan flip-flops sit in long shift chains connected through dedicated scan-in/scan-out pins, and during scan-shift mode the clock runs much slower than functional speed โ€” hold time between adjacent scan flops in that mode depends purely on local clock skew. The catch: during placement, clocks are still modeled as ideal (zero latency, zero skew, per the earlier "why clocks must remain ideal" question) โ€” so under that ideal model, literally every back-to-back scan flop pair looks like a hold violation, even though none of them actually are.

Technical Reference DiagramWhy is scan-shift hold time fixing intentionally deferred during placement optimization?
Why is scan-shift hold time fixing intentionally deferred during placement optimization?, illustrating the physical design concept.

Technical Explanation

  • Scan flip-flops sit in long shift chains connected through dedicated scan-in/scan-out pins, and during scan-shift mode the clock runs much slower than functional speed โ€” hold time between adjacent scan flops in that mode depends purely on local clock skew.
  • The catch: during placement, clocks are still modeled as ideal (zero latency, zero skew, per the earlier "why clocks must remain ideal" question) โ€” so under that ideal model, literally every back-to-back scan flop pair looks like a hold violation, even though none of them actually are.
  • If the placer tried to fix scan hold under this ideal-clock assumption, it would insert a hold-delay buffer between essentially every pair of scan flops across the whole chip โ€” thousands of buffers solving zero real problems.
  • The correct methodology is sequencing: disable hold fixing on scan-shift scenarios during place_opt, let scan chains get re-stitched via ScanDEF as placement settles, build the real clock tree in CTS, and only then fix any remaining genuine scan-hold violations post-CTS with short routing detours or dedicated delay cells.
  • This is a direct, concrete instance of the same principle the ideal-clock question establishes in the abstract โ€” deferring optimization until the thing being optimized against (a real clock tree) actually exists.

Common Mistake

The Trap: Enabling hold optimization across all scenarios including scan shift during place_opt. The design area expands by 15% purely from fake scan-shift hold buffers.

Follow-up Question & Model Response

"When should scan hold timing be analyzed and fixed?"

Candidate Model Response: Scan hold should be analyzed post-CTS once real clock skew is known. Most scan hold violations disappear naturally due to clock tree insertion delay balancing.

Practical Example

Disabling Pre-CTS Scan Hold Fixing:

# Synopsys ICC2: Disable hold optimization on test mode scenarios during place_opt
set_scenario_options -scenarios [get_scenarios *scan*] -hold false

# Enable setup optimization only
set_scenario_options -scenarios [get_scenarios *scan*] -setup true

Physical Design & Planning Handbook

Dive into 14 comprehensive chapters covering netlist sanity, FinFET grids, macro placement, power grids, CTS, and timing budgeting.