The router provides helpful messages when it struggles to meet timing goals due to congestion or excessive hold violation fixing. The router commonly exhibits these symptoms when it struggles:
- Excessive runtimes, on the order of hours per iteration
- Large number of overlaps reported, in the hundreds or thousands
- Setup and hold slacks become progressively worse, as seen in the Estimated Timing Summaries
The router might provide further warning messages when any of the following occurs:
- Congestion is expected to have negative timing closure impact, which typically occurs when the congestion level is 5 or greater. Level 5 indicates a congested region measuring 32x32 (2^5 = 32).
- The overall router hold-fix effort is expected to be very high, which impacts the ability to meet overall setup requirements.
- Specific endpoint pins become both setup-critical and hold-critical and it
is difficult or impossible to satisfy both. The message includes the names of up
to ten pins for design analysis. In addition, the router also generates a
tight_setup_hold_pins.txttext file that contains a list of the endpoint pins and the launch and capture clock.Tip: Use the Pin value from
tight_setup_hold_pins.txtfile and use the following for improving the timing paths.
report_timing -delay_type min_max -nworst 4 -to [get_pins <pin>] -name timing_set_hold_pin_1
- Specific CLBs experience high pin utilization or high routing resource utilization which results in local congestion. The messages will include the names of up to ten of the most congested CLBs.
- In extreme cases with severe congestion, the router warns that congestion is preventing the router from routing all nets, and the router will prioritize the successful completion of routing all nets over timing optimizations.
When targeting UltraScale devices or later, the router generates a table showing initial estimated congestion when congestion might affect timing closure. The table does not show specific regions but gives a measure of different types of congestion for an overall assessment. The congestion is categorized into bins of Global (design-wide), Long (connections spanning several CLBs), and Short Congestion. The tables of different runs can be compared to determine which have better chances of meeting performance goals without being too negatively impacted by congestion.
INFO: [Route 35-449] Initial Estimated Congestion ________________________________________________________________________ | | Global Congestion | Long Congestion | Short Congestion | |_____________|________|__________|________|__________|________|__________| | Direction | Size | % Tiles | Size | % Tiles | Size | % Tiles | |___________ |________|__________|________|__________|________|__________| | NORTH| 32x32| 0.89| 32x32| 1.00| 32x32| 0.66| |_____________|________|__________|________|__________|________|__________| | SOUTH| 16x16| 0.68| 32x32| 0.75| 16x16| 0.53| |_____________|________|__________|________|__________|________|__________| | EAST| 4x4| 0.04| 8x8| 0.09| 4x4| 0.10| |_____________|________|__________|________|__________|________|__________| | WEST| 8x8| 0.18| 8x8| 0.09| 16x16| 0.50| |_____________|________|__________|________|__________|________|__________|
Report Design Analysis provides complexity and congestion analysis that can give further insight into the causes of congestion and potential solutions. The congestion reporting also includes an Average Initial Routing Congestion, which is not exactly the same as the congestion reported by the router, but can be analyzed against the pre-route design to determine which regions are causing problems. For further information on Report Design Analysis, refer to the Vivado Design Suite User Guide: Design Analysis and Closure Techniques (UG906).
Users can change the severity of
the error message using the following command:
set_msg_config -id "Route 35-1" -new_severity "ERROR"
In order for the message severity change to take effect, it
should be applied before running
for any message that is printed out during
route_design. In a project flow, this can be added to the
pre-route Tcl script.