The Vivado router performs routing on the placed design, and performs optimization on the routed design to resolve hold time violations.
The Vivado router starts with a placed design and attempts to route all nets. It can start with a placed design that is unrouted, partially routed, or fully routed.
For a partially routed design, the Vivado router uses the existing routes as the starting point, instead of starting from scratch. For a fully-routed design, the router checks for timing violations and attempts to re-route critical portions to meet timing.
The router provides options to route the entire design or to route individual nets and pins.
When routing the entire design, the flow is timing-driven, using automatic timing budgeting based on the timing constraints.
Routing individual nets and pins can be performed using two distinct modes:
- Interactive Router mode
- Auto-Delay mode
The Interactive Router mode uses fast, lightweight timing modeling for greater responsiveness in an interactive session. Some delay accuracy is sacrificed with the estimated delays being pessimistic. Timing constraints are ignored in this mode, but there are several choices to influence the routing:
- Resource-based routing (default): The router chooses from the available routing resources, resulting in the fastest router compile time.
- Smallest delay (the
-delay
option): The router tries to achieve the smallest possible delay from the available routing resources. - Delay-driven (the
-max_delay
and-min_delay
options): Specify timing requirements based on a maximum delay, minimum delay, or both. The router tries to route the net with a delay that meets the specified requirements.
In Auto-Delay mode, the router runs the timing-driven flow with automatic timing budgeting based on the timing constraints, but unlike the default flow, only the specified nets or pins are routed. This mode is used to route critical nets and pins before routing the remainder of the design. This includes nets and pins that are setup-critical, hold-critical, or both. Auto-Delay mode is not intended for routing individual nets in a design containing a significant amount of routing. Interactive routing should be used instead.
For best results when routing many individual nets and pins, prioritize and route these individually. This avoids contention for critical routing resources.
Routing requires a one-time compile time penalty for initialization, even when editing routes of nets and pins. The initialization time increases with the size of the design and with the size of the device. The router does not need to be re-initialized unless the design is closed and reopened.
Critical warnings in the initial routing phase that are unlikely to converge later on in the flow are treated as conditions for early exit. If a design exhibits one such condition, the router exits after the initial routing phase to reduce compile time. The route state of the design after early exit does not offer any more information than the pre-route checkpoint. A design in this state is not suitable for analysis as routing deposit information is not available. Pre-route designs can be used for further debugging. Following are some conditions for early exit:
- Placement or design constraint issues that might lead to routing failures
- Blockages between source and destination, possibly due to fixed routing constraints
- If number of nets crossing SLR boundary exceeds maximum capacity of a device
- Global congestion level of eight or more
- ERROR
- [Route 35-4445] route_design is terminated due to errors or
critical warnings issued before and during initial routing. The issues
reported cannot be resolved later in
route_design
. - Resolution
- Review previous errors or critical warnings messages to
determine the reason for router exit during initial routing stage. To know
the state of route database, run
report_route_status
. - INFO
- [Route 35-17] Router encountered errors. Check the log file for details.