byuccl / RapidSmith2

RapidSmith2 - the Vivado successor to RapidSmith. Released Jan 4, 2017.
Other
41 stars 13 forks source link

Manual Intrasite Routing (for slices) #363

Closed DallonTG closed 5 years ago

DallonTG commented 5 years ago

This PR adds an option to include TCL commands for intrasite routing to the routing.xdc file in TCPs. Only slices are supported right now. Other sites don't have much flexibility in intrasite routing anyway. Additionally, manually setting the intrasite routing for IOB sites (along with setting the package pin) causes Vivado to crash.

Most of the changes are in XdcRoutingInterface.java. Other files were changed to make it easier to get the value of the clock polarity selector in sites as well (this could perhaps be done more cleanly if we had a representation for control sets. See #224).

I also added a list of series 7 and ultrascale families to the FamilyInfos.java. This was done because the intrasite commands are handled slightly differently for series 7 and ultrascale. Vivado represents polarity selectors for series 7 devices as having two inputs (CLK and CLK_B for example, where CLK_B is inverted). For series7, we must actually find out how the polarity selector is configured and set SITE_PIPS accordingly.

In Ultrascale, Vivado represents polarity selectors as only having one input (e.g. CLK), but if the polarity selector is inverted, an inverter bubble appears on the output of the polarity selector. Because of this, the polarity selector site pips are always configured in the same way in the SITE_PIPS property, so we can just always set them the same way.

nelsobe commented 5 years ago

Will this always run on import or is it an optional step?

And, are there any downsides to having it always run? I only ask because we seem to have done well for some time without it.

DallonTG commented 5 years ago

You have to specify you want the intrasite commands to be included in a writeTCP method (by passing true or false).

I haven't taken any measurements, but I think import times are longer with these commands included. So the default behavior is to not include the manual intrasite routing commands.