public class SLRCrosserGenerator
extends Object
Modifier and Type | Field and Description |
---|---|
static int |
LAGUNA_FLOPS_PER_SITE |
static int |
LAGUNA_SITES_PER_TILE |
static int |
LAGUNA_TILES_PER_FSR |
Constructor and Description |
---|
SLRCrosserGenerator() |
Modifier and Type | Method and Description |
---|---|
static void |
createBUFGCE(Design d,
String clkName,
String clkInName,
String clkOutName,
String bufgceInstName)
Creates/instantiates a BUFGCE in the design
|
static void |
createBUFGCEAndFlops(Design d,
int northBusWidth,
int southBusWidth,
List<String> busPrefixes,
String clkName,
String clkInName,
String clkOutName,
String bufgceInstName)
Creates the logical netlist of the SLR crosser design.
|
static void |
customRouteSLRCrossingClock(Design d,
String clkName,
String[] lagunaStarts,
String txClkWire,
String rxClkWire,
boolean useCommonCentroid) |
static ClockRegion |
findCentroid(String[] lagunaStarts,
Device dev) |
static Map<RouteNode,List<SitePinInst>> |
getLCBPinMappings(Net clk,
String txClkWire,
String rxClkWire)
Separates clock sinks by direction in a half clock region so
they can be driven by independent leaf clock buffers (LCBs).
|
static void |
main(String[] args) |
static Net |
placeAndRouteLagunaFlopPair(Design d,
EDIFHierNet path,
Site txSite,
String txElementName)
Given a logical net and site/bel site, this method will perform the placement and routing
of two laguna flops and their inter-site super-long-line routing.
|
static void |
placeAndRouteSLRCrossing(Design d,
Site northStart,
String northBusName,
String southBusName,
int northBusWidth,
int southBusWidth)
Places and routes an SLR crossing given a north and south bus of size width.
|
static Cell |
placeBUFGCE(Design d,
Site s,
String bufName)
Places a BUFGCE present in the netlist.
|
static void |
routeControlSignalsInLagunaSite(Cell c,
Net clk,
Net rst,
Net ce)
Routes the control signals (CLK,CE,RST) for a laguna flop within its site.
|
static SitePin |
routeToLagunaRx(Net n)
Routes the current incomplete net to its corresponding RX site.
|
public static final int LAGUNA_FLOPS_PER_SITE
public static final int LAGUNA_SITES_PER_TILE
public static final int LAGUNA_TILES_PER_FSR
public static SitePin routeToLagunaRx(Net n)
n
- The net with a Laguna TX pin source.public static void routeControlSignalsInLagunaSite(Cell c, Net clk, Net rst, Net ce)
c
- The laguna flop cell to route signals toclk
- The physical clock net to routerst
- The physical reset net to routece
- The physical ce net to routepublic static Net placeAndRouteLagunaFlopPair(Design d, EDIFHierNet path, Site txSite, String txElementName)
d
- The current design.path
- The logical net to implement as an SLR crossing signaltxSite
- The laguna site onto which to place the TX floptxElementName
- The element/bel site to place the TX floppublic static Cell placeBUFGCE(Design d, Site s, String bufName)
d
- Design containing BUFGCEs
- Site onto which to place the BUFGCEbufName
- Full hierarchical instance name of the BUFGCEpublic static void placeAndRouteSLRCrossing(Design d, Site northStart, String northBusName, String southBusName, int northBusWidth, int southBusWidth)
d
- The current designnorthStart
- The starting Laguna site to start placement (placement
moves north) for the north traveling busnorthBusName
- Full hierarchical net name of the bus to cross SLR in
north directionsouthBusName
- Full hierarchical net name of the bus to cross SLR in
south directionnorthBusWidth
- Width of north buses crossing SLRsouthBusWidth
- Width of south buses crossing SLRpublic static Map<RouteNode,List<SitePinInst>> getLCBPinMappings(Net clk, String txClkWire, String rxClkWire)
clk
- The physical clock nettxClkWire
- The INT tile wire name to use for TX-based clocksrxClkWire
- The INT tile wire name to use for RX-based clockspublic static ClockRegion findCentroid(String[] lagunaStarts, Device dev)
public static void customRouteSLRCrossingClock(Design d, String clkName, String[] lagunaStarts, String txClkWire, String rxClkWire, boolean useCommonCentroid)
public static void createBUFGCE(Design d, String clkName, String clkInName, String clkOutName, String bufgceInstName)
d
- The current designclkName
- Name of the clock netclkInName
- Name of the clock in portclkOutName
- Name of the clock out port, or null for nonebufgceInstName
- Name of the BUFGCE instancepublic static void createBUFGCEAndFlops(Design d, int northBusWidth, int southBusWidth, List<String> busPrefixes, String clkName, String clkInName, String clkOutName, String bufgceInstName)
d
- Current designnorthBusWidth
- Width of the North buses to createsouthBusWidth
- Width of the South buses to createbusPrefixes
- Prefixes to use for bus namesclkName
- Name of the clock netclkInName
- Name of the clock in portclkOutName
- Name of the clock out portbufgceInstName
- Name of the BUFGCE instancepublic static void main(String[] args)