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).