Please refer to this Answer Record for help with Equivalent Register Removal.
NOTE: This Answer Record is part of the Xilinx Solution Center for XST (Xilinx Answer 38927) The Xilinx Solution Center for XST is available to address all questions related to XST. Whether you are starting a new design or troubleshooting a problem, use the Solution Center for XST to guide you to the right information.
Equivalent Register Removal is an XST option which enables or disables removal of equivalent registers described at the RTL Level. By default, XST does not remove equivalent flip-flops if they are instantiated from a Xilinx primitive library.
When Equivalent Register Removal happens during Synthesis, XST issues the following message:
"Register REG_NAME1 equivalent to REG_NAME2 has been removed"
XST has determined that the functionality of REG_NAME1 is exactly the same as REG_NAME2, so it has been optimized away. However, in some cases, you might want to keep these registers. In very rare cases, XST might have erroneously removed the registers.
To prevent the registers from being removed, you can turn the "Equivalent Register Removal" Synthesis option off as follows:
1. Right-click the "Synthesize - XST" process and select "Properties...".
2. Select the Xilinx Specific Options tab.
3. Deselect the "Equivalent Register Removal".
However, turning this switch off affects the entire project. This might keep the real redundant registers in the design from being optimized away. So, it is recommended to apply Equivalent Register Removal constraint to certain registers specifically. Refer to (Xilinx Answer 39749) for help with applying XST constraints.
For more information of Equivalent Register Removal, refer to the XST User Guide; see (Xilinx Answer 38931)