The RETIMING_BACKWARD attribute instructs the tool to move a register backwards through logic closer to the driving sequential elements. Unlike the retiming global setting, this attribute is not timing driven and will work regardless of whether the retiming global setting is active or if there are even timing constraints. If the global retiming setting is active, the RETIMING_BACKWARD step will happen first, and then the global retiming can enhance that register to move further back the chain, but it will not interfere with the attribute and move the register back to the original location.
Note: Cells with DONT_TOUCH/MARK_DEBUG attributes, cells with timing exceptions (false_path, multicycle_path), and user-instantiated cells will block this attribute.
The RETIMING_BACKWARD attribute takes in an integer of 0 (off) or 1 (on). It works in both RTL and in XDC formats.