The Fast Fourier Transform (FFT) IP has an internal high fanout CE signal, which makes timing closure challenging.
I am trying to disable the IPs OOC setting and set fanout as 100 for the net using the following commands in XDC:
The cell in question is the driver of this net.
In the synthesized design, register replication does occur and the fanout is reduced from 2565 to 557.
However the MAX_FANOUT property is not honored.
There are some cells (including the IP interface) that have DONT_TOUCH set to TRUE, but the net's driver and load hierarchies are not involved.
Why is the MAX_FANOUT attribute not enforced?
The MAX_FANOUT constraints are applied to signals that are inside Xilinx IPs.
This is legal, but the problem is that several hierarchies inside the IP have security attributes which causes the hierarchies to remain fixed.
Because of this, when signals with MAX_FANOUT attributes go into or out of hierarchies with hard limits, the replication can not happen.
This is why in this case the fanout limits are not going as far as the constraint.
They can replicate up to the level of a hard hierarchy but cannot go through it.
As a work-around, you can use the following command to force the drivers of the specified net to be replicated.
phys_opt_design -force_replication_on_nets [get_nets net_name]