public class UltraScaleClockRouting
extends Object
| Constructor and Description |
|---|
UltraScaleClockRouting() |
| Modifier and Type | Method and Description |
|---|---|
static Map<ClockRegion,Set<RouteNode>> |
getStartingPoints(List<RouteNode> distLines) |
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 RouteNode |
routeBUFGToNearestRoutingTrack(Net clk) |
static Map<ClockRegion,RouteNode> |
routeCentroidToVerticalDistributionLines(Net clk,
RouteNode centroidDistNode,
Collection<ClockRegion> clockRegions,
Function<Node,NodeStatus> getNodeStatus)
Routes the vertical distribution path and generates a map between each target clock region and the vertical distribution line to
start from.
|
static void |
routeDistributionToLCBs(Net clk,
List<RouteNode> distLines,
Set<RouteNode> lcbTargets)
Routes from distribution lines to the leaf clock buffers (LCBs)
|
static void |
routeLCBsToSinks(Net clk,
Map<RouteNode,List<SitePinInst>> lcbMappings,
Function<Node,NodeStatus> getNodeStatus) |
static RouteNode |
routeToCentroid(Net clk,
RouteNode clkRoutingLine,
ClockRegion centroid)
Routes a clock from a routing track to a transition point called the centroid
where the clock fans out and transitions from clock routing tracks to clock distribution
tracks
|
static RouteNode |
routeToCentroid(Net clk,
RouteNode startingRouteNode,
ClockRegion clockRegion,
boolean adjusted,
boolean findCentroidHroute)
Routes a clock from a routing track to a transition point where the clock.
|
static RouteNode |
routeToCentroidNode(Net clk,
RouteNode startingRouteNode,
Node centroid)
Routes a clock from a routing track to a given transition point called the centroid
|
static List<RouteNode> |
routeToHorizontalDistributionLines(Net clk,
RouteNode 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<RouteNode>> startingPoints,
Set<RouteNode> lcbTargets) |
static List<RouteNode> |
routeVerticalToHorizontalDistributionLines(Net clk,
Map<ClockRegion,RouteNode> crMap,
Function<Node,NodeStatus> getNodeStatus)
Routes from a vertical distribution centroid to destination horizontal distribution lines
in the clock regions provided.
|
static RouteNode |
transitionCentroidToDistributionLine(Net clk,
RouteNode centroidRouteLine)
Routes the centroid route track to a vertical distribution track to realize
the centroid and root of the clock.
|
static RouteNode |
transitionCentroidToDistributionLine(Net clk,
RouteNode centroidRouteLine,
ClockRegion cr) |
static RouteNode |
transitionCentroidToVerticalDistributionLine(Net clk,
RouteNode centroidRouteLine,
boolean down) |
public static RouteNode routeToCentroid(Net clk, RouteNode clkRoutingLine, ClockRegion centroid)
clk - The current clock net to contribute routingclkRoutingLine - The intermediate start point of the clock routecentroid - ClockRegion/FSR considered to be the centroid targetpublic static RouteNode routeToCentroid(Net clk, RouteNode startingRouteNode, ClockRegion clockRegion, boolean adjusted, boolean findCentroidHroute)
clk - The current clock net to contribute routing.startingRouteNode - The intermediate start point of the clock route.clockRegion - The center clock region or the clock region that is one row above or below the center.adjusted - A flag to guard the default functionality when routing to centroid clock region.findCentroidHroute - The flag to indicate the returned RouteNode should be HROUTE in the center or VROUTE going up or down.public static RouteNode routeToCentroidNode(Net clk, RouteNode startingRouteNode, Node centroid)
clk - The clock net to be routedstartingRouteNode - The starting routing trackcentroid - The given centroid nodepublic static RouteNode transitionCentroidToDistributionLine(Net clk, RouteNode centroidRouteLine)
clk - Clock net to routecentroidRouteLine - The current routing track found in the centroidpublic static RouteNode transitionCentroidToVerticalDistributionLine(Net clk, RouteNode centroidRouteLine, boolean down)
public static RouteNode transitionCentroidToDistributionLine(Net clk, RouteNode centroidRouteLine, ClockRegion cr)
public static Map<ClockRegion,RouteNode> routeCentroidToVerticalDistributionLines(Net clk, RouteNode centroidDistNode, Collection<ClockRegion> clockRegions, Function<Node,NodeStatus> getNodeStatus)
clk - The clock net.centroidDistNode - Starting point vertical distribution lineclockRegions - The target clock regions.public static List<RouteNode> routeVerticalToHorizontalDistributionLines(Net clk, Map<ClockRegion,RouteNode> crMap, Function<Node,NodeStatus> getNodeStatus)
clk - The current clock netcrMap - A map that provides a RouteNode reference for each ClockRegionpublic static void routeDistributionToLCBs(Net clk, List<RouteNode> distLines, Set<RouteNode> lcbTargets)
clk - The current clock netlcbTargets - The target LCB nodes to route the clockpublic static Map<ClockRegion,Set<RouteNode>> getStartingPoints(List<RouteNode> distLines)
public static void routeToLCBs(Net clk, Map<ClockRegion,Set<RouteNode>> startingPoints, Set<RouteNode> lcbTargets)
public static void routeLCBsToSinks(Net clk, Map<RouteNode,List<SitePinInst>> lcbMappings, Function<Node,NodeStatus> getNodeStatus)
clk - lcbMappings - getNodeStatus - 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 List<RouteNode> routeToHorizontalDistributionLines(Net clk, RouteNode 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).