Tincr  0.0
A Tcl-based CAD Tool Framework for Xilinx's Vivado Design Suite
Functions
tincr::nets Namespace Reference

The nets ensemble encapsulates the net class from Vivado's Tcl data structure. More...

Functions

 test args
 
 test_proc proc args
 
 new name
 
 delete net
 
 rename net name
 
 connect_pin net pin
 
 connect_port net port
 
 disconnect_pin net pin
 
 disconnect_port net port
 
 get args
 
 get_source net
 
 get_source_node net
 
 get_sinks net
 
 copy nets ?names?
 
 float args
 
 get_root net
 
 replace_source net new_source
 
 manhattan_distance net
 
 get_source_tile net
 
 absolute_routing_string net
 
 get_branched_routes
 
 fix_all
 
 add_pip net pip
 
 add_node net new_node
 
 get_neighbor_nodes net node
 
 get_next_node2 net node
 
 get_next_node node net name
 
 recurse_route node
 
 format_routing_string net
 
 list_nodes net
 
 recurse_pips node1 nodes
 
 list_pips net
 
 of_bus bus
 
 get_route_throughs ?nets?
 
 route net route
 
 unroute net
 
 split_route args
 
 recurse_split_route target var_name path
 
 get_site_pins_of_net net
 
 get_site_pins_hierarchical net
 
 get_static_source_wires net
 

Detailed Description

The nets ensemble encapsulates the net class from Vivado's Tcl data structure.

Function Documentation

◆ absolute_routing_string()

tincr::nets::absolute_routing_string   net  

Get a net's absolute routing string. By default, the string stored in a net's ROUTE property lists constituent nodes by their relative names only. This function expands their names to include their absolute name.

Parameters
netThe net object.

◆ add_node()

tincr::nets::add_node   net new_node  

Add a node to an unrouted or fully or partially routed net.

Parameters
netThe net to which to add the node.
new_nodeThe node that will be added to the net.
Returns
Returns the number of nodes added to the net. This will be 0 if there was a problem or 1 if the node was successfully added.

◆ add_pip()

tincr::nets::add_pip   net pip  

Add a PIP to an unrouted, fully, or partially routed net. Adding a PIP to the middle of a routed or partially routed net creates an antenna. Adding a PIP to the end of an unrouted or partially routed net extends the route. This proc can be used in the Vivado GUI to "click-and-route" with the following command:

1 ::tincr::add_pip $net [get_selected_objects]
Parameters
netThe net object to add the PIP to.
pipThe PIP that will be added to the net.
Returns
Returns the number of nodes added to the net. This will be 0 if there was a problem, 1 if the net was already partially routed, or 2 if the net was initially unrouted.

◆ connect_pin()

tincr::nets::connect_pin   net pin  

Connect a net to a pin.

Parameters
netThe net object.
pinThe pin object.

◆ connect_port()

tincr::nets::connect_port   net port  

Connect a net to a port.

Parameters
netThe net object.
portThe port object.

◆ copy()

tincr::nets::copy   nets ?names?  

Copies the given nets, including all properties except for routing (i.e. ROUTE, FIXED_ROUTE, etc.).

Parameters
netsThe net objects to copy.
namesThe new names of the nets. If this parameter is omitted or has fewer elements than nets, a default name will be assigned for the remaining nets.
Returns
A list of the net copies.

◆ delete()

tincr::nets::delete   net  

Delete a net.

Parameters
netThe net to delete.

◆ disconnect_pin()

tincr::nets::disconnect_pin   net pin  

Disconnect a net from a pin.

Parameters
netThe net object.
pinThe pin object.

◆ disconnect_port()

tincr::nets::disconnect_port   net port  

Disconnect a net from a port.

Parameters
netThe net object.
portThe port object.

◆ fix_all()

tincr::nets::fix_all

Fixes the routes of all nets in the design.

◆ float()

tincr::nets::float   args  

Unroute a net and disconnect it from any pins to which it was connected.

Parameters
netThe net object to disconnect.
Returns
The net's former source pin, if any.

◆ format_routing_string()

tincr::nets::format_routing_string   net  

Remove unwanted < or > characters from a routing string.

Parameters
netThe net object to correct.
Returns
The corrected routing string.

◆ get()

tincr::nets::get   args  

Queries Vivado's object database for a list of net objects that fit the given criteria. At the moment, this is just a wrapper function for Vivado's get_nets command.

◆ get_branched_routes()

tincr::nets::get_branched_routes

Get all nets that have a branch.

Returns
Any nets in the current design that have a branch (i.e. more than one sink).

◆ get_neighbor_nodes()

tincr::nets::get_neighbor_nodes   net node  

Get the nodes that neighbor a specified node in a net.

Parameters
netThe net object.
Thenode within the net to inspect.
Returns
The neighbors of the specified node in the net.

◆ get_next_node()

tincr::nets::get_next_node   node net name  

Get the next node in a routed net. Get the node with "name" in "net" after "node" (connected through a PIP).

Parameters
netThe net object.
nodeThe node in question.
nameThe expected name of the next node.
Returns
The next node(s) in the net that comes after the given node.

◆ get_next_node2()

tincr::nets::get_next_node2   net node  

Get the next node in a routed net.

Parameters
netThe net object.
nodeThe node in question.
Returns
The next node(s) in the net that comes after the given node.

◆ get_root()

tincr::nets::get_root   net  

Get the top-level net of a hierarchical net.

Parameters
netThe net object.
Returns
The top-level net of the net.

◆ get_route_throughs()

tincr::nets::get_route_throughs   ?nets?  

Get all LUTs used as routing in the design.

Parameters
netsThe nets in which to look for route-throughs.
Returns
A list containing all LUTs used as route-throughs in the design.

◆ get_sinks()

tincr::nets::get_sinks   net  

Get the sink pins and/or ports of a net.

Parameters
Thenet object.
Returns
The pin and/or port objects that the net sources.

◆ get_site_pins_hierarchical()

tincr::nets::get_site_pins_hierarchical   net  

Returns a list of Site Pin objects that the specified net is connected to. If the net is connected to macro primitive pins, the site pins connected to the corresponding internal nets are also returned.

Parameters
netTop-level net object (i.e. not an internal macro net)

◆ get_site_pins_of_net()

tincr::nets::get_site_pins_of_net   net  

Gets the site pins connected to the specified net for SERIES7 devices. The TCL call

1 get_site_pins -of $net

cannot be used because there is a bug in Vivado with alternate site type site pins. When a site is switched to an alternate type, the site pins are not updated in the TCL interface, but they may have changed. This function identifies these pins, and returns the correct site pins in this scenario. NOTE: for ultrascale devices and later, use the default function [get_site_pins -of $net]

Parameters
netTCL net object
Returns
a list of corrected site pins connected to the net

◆ get_source()

tincr::nets::get_source   net  

Get the source pin or port of a net.

Parameters
Thenet object.
Returns
The pin or port object that sources the net.

◆ get_source_node()

tincr::nets::get_source_node   net  

Get the node that stands at the head of a routed net.

Parameters
netThe net object.
Returns
The node object that sources the net.

◆ get_source_tile()

tincr::nets::get_source_tile   net  

Get the tile that a net is sourced from. Only applicable when the source is placed.

Parameters
netThe net object
Returns
The tile object of the pin that sources the net.

◆ get_static_source_wires()

tincr::nets::get_static_source_wires   net  

Returns the source wires of VCC and GND nets (i.e. the wires that are connected to tieoff bels). This is done by parsing the ROUTE string of these nets, and grabbing the first wire within each independent section (sections are separated by parentheses "()")

Parameters
netA VCC or GND net that has been routed
Returns
A list of all source wires in the static net

◆ list_nodes()

tincr::nets::list_nodes   net  

Get the route of the specified net as a nested list. Each nested list represents a branch of the net. When printed, the output is identical to the directed routing string of the net. Note: This function flattens single-node branches (e.g. { ER1BEG1 }) instead of including them as a nested list. This may cause Vivado to misinterpret the route if it is used a routing string.

Parameters
netThe net from which to get nodes.
Returns
The route as a list of nested lists.

◆ list_pips()

tincr::nets::list_pips   net  

Get the pip objects of a net. The list of pips is built by recursively traversing the net's route. This function produces results identical to Vivado's get_pips -of_objects $net.

Parameters
netThe net object.
Returns
A list of the pip objects in the net's route.

◆ manhattan_distance()

tincr::nets::manhattan_distance   net  

Reports the Manhattan distance of a net.

Parameters
netThe net object.
Returns
The Manhattan distance of a net as an integer.

◆ new()

tincr::nets::new   name  

Create a new net.

Parameters
nameThe name of the new net.
Returns
The newly created cell.

◆ of_bus()

tincr::nets::of_bus   bus  

Get the nets of a specified bus.

Parameters
busThe bus whose nets to get.
Returns
The nets of the bus.

◆ recurse_pips()

tincr::nets::recurse_pips   node1 nodes  

Recursively traverse the PIPs of a net. This recursive function uses variables in the caller to execute, so it must be called correctly. See the code in tincr::nets list_pips for an example.

Parameters
node1The current node.
nodesThe list of nodes.

◆ recurse_route()

tincr::nets::recurse_route   node  

Recursively traverse a net and build its routing string. This recursive function uses variables in the caller to execute, so it must be called correctly. See the code in tincr::nets list_nodes for an example.

Parameters
nodeThe current node object.
Returns
The routing string up to the current point in the net.

◆ rename()

tincr::nets::rename   net name  

Rename a net.

Parameters
netThe net to rename.
nameThe new name.

◆ replace_source()

tincr::nets::replace_source   net new_source  

Replaces the source of the given net with the given pin.

Parameters
netThe net object.
new_sourceThe pin to replace the net's source with.

◆ route()

tincr::nets::route   net route  

Route a net.

Parameters
netThe net object.
routeA directed routing string to apply to net.

◆ split_route()

tincr::nets::split_route   args  

Splits a branch off of a net's route at the node specified by "node"

Parameters
netThe net whose route is to be split
nodeThe first node in the branch to be split off from the net's route
Returns
A two element list. The first element is the net's route excluding the branch, the second element is the branch starting at "node".

◆ test()

tincr::nets::test   args  

Executes all unit tests for every proc in the nets ensemble.

Parameters
argsThe configuration arguments that will be passed to the tcltest unit testing suite.

◆ test_proc()

tincr::nets::test_proc   proc args  

Executes all unit tests for a particular proc in the nets ensemble.

Parameters
procThe proc to run the unit tests for.
argsThe configuration arguments that will be passed to the tcltest unit testing suite.

◆ unroute()

tincr::nets::unroute   net  

Unroute a net.

Parameters
netThe net object.
Returns
The net's old route.