AdvancedQuestion 63 of 63Source: Synopsys PrimeTime User Guide: ECO Scope and fix_eco_timing Applicability

How do you decide whether a timing violation needs an ECO fix or a full place-and-route re-run?

From PDVerse STA Mentor Guide · pdVerse Mentor Guide

Short Answer

A violation is a good candidate for an ECO when it's small in magnitude, localized to a few paths, and fixable by resizing, buffering, or reconnecting a handful of cells without exceeding what spare capacity or small layout gaps can absorb. A violation calls for a full place-and-route re-run instead when it's large, widespread across many paths sharing a systemic cause -- a congested region, a poor floorplan decision, an under-resourced clock tree -- because an ECO can only patch individual paths one at a time and cannot fix the systemic condition creating many of them at once.

Technical Reference DiagramHow do you decide whether a timing violation needs an ECO fix or a full place-and-route re-run?
A bar chart of 340 hold violations regrouped by root cause into two clusters -- one large cluster of 310 tracing to a single undersized clock buffer, and a small scattered cluster of 30 isolated single-path issues -- with different fix icons attached to each cluster.

Technical Explanation

The first signal to check is scale: a handful of paths with a few tens of picoseconds of violation each is squarely within what fix_eco_timing (PT) is built to close; hundreds or thousands of violations, or ones with hundreds of picoseconds each, usually indicate a structural problem an ECO cannot patch path by path in reasonable time.

  • The second signal is root-cause concentration: if many violating paths trace back to one shared cause -- a congested placement region, an unbalanced clock tree, a corner assumption that changed globally -- fixing them individually treats symptoms while the shared cause remains, often reappearing as new violations elsewhere.
  • Grouping violations by shared physical or logical cause, rather than one path at a time, is the practical way to tell the two situations apart: if grouping collapses a thousand violations into three or four root causes, each is likely fixable at its source, which may itself be an ECO, rather than a full re-run.
  • Schedule and risk also weigh in: an ECO is faster and touches less of the design, which matters most close to tapeout, but a full re-run gives placement and routing algorithms freedom to solve the underlying problem properly when schedule allows it.
  • A hybrid approach is common: fix the isolated violations with a scoped ECO, and address the systemic contributor with a targeted incremental place-and-route pass limited to that specific area, rather than either a blanket ECO attempt or a complete re-run.
  • The decision has to account for remaining schedule, since an ECO that turns out insufficient wastes time a re-run would have used productively, while an unnecessary re-run wastes schedule a scoped ECO would have preserved.

Common Mistake

The Trap: reaching for fix_eco_timing (PT) on every violation regardless of count or root cause, because it's the fastest available tool, without first grouping the violations to check whether they share one systemic cause.

  • Consequence: ECO-fixing a thousand individually small violations tracing to one congested region can take longer in aggregate, and produce a worse physical result, than identifying the shared cause and re-running placement or CTS for that one region.

Follow-up Question & Model Response

If violations are grouped by root cause and one group turns out to be a clock-tree imbalance affecting 200 paths, is that still fixable with an ECO?

Candidate Model Response: It can be, but the fix should target the shared cause rather than the 200 individual paths -- resizing or adding delay to the specific clock buffers responsible corrects timing for every downstream path fed by that buffer in one change instead of 200 separate path-level edits. This works because the 200 violations are a symptom of one structural cause, not 200 independent problems, so fixing the cause once is faster and more consistent. Whether this stays ECO territory or edges into a small, targeted CTS re-run depends on how much of the clock tree needs to change -- a single buffer resize is squarely ECO territory, while rebalancing several branches looks more like a scoped CTS re-run. The grouping step reveals which of those two a given case actually is, before any fix is attempted.

Practical Example

A block reports 340 hold violations two days before a scheduled tapeout milestone. Grouping them by clock and by physical region shows 310 of the 340 share a single root cause -- a clock buffer near the block's northeast corner sized too small for its fanout, adding excess skew to every downstream register in that quadrant -- while the remaining 30 are unrelated, isolated single-path issues. The team fixes the 310 with a single ECO resizing that one buffer, clearing nearly all of them at once, and fixes the remaining 30 with individual fix_eco_timing (PT) path-level ECOs, avoiding both a blanket full re-run and 340 separate manual fixes.

Complete STA Handbook

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

VLSI Physical Design Planning Handbook — fourteen chaptersDesign PlanningFourteen chapters, floorplanning through timing budgets. →