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_TOUCHcannot 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, placeDONT_TOUCHon the netPARENT(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_TOUCHto the manually replicated drivers and the original to prevent synthesis and implementation from optimizing these cells.
reset_property to reset DONT_TOUCH. Setting
DONT_TOUCH to 0 does not reset the property.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.