DONT_TOUCH - DONT_TOUCH - 2026.1 English - UG903

Vivado Design Suite User Guide: Using Constraints (UG903)

Document ID
UG903
Release Date
2026-07-01
Version
2026.1 English

Set DONT_TOUCH on a leaf cell, hierarchical cell, or net object to preserve it during netlist optimizations. The DONT_TOUCH property is most commonly used for the following purposes:

  • Prevent a net from optimizing away.

    A net with DONT_TOUCH cannot be absorbed by synthesis or implementation. This helps with logic probing or debugging that is unexpected optimized. To preserve a net with multiple hierarchical segments, place DONT_TOUCH on the net PARENT (get_property PARENT $net), the segment closest to its driver.

  • Prevent merging of manually replicated logic.

    Sometimes you manually replicate logic, such as a high-fanout driver that spans a wide area. Add DONT_TOUCH to the manually replicated drivers and the original to prevent synthesis and implementation from optimizing these cells.

Note: Use reset_property to reset DONT_TOUCH. Setting DONT_TOUCH to 0 does not reset the property.
Tip: Avoid using DONT_TOUCH on hierarchical cells for implementation because Vivado IDE implementation does not flatten logical hierarchy. Use KEEP_HIERARCHY in synthesis to maintain logical hierarchy for applying XDC constraints.