public class VersalClockRouting
extends Object
| Modifier and Type | Class and Description |
|---|---|
static class |
VersalClockRouting.NodeWithPrevAndCost |
| Modifier and Type | Field and Description |
|---|---|
static String |
USER_CLOCK_VTREE_TYPE |
| Constructor and Description |
|---|
VersalClockRouting() |
| Modifier and Type | Method and Description |
|---|---|
static Integer |
getPreferredClockRootYCoord(Device device,
int minY,
int maxY)
Given a range of occupied clock region Y coordinates, get the preferred clock
root Y coordinate.
|
static Integer |
getPreferredClockRootYCoord(Device device,
int minY,
int maxY,
VTreeType vtreeType) |
static Integer |
getPreferredClockRootYCoord(Net clk,
Device device,
int minY,
int maxY) |
static Integer |
getRoutingTrackIndex(Node node) |
static Map<ClockRegion,Set<VersalClockRouting.NodeWithPrevAndCost>> |
getStartingPoints(Map<ClockRegion,Node> distLines) |
static VTreeType |
getUserClockVTreeType(Net clk) |
static VersalClockTree |
getVersalClockTree(Device device,
int minY,
int maxY) |
static VersalClockTree |
getVersalClockTree(Device device,
int minY,
int maxY,
VTreeType vtreeType) |
static VersalClockTree |
getVersalClockTree(Net clk,
Device device,
int minY,
int maxY) |
static void |
incrementalClockRouter(Design design,
Net clkNet,
Function<Node,NodeStatus> getNodeStatus)
Routes a partially routed clock.
|
static void |
incrementalClockRouter(Net clkNet,
List<SitePinInst> clkPins,
Function<Node,NodeStatus> getNodeStatus)
Routes a list of unrouted pins from a partially routed clock.
|
static Map<String,Map<Integer,VersalClockTree>> |
readVersalVDistrTrees() |
static Node |
routeBUFGToNearestRoutingTrack(Net clk,
Function<Node,NodeStatus> getNodeStatus) |
static void |
routeDistributionToLCBs(Net clk,
Map<ClockRegion,Node> distLines,
Map<Node,List<SitePinInst>> lcbTargets,
Function<Node,NodeStatus> getNodeStatus)
Routes from distribution lines to the leaf clock buffers (LCBs)
|
static Map<Node,List<SitePinInst>> |
routeLCBsToSinks(Net clk,
Function<Node,NodeStatus> getNodeStatus) |
static void |
routeNonLCBPins(Net clk,
List<SitePinInst> sinks,
Function<Node,NodeStatus> getNodeStatus) |
static Node |
routeToCentroid(Net clk,
Node startingNode,
ClockRegion targetCR,
boolean findCentroidHroute,
Function<Node,NodeStatus> getNodeStatus,
Set<Integer> unavailableTracks)
Routes a clock from a routing track to a transition point where the clock.
|
static Map<ClockRegion,Node> |
routeToHorizontalDistributionLines(Net clk,
Node vroute,
Collection<ClockRegion> clockRegions,
boolean down,
Function<Node,NodeStatus> getNodeStatus)
Routes from a GLOBAL_VERTICAL_ROUTE to horizontal distribution lines.
|
static void |
routeToLCBs(Net clk,
Map<ClockRegion,Set<VersalClockRouting.NodeWithPrevAndCost>> startingPoints,
Map<Node,List<SitePinInst>> lcbTargets,
Function<Node,NodeStatus> getNodeStatus) |
static Map<ClockRegion,Node> |
routeVerticalToHorizontalDistributionLines(Net clk,
Map<ClockRegion,Node> crMap,
Function<Node,NodeStatus> getNodeStatus)
For each target clock region, route from the provided vertical distribution line to a
horizontal distribution line that has a GLOBAL_GLK child node in this clock region.
|
static Map<ClockRegion,Node> |
routeVrouteToVerticalDistributionLines(Net clk,
Node vroute,
Collection<ClockRegion> clockRegions,
Function<Node,NodeStatus> getNodeStatus) |
static void |
writeVersalVDistrTreesFile() |
public static final String USER_CLOCK_VTREE_TYPE
public static Node routeBUFGToNearestRoutingTrack(Net clk, Function<Node,NodeStatus> getNodeStatus)
public static Integer getRoutingTrackIndex(Node node)
public static Node routeToCentroid(Net clk, Node startingNode, ClockRegion targetCR, boolean findCentroidHroute, Function<Node,NodeStatus> getNodeStatus, Set<Integer> unavailableTracks)
clk - The current clock net to contribute routing.startingNode - The intermediate start point of the clock route.targetCR - The center clock region or the clock region that is
one row above or below the center.findCentroidHroute - The flag to indicate the returned Node should be
HROUTE in the center or VROUTE going up or down.getNodeStatus - Function to call to check if a node is availableusedRoutingTracks - A map to keep track of which routing tracks are
used for each regionpublic static Map<ClockRegion,Node> routeVrouteToVerticalDistributionLines(Net clk, Node vroute, Collection<ClockRegion> clockRegions, Function<Node,NodeStatus> getNodeStatus)
public static Map<ClockRegion,Node> routeVerticalToHorizontalDistributionLines(Net clk, Map<ClockRegion,Node> crMap, Function<Node,NodeStatus> getNodeStatus)
clk - The current clock netcrMap - A map of target clock regions and their respective vertical distribution linespublic static void routeDistributionToLCBs(Net clk, Map<ClockRegion,Node> distLines, Map<Node,List<SitePinInst>> lcbTargets, Function<Node,NodeStatus> getNodeStatus)
clk - The current clock netdistLines - A map of target clock regions and their respective horizontal distribution lineslcbTargets - The target LCB nodes to route the clockpublic static Map<ClockRegion,Set<VersalClockRouting.NodeWithPrevAndCost>> getStartingPoints(Map<ClockRegion,Node> distLines)
public static void routeToLCBs(Net clk, Map<ClockRegion,Set<VersalClockRouting.NodeWithPrevAndCost>> startingPoints, Map<Node,List<SitePinInst>> lcbTargets, Function<Node,NodeStatus> getNodeStatus)
public static Map<ClockRegion,Node> routeToHorizontalDistributionLines(Net clk, Node vroute, Collection<ClockRegion> clockRegions, boolean down, Function<Node,NodeStatus> getNodeStatus)
clk - The clock net to be routed.vroute - The node to start the route.clockRegions - Target clock regions.down - To indicate if it is routing to the group of top clock regions.public static void incrementalClockRouter(Design design, Net clkNet, Function<Node,NodeStatus> getNodeStatus)
DesignTools.createMissingSitePinInsts(Design, Net) to discover those not
yet routed.design - The current designclkNet - The partially routed clock net to make fully routedgetNodeStatus - Lambda for indicating the status of a Node: available, in-use (preserved
for same net as we're routing), or unavailable (preserved for other net).public static void incrementalClockRouter(Net clkNet, List<SitePinInst> clkPins, Function<Node,NodeStatus> getNodeStatus)
clkNet - The partially routed clock net to make fully routedclkPins - A list of unrouted pins on the clock net to routegetNodeStatus - Lambda for indicating the status of a Node: available, in-use (preserved
for same net as we're routing), or unavailable (preserved for other net).public static Map<Node,List<SitePinInst>> routeLCBsToSinks(Net clk, Function<Node,NodeStatus> getNodeStatus)
public static void routeNonLCBPins(Net clk, List<SitePinInst> sinks, Function<Node,NodeStatus> getNodeStatus)
public static Map<String,Map<Integer,VersalClockTree>> readVersalVDistrTrees()
public static void writeVersalVDistrTreesFile()
public static VersalClockTree getVersalClockTree(Device device, int minY, int maxY)
public static VersalClockTree getVersalClockTree(Device device, int minY, int maxY, VTreeType vtreeType)
public static VersalClockTree getVersalClockTree(Net clk, Device device, int minY, int maxY)
public static Integer getPreferredClockRootYCoord(Device device, int minY, int maxY)
device - The current device to target.minY - The smallest Y coordinate of the clock region range.maxY - The largest Y coordinate of the clock region range.public static Integer getPreferredClockRootYCoord(Device device, int minY, int maxY, VTreeType vtreeType)
public static Integer getPreferredClockRootYCoord(Net clk, Device device, int minY, int maxY)