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 runtime.
- Smallest delay (the
-delayoption): The router tries to achieve the smallest possible delay from the available routing resources.
- Delay-driven (the
-min_delayoptions): 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 “run time hit” 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.