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_propertyto reset the
DONT_TOUCHproperty. Setting the
DONT_TOUCHproperty to 0 does not reset the property.
DONT_TOUCHon hierarchical cells for implementation as Vivado IDE implementation does not flatten logical hierarchy. Use
KEEP_HIERARCHYin synthesis to maintain logical hierarchy for applying XDC constraints.