BeginnerQuestion 94 of 187

What's the practical difference between marking a cell dont_touch and marking it size_only?

From PDVerse PnR Interview Handbook, part of the pdVerse Mentor Guide

Short Answer

set_dont_touch excludes a cell from optimization entirely -- nothing about it changes. set_size_only allows sizing (swapping to a different drive-strength variant) but nothing else -- the cell stays in place, keeps its function, but can still be resized to help timing. dont_touch is the stronger, more restrictive constraint; size_only is a middle ground that still gives the optimizer one lever to use.

Technical Reference DiagramWhat's the practical difference between marking a cell dont_touch and marking it size_only?

Technical Explanation

  • set_dont_touch excludes a cell from optimization entirely -- nothing about it (size, position within optimization's control, logic) changes.
  • set_size_only allows sizing (swapping to a different drive-strength library variant) but nothing else -- the cell keeps its identity and logical function, but the optimizer can still resize it to help timing.
  • dont_touch is the stronger, more restrictive constraint; size_only is a genuine middle ground that still gives the optimizer one real lever (sizing) to use.
  • dont_touch has higher precedence than boundary_optimization and size_only -- if a cell somehow has conflicting constraints, dont_touch wins.

Common Mistake

The Trap: Using dont_touch when size_only would have been sufficient -- dont_touch removes ALL optimization freedom including sizing, which may leave real timing margin on the table that size_only would have let the tool recover.

Follow-up Question & Model Response

"Why would dont_touch have higher precedence than size_only rather than the two being independent, combinable constraints?"

Candidate Model Response: Because dont_touch is a stronger, more absolute statement ("do not change this cell in any way") that logically subsumes size_only's more permissive statement ("you may resize, but nothing else") -- if both were somehow applied, honoring the stronger constraint is the only consistent behavior.

Practical Example

Debug Scenario: A cell needs to keep its exact placement and connectivity but could still benefit from resizing to help close a nearby timing violation. Using set_size_only instead of set_dont_touch gives the optimizer that one lever, rather than locking the cell down completely.

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.

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
PnR Flow Physical Design Mentor Guide โ€” eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out.