IntermediateQuestion 253 of 142Source PDF page undefined

Why would you need copy_useful_skew instead of just trusting CCD ran the same everywhere?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

copy_useful_skew copies CCD offsets to new scenarios for consistent timing/QoR reporting when CTS balance-point offsets were derived in only a subset of active scenarios. It also ensures set_clock_latency constraints are set on all pins/scenarios by computing the average offset across active scenarios and scaling it back per corner -- without it, scenarios that never got their own CCD run would report inconsistent, incomparable timing.

Technical Reference DiagramWhy would you need copy_useful_skew instead of just trusting CCD ran the same everywhere?
Why would you need copy_useful_skew instead of just trusting CCD ran the same everywhere?, illustrating the physical design concept.

Technical Explanation

  • copy_useful_skew copies CCD offsets to new scenarios for consistent timing/QoR reporting, specifically when CTS balance-point offsets were derived in only a subset of active scenarios.
  • It also ensures set_clock_latency constraints are set on all pins across all scenarios -- computing the average offset across active scenarios and scaling it back per corner.
  • Without this, scenarios that never had their own CCD run would report timing that isn't directly comparable to scenarios that did -- an apples-to-oranges QoR comparison.
  • copy_useful_skew is the real command this page names repeatedly -- verify its exact source/destination scenario flag names against the ICC2 Implementation User Guide before publishing a specific invocation.

Common Mistake

The Trap: Assuming CCD offsets automatically apply consistently across every active scenario, when they were actually only derived in the subset that ran CCD -- copy_useful_skew is what makes cross-scenario QoR comparison valid.

Follow-up Question & Model Response

"What would a cross-scenario QoR comparison look like if you skipped copy_useful_skew when it was needed?"

Candidate Model Response: The scenarios that never ran CCD would report timing based on unadjusted clock latencies, while the scenarios that did run CCD would show the benefit of useful-skew offsets -- making a cross-scenario WNS/TNS comparison misleading, since it wouldn't be comparing like-for-like optimization effort.

Practical Example

Debug Scenario: A design reports very different WNS between two scenarios that should behave similarly. Checking whether CCD ran in both, one scenario never got a CCD pass -- running copy_useful_skew to bring its offsets in line with the scenario that did resolves the apparent discrepancy.

Physical Design & Planning Handbook

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