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

The cells ensemble encapsulates the cell class from Vivado's Tcl data structure. More...

Functions

 test args
 
 test_proc proc args
 
 new name ?lib_cell?
 
 delete cell
 
 rename cell name
 
 get args
 
 get_name cell
 
 get_type cell
 
 get_primitives
 
 get_input_pins cell
 
 get_output_pins cell
 
 is_placed cell
 
 is_placement_legal cell bel
 
 is_lut cell
 
 compatible_with objs
 
 place cell location
 
 unplace cell
 
 duplicate ref_cell name
 
 insert cell net ?sinks? ?inpin? ?outpin? ?downhill_net_name?
 
 tie_unused_pins cell
 
 get_lut_eqn cell
 
 set_lut_eqn cell equation
 
 get_configurable_properties cell
 

Detailed Description

The cells ensemble encapsulates the cell class from Vivado's Tcl data structure.

Function Documentation

◆ compatible_with()

tincr::cells::compatible_with   objs  

Get the cells in the current design that are compatible for placement on or within the given objects.

Parameters
objsThe object or list of objects. Legal objects include bel, site, and tile objects.
Returns
A list of cells in the current design that may be placed on or within the given object(s).

◆ delete()

tincr::cells::delete   cell  

Delete a cell.

Parameters
Thecell to delete.

◆ duplicate()

tincr::cells::duplicate   ref_cell name  

Duplicate a cell.

Parameters
ref_cellThe cell to copy.
nameThe name of the new cell.
Returns
The newly created duplicate cell object.

◆ get()

tincr::cells::get   args  

Queries Vivado's object database for a list of cell objects that fit the given criteria. This is mostly a wrapper function for Vivado's get_cells command, though it does add additional features (such as getting the cells of a cell).

◆ get_configurable_properties()

tincr::cells::get_configurable_properties   cell  

Creates and returns a list of properties on the specified cell object that are configurable. TODO: cache this information

Parameters
cellVivado cell instance
Returns
A set of reconfigurable properties on that cell

◆ get_input_pins()

tincr::cells::get_input_pins   cell  

Get a cell's input pins.

Parameters
cellThe cell object.
Returns
The input pins of cell.

◆ get_lut_eqn()

tincr::cells::get_lut_eqn   cell  

Get the LUT's equation in sum-of-products form.

Parameters
cellThe cells whose equation you wish to retrieve.
Returns
The LUT's equation in sum-of-products form.

◆ get_name()

tincr::cells::get_name   cell  

Get the name of a cell.

Parameters
cellThecell object.
Returns
The name of the cell.

◆ get_output_pins()

tincr::cells::get_output_pins   cell  

Get a cell's output pins.

Parameters
cellThe cell object.
Returns
The output pins of cell.

◆ get_primitives()

tincr::cells::get_primitives

Get all primitive (leaf) cells in the design. A primitive cell maps directly to a BEL on the FPGA.

Returns
A list of all primitive (leaf) cell objects in the current design.

◆ get_type()

tincr::cells::get_type   cell  

Get the cell's type. In this case, a cell's type is the library cell it references.

Parameters
cellThe cell object.
Returns
The lib_cell object that this cell references, or an empty list if there is none.

◆ insert()

tincr::cells::insert   cell net ?sinks? ?inpin? ?outpin? ?downhill_net_name?  

Inserts a cell into the middle of a net. The existing net is disconnected from any sinks on the branch the cell is being inserted into and connected to the input pin on the cell. A new net is created and connected to the output pin on the cell and the sinks of the branch.

Parameters
cellThe cell that will be inserted into the net.
netThe net that the cell will be inserted into.
sinksThe list of sinks (pins and/or ports) from the net that the new cell will source. This allows the user to identify which branch of the net the cell should be inserted into. If this parameter is omitted or empty, this value defaults to all of the net's sinks.
inpinThe input pin on the cell that will be driven by the uphill net. By default, this is the first unused input pin on the cell.
outpinThe output pin on the cell that will drive the downhill net. By default, this is the first unused output pin on the cell.
downhill_net_nameSpecifies a new name for the net downhill of the inserted cell.

◆ is_lut()

tincr::cells::is_lut   cell  

Is this cell a LUT?

Parameters
cellThe cell to test.
Returns
True (1) if cell is a LUT, false (0) otherwise.

◆ is_placed()

tincr::cells::is_placed   cell  

Is this cell placed?

Parameters
cellThe cell object.
Returns
TRUE (1) if cell is placed, FALSE (0) otherwise.

◆ is_placement_legal()

tincr::cells::is_placement_legal   cell bel  

Is the proposed placement legal? Currently, this function actually places the cell on the given BEL using Vivado's place_cell command. If no errors are thrown after placement, then the name of the BEL that the cell is actually placed on is compared with the expected BEL placement. If the names are identical the placement is considered valid. Otherwise, the placement is considered invalid. cell should not be already placed onto a BEL when calling this function.

Parameters
cellThe cell to be placed.
belThe location the cell is to be placed on.
Returns
True (1) if the placement is valid, false (0) otherwise.

◆ new()

tincr::cells::new   name ?lib_cell?  

Create a new cell.

Parameters
nameThe name of the new cell.
lib_cellThe name of the library cell this new cell will reference. If this parameter is not provided, or if it is left blank, a black-box cell will be created.
Returns
The newly created cell.

◆ place()

tincr::cells::place   cell location  

Place a cell.

Parameters
cellThe cell object to be placed.
locationThe location object to place the cell on or in. Legal locations include bel and site objects.

◆ rename()

tincr::cells::rename   cell name  

Rename a cell.

Parameters
Thecell to rename.
Thenew name.

◆ set_lut_eqn()

tincr::cells::set_lut_eqn   cell equation  

Set the LUT's equation.

Parameters
cellThe cell whose equation you wish to set.
equationThe equation to set. Use I0, I1, etc. as inputs and O as the output. i.e. O=I0&~I1|(I1*I2).

◆ test()

tincr::cells::test   args  

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

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

◆ test_proc()

tincr::cells::test_proc   proc args  

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

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

◆ tie_unused_pins()

tincr::cells::tie_unused_pins   cell  

Tie up or down the unconnected pins of cells in the open synthesized or implemented design. The command uses an internal process to identify whether a pin should be tied up or down.

Parameters
cellThe cell object whose pins should be tied.

◆ unplace()

tincr::cells::unplace   cell  

Unplace a cell.

Parameters
cellThe cell object to be unplaced.
Returns
The bel object that the cell was placed on.