Vivado Implementation fails to route my design completely. Below are some of the critical warning messages issued:
In my design there are nearly 200 IDELAY instances which are used to delay the internal signals. The Vivado placer failed to place these instances at correct/optimal locations, as a result of which the router fails.
The failing nets originate from an I/O port (source) and drive FF,LUT, MMCM instances (loads). In the device view of the Implemented design, examine the routing resource which needs to be taken by the failing nets.
It can be seen that the IDELAY site corresponding to the package pin to which the I/O port was locked is occupied by another idelay instance in the design, and there is no routing resource available for this failing net.
The IODELAY site is used as a route-thru to route from I/O pad to Slice, MMCM etc. The nets are failing to route as the IDELAY site is not free.
The work-around is to manually lock down the IODELAY instances to correct sites.
The following commands can be used in an Implemented design to export the current location of IDELAY instances in XDC constraint format.
Modify the location of IDELAY instances (which are currently placed in the IODELAY sites which correspond to failing nets) to sites whose corresponding I/O pad is not used.