The Vivado Design Suite respects the DONT_TOUCH property during physical optimization. It does not perform physical optimization on nets or cells with these properties. To speed up the net selection process, nets with DONT_TOUCH properties are pre-filtered and not considered for physical optimization. Additionally, Pblock assignments are obeyed such that replicated logic inherits the Pblock assignments of the original logic. Timing exceptions are also copied from original to replicated cells.
For more information, see section Synthesis Attributes in the Vivado Design Suite User Guide: Synthesis (UG901).
The DONT_TOUCH property is typically placed on leaf cells to prevent them from being optimized. DONT_TOUCH on a hierarchical cell preserves the cell boundary, but optimization can still occur within the cell.
The tools automatically add DONT_TOUCH properties of value TRUE to nets that have MARK_DEBUG properties of value TRUE. This is done to keep the nets intact throughout the implementation flow so that they can be probed at any design stage. This is the recommended use of MARK_DEBUG. However, there might be rare occasions on which the DONT_TOUCH is too restrictive and prevents optimizations such as replication and retiming, leading to more difficult timing closure. In those cases DONT_TOUCH can be set to a value of FALSE while keeping MARK_DEBUG TRUE. The consequence of removing the DONT_TOUCH properties is that nets with MARK_DEBUG can be optimized away and no longer probed. If a MARK_DEBUG net is replicated, only the original net retains MARK_DEBUG, not the replicated nets.