MAX_FANOUT forces the synthesis to replicate logic to meet a fanout limit. The tool is able to replicate logic, but not inputs or black boxes. Accordingly, if a MAX_FANOUT attribute is placed on a signal that is driven by a direct input to the design, the tool is unable to handle the constraint.
Take care to analyze the signals on which a MAX_FANOUT is placed. If a MAX_FANOUT is placed on a signal that is driven by a register with a DONT_TOUCH or drives signals that are in a different level of hierarchy when the DONT_TOUCH attribute is on that hierarchy, the MAX_FANOUT attribute will not be honored.
Synthesis appends the replicated cells with
for the first replication and subsequent replications are
_rep__1 and so on. These cells
can be seen in the post synthesized netlist by selecting on cells.
phys_opt_designcommands in the AMD Vivado™ tools perform placement-based replication, which is more effective than logical replication in synthesis. If a specific fanout is desired, it is often worth the time and effort to manually code the extra registers.