Set 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_TOUCH
cannot 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, placeDONT_TOUCH
on 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_TOUCH
to the manually replicated drivers (as well as the original) prevents synthesis and implementation from optimizing these cells.
reset_property
to reset the DONT_TOUCH
property. Setting the DONT_TOUCH
property to 0 does not reset the
property.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.