DONT_TOUCH on a leaf cell, hierarchical cell, or net object to
preserve it during netlist optimizations.
DONT_TOUCH is most
commonly used to:
- Prevent a net from being optimized away.
A net with
DONT_TOUCHcannot be absorbed by synthesis or implementation. This can be helpful for logic probing or debugging unexpected optimization in designs. To preserve a net with multiple hierarchical segments, place
DONT_TOUCHon the net PARENT (get_property PARENT $net) which is the net segment closest to its driver.
- Prevent merging of manually replicated logic.
Sometimes it is best to manually replicate logic, such as a high-fanout driver that spans a wide area. Adding
DONT_TOUCHto the manually replicated drivers (as well as the original) prevents synthesis and implementation from optimizing these cells.
reset_property to reset the
property. Setting the
DONT_TOUCH property to 0 does not reset the
DONT_TOUCH on hierarchical cells for
implementation as Vivado IDE implementation does not flatten
logical hierarchy. Use
KEEP_HIERARCHY in synthesis to maintain
logical hierarchy for applying XDC constraints.