Find a routing path between two nodes.
Syntax
find_routing_path [‑from <args>] [‑to <args>] [‑max_nodes <arg>]
[‑min_nodes <arg>] [‑exclude_nodes <args>] [‑include_nodes <args>]
[‑sort_include_nodes] [‑ignore_all_routing] [‑show_fixed_routes]
[‑allow_overlap] [‑quiet] [‑verbose]
Usage
Name | Description |
---|---|
[-from]
|
-from <start node> or <start site_pin> Start of routing path. |
[-to]
|
-to <end node> or <end site_pin> End of routing path. |
[-max_nodes]
|
Specifies the maximum number of nodes (including from and to nodes) allowed in solution. Default: 500 |
[-min_nodes]
|
Specifies the minimum number of nodes (including from and to nodes) allowed in solution. Default: 2 |
[-exclude_nodes]
|
Exclude specified nodes from routing path. |
[-include_nodes]
|
Specify the nodes which must exist in the path. |
[-sort_include_nodes]
|
Sort the given nodes which must exist in the path. |
[-ignore_all_routing]
|
Solution may include nodes used in any existing (including fixed) routes. |
[-show_fixed_routes]
|
Solution will mark fix routes with '*'. |
[-allow_overlap]
|
Solution may include nodes used in existing non-fixed routes. |
[-quiet]
|
Ignore command errors |
[-verbose]
|
Suspend message limits during command execution |
Description
Finds a routing solution between two nodes on an unrouted, or partially routed net, in an implemented design.
This command can be used to define a routing path to assign to the FIXED_ROUTE property of a net, which can be saved to the XDC file for later reuse. Refer to Vivado Design Suite Tutorial: Implementation (UG986) for an example of manual routing and the use of the FIXED_ROUTE property.
You must define nodes for the start and end points of the routing path, and can specify the maximum and minimum number of nodes to use for the route path, including the start and end points. The nodes must be specified as objects returned by the get_nodes
command. For unrouted net objects, since nodes have not been assigned to the net, the nodes can be found by association of the net to the bel_pin or site_pin:
- Net > Bel_Pin > Bel > Tile > Node
- Net > Site_Pin > Tile > Node
For partially routed nets, the nodes can be found associated directly to the net. Refer to the Vivado Design Suite Properties Reference Guide (UG912) for more information on the relationship between these objects.
The find_routing_path
command returns a list of nodes representing the route path found from the start point to the end point, or returns "no path found" if the command runs but has no result, or returns an error if the command fails to run.
The returned list of nodes can be assigned to the FIXED_ROUTE property using the set_property
command as shown in the example.
report_property
command does not return the string of the FIXED_ROUTE property. Use the get_property
command instead.Arguments
-allow_overlap
- (Optional) Enable a loose style of routing which can create conflicts that must be later resolved. These overlapping routes will need to be cleaned up to eliminate routing conflicts. Route conflicts can be identified using the report_route_status
command.
-max_nodes <arg>
- (Optional) Indicates the maximum number of nodes the route can contain, including the -from
node and the -to
node. The default is 100.
-min_nodes <arg>
- (Optional) Indicates the minimum number of nodes the route can contain, including the -from
node and the -to
node. The default is 2, and the value specified must be >= 2.
-from <arg>
- (Optional) The starting node of the route path. Nodes must be specified as objects returned by the get_nodes
command.
-to <arg>
- (Optional) The ending node of the route path. Nodes must be specified as objects returned by the get_nodes
command.
-quiet
- (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
-verbose
- (Optional) Temporarily override any message limits and return all messages from this command.
set_msg_config
command.Examples
The following example finds a routing path for the specified net, using one end as the -from
point and the other end as the -to
point, and assigns that path to the specified Tcl variable. Then it uses that Tcl variable to assign the path to the FIXED_ROUTE property of the net:
set fndPath [find_routing_path -from [lindex [get_nodes -of \
[get_site_pins -of [get_nets wbOutputData_OBUF[14]]]] 0] -to \
[lindex [get_nodes -of [get_site_pins -of \
[get_nets wbOutputData_OBUF[14]]]] 1]]
set_property FIXED_ROUTE $fndPath [get_nets wbOutputData_OBUF[14]]