public class VersalClockRouting
extends Object
Modifier and Type | Class and Description |
---|---|
static class |
VersalClockRouting.NodeWithPrevAndCost |
Constructor and Description |
---|
VersalClockRouting() |
Modifier and Type | Method and Description |
---|---|
static Map<ClockRegion,Set<VersalClockRouting.NodeWithPrevAndCost>> |
getStartingPoints(Map<ClockRegion,Node> 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 Node |
routeBUFGToNearestRoutingTrack(Net clk) |
static void |
routeDistributionToLCBs(Net clk,
Map<ClockRegion,Node> distLines,
Set<Node> lcbTargets)
Routes from distribution lines to the leaf clock buffers (LCBs)
|
static Map<Node,List<SitePinInst>> |
routeLCBsToSinks(Net clk,
Function<Node,NodeStatus> getNodeStatus) |
static Node |
routeToCentroid(Net clk,
Node startingNode,
ClockRegion clockRegion,
boolean findCentroidHroute)
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,
Set<Node> lcbTargets) |
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) |
public static Node routeToCentroid(Net clk, Node startingNode, ClockRegion clockRegion, boolean findCentroidHroute)
clk
- The current clock net to contribute routing.startingNode
- 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.findCentroidHroute
- The flag to indicate the returned Node should be HROUTE in the center or VROUTE going up or down.public 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, Set<Node> lcbTargets)
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, Set<Node> lcbTargets)
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)