The RETIMING_FORWARD attribute instructs the tool to move a register forward through logic closer to the driven 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_FORWARD step will happen first, and then the global retiming can enhance that register to move further up 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_FORWARD attribute takes in an integer of 0 (off) or 1 (on). It will work in both RTL and in XDC formats.