Because placement typically has the greatest impact on overall design performance, applying different placer directives is one of the first techniques that should be tried to reduce congestion. Consider running the alternate placer directives without any existing Pblock constraints in order to give more freedom to the placer to spread the logic as needed.
Several placer directives exist that can help alleviate congestion by spreading logic throughout the device to avoid congested regions. The SpreadLogic placer directives are:
- AltSpreadLogic_high
- AltSpreadLogic_medium
- AltSpreadLogic_low
- SSI_SpreadLogic_high
- SSI_SpreadLogic_low
When congestion is detected on SLR crossing, consider using:
- SSI_BalanceSLLs placer directive which helps with partitioning the design across SLRs while attempting to balance SLLs between SLRs.
- SSI_SpreadSLLs placer directive which allocates extra area for regions of higher connectivity when partitioning across SLRs.
Other placer directives or implementation strategies might also help with alleviating congestions and should also be tried after the placer directives mentioned above.
To compare congestion for different placer directives either run the
Design Analysis Congestion report after place_design
,
or examine the initial estimated congestion in the router log file.
Routing has less impact on congestion than placer directives. However, in some cases it is useful to attempt different routing directives. The following directive ensures that the router works harder to access more routing and relieve congestion in the interconnect tiles:
- AlternateCLBRouting
For more information, see this link in the Vivado Design Suite User Guide: Implementation (UG904).