byuccl / tincr

A Tcl-based CAD Tool Framework for Xilinx's Vivado Design Suite
GNU General Public License v2.0
39 stars 19 forks source link

Create nondefault pin mappings based on changed cell properties #79

Closed nelsobe closed 6 years ago

nelsobe commented 6 years ago

Code has been added to tincr::cells:: that will create an XML file of alternate pin mappings. The most common occurrence of these is for RAMB and FIFO cells - their write enable pins get moved around based on the shape of the memory configuration. We know they occur for 5 other less common cells (some DDR kinds of cells).

The usage model is when a previously unseen combination of cell properties for a cell placed on a bel is encountered, you could call this and it will generate the XML of the pin mappings that RapidSmith2 needs.

Inputs to the routine tincr::cells::create_nondefault_pin_mappings include a cell and a bell for it to be placed on, and a list of non-default property values. The routine will set the indicated property values, place the cell onto the bel, and record the pin mappings that result.

The routine tincr::cells::write_nondefault_pin_mappings will write these to an XML file that RapidSmith2 can grok.

RapidSmith2 itself maintains a cache of such pinMappings in an XML file and it can be instructed to merge the ones generated here into its cache if they are indeed new.

My tcl coding is crude at best. @ttown523 and @bradselw - comments and suggestions would be much appreciated to clean this up. :-)