public class TimingGraph extends org.jgrapht.graph.DefaultDirectedWeightedGraph<TimingVertex,TimingEdge>
Design objects.| Modifier and Type | Field and Description |
|---|---|
boolean |
debug |
boolean |
overwriteBUGCEDelay |
TimingVertex |
superSink |
TimingVertex |
superSource
The superSource and superSink are used to consolidate all timing start and end points, respectively.
|
boolean |
verbose |
| Constructor and Description |
|---|
TimingGraph(Design design)
Creates a TimingGraph for the purpose of report_timing based on analyzing nets within a
Design object. |
TimingGraph(Design design,
RuntimeTrackerTree timer,
ClkRouteTiming clkTiming,
String dspTimingDataFolder) |
| Modifier and Type | Method and Description |
|---|---|
int |
addNetDelayEdges(Net net) |
boolean |
addTimingPath(org.jgrapht.GraphPath<TimingVertex,TimingEdge> path)
Inserts a GraphPath into the TimingGraph.
|
void |
build(boolean isPartialRouting,
Collection<Net> targetNets)
Builds the TimingGraph based on analyzing nets within a
Design object. |
List<org.jgrapht.GraphPath<TimingVertex,TimingEdge>> |
buildGraphPaths()
Builds and returns a set of GraphPaths.
|
void |
buildSuperGraphPaths()
Connects the sources and sinks of timing paths to a superSource and a superSink, respectively
|
void |
computeArrivalTimes()
Computes/recomputes the arrival times stored at the vertices of the graph based on the edges
|
void |
computeArrivalTimesTopologicalOrder()
Computes/recomputes the arrival time stored at each vertex of the graph using TopologicalOrderIterator
|
void |
computeSlacks()
Computes/recomputes the slack stored at vertices of the graph based on comparing required
times and arrival times.
|
void |
generateGraphvizDotVisualization(String dotFileName)
This creates a GraphViz library dot file representation of the TimingGraph.
|
EDIFHierNet |
getClockNet(org.jgrapht.GraphPath<TimingVertex,TimingEdge> path)
Gets the parent clock net of the launching synchronizer of the path (usually
a flip flop).
|
static String |
getClockRegionOfCellPin(String cellPinName,
Design design)
Get the clock region that the cell pin resides in
|
List<TimingEdge> |
getCriticalTimingEdgesInOrder(TimingVertex maxV)
Get a list of timing edges consisting of the critical path
|
float |
getDelay(org.jgrapht.GraphPath<TimingVertex,TimingEdge> graphPath)
Gets the delay/weight of a GraphPath
|
HashSet<org.jgrapht.GraphPath<TimingVertex,TimingEdge>> |
getGraphPaths()
Returns a set of built GraphPaths.
|
DelayModel |
getintraSiteAndLogicDelayModel() |
Pair<Float,TimingVertex> |
getMaxDelay()
Get the maximum delay, i.e., the maximum arrival time, and corresponding timing path sink of the design
|
org.jgrapht.GraphPath<TimingVertex,TimingEdge> |
getMaxDelayPath()
Finds and returns the path from the TimingGraph having maximum delay.
|
Float |
getPathDelay(org.jgrapht.GraphPath<TimingVertex,TimingEdge> path)
Gets the total timing delay of the provided path.
|
float |
getRequiredTime(org.jgrapht.GraphPath<TimingVertex,TimingEdge> graphPath)
Gets the required time from a specified GraphPath at its source.
|
Float |
getSlack(org.jgrapht.GraphPath<TimingVertex,TimingEdge> graphPath)
Gets the slack from a specified GraphPath at its source.
|
Map<TimingEdge,Connection> |
getTimingEdgeConnectionMap() |
List<TimingEdge> |
getTimingEdgeOfPath(List<String> verticesNames)
Finds the given critical path in the timing graph and reports the delay detail
|
TimingManager |
getTimingManager()
Returns a reference to the associated TimingManager.
|
TimingModel |
getTimingModel()
Returns a reference to the associated TimingModel.
|
org.jgrapht.GraphPath<TimingVertex,TimingEdge> |
getTimingPath(EDIFHierPortInst src,
EDIFHierPortInst snk)
Gets the longest timing path between two hierarchical pins in the netlist.
|
org.jgrapht.GraphPath<TimingVertex,TimingEdge> |
getTimingPath(String src,
String snk)
Gets the longest timing path between two hierarchical pins in the netlist.
|
Float |
getWorstSlack()
Finds and returns the value of the worst slack from the TimingGraph.
|
void |
populateHierCellInstMap() |
void |
prettyPrintPathDelays(org.jgrapht.GraphPath<TimingVertex,TimingEdge> path) |
boolean |
removeTimingPath(org.jgrapht.GraphPath<TimingVertex,TimingEdge> path)
Removes a GraphPath from the TimingGraph.
|
void |
resetRequiredAndArrivalTime()
Reset the required and arrival time to be null
|
void |
setOrderedTimingVertexLists()
Creates and Sets the lists of ordered TimingVertices
|
void |
setTimingEdgesOfConnections(List<Connection> connections)
Assigns
TimingEdge instances to each connection in the list. |
void |
setTimingManager(TimingManager tManager)
If a TimingMangager is used to create the TimingGraph indirectly from the user, the
TimingManager will call this method.
|
void |
setTimingModel(TimingModel tModel)
If a TimingMangager is used to create the TimingGraph indirectly from the user, the
TimingManager will call this method to set the TimingModel.
|
void |
setTimingRequirement(float requirement)
Sets the same specified timing requirement on the TimingGraph on GraphPaths that have been
predetermined.
|
void |
setTimingRequirement(float requirement,
org.jgrapht.GraphPath<TimingVertex,TimingEdge> graphPath)
Sets the same specified timing requirement on a specified GraphPath.
|
void |
setTimingRequirementTopologicalOrder(float requirement)
Set the required time of each timing vertex in the graph
|
createBuilder, createBuilderaddEdge, addEdge, addVertex, addVertex, clone, containsEdge, containsVertex, degreeOf, edgeSet, edgesOf, getAllEdges, getEdge, getEdgeSource, getEdgeSupplier, getEdgeTarget, getEdgeWeight, getType, getVertexSupplier, incomingEdgesOf, inDegreeOf, outDegreeOf, outgoingEdgesOf, removeEdge, removeEdge, removeVertex, setEdgeSupplier, setEdgeWeight, setVertexSupplier, vertexSetpublic boolean debug
public boolean verbose
public TimingVertex superSource
public TimingVertex superSink
public boolean overwriteBUGCEDelay
public TimingGraph(Design design)
Design object.design - The RW Design objectpublic TimingGraph(Design design, RuntimeTrackerTree timer, ClkRouteTiming clkTiming, String dspTimingDataFolder)
public void build(boolean isPartialRouting,
Collection<Net> targetNets)
Design object.public void populateHierCellInstMap()
public float getDelay(org.jgrapht.GraphPath<TimingVertex,TimingEdge> graphPath)
graphPath - A timing path within the timingGraph between a source flop and sink flop.public void setTimingRequirement(float requirement)
requirement - The required time in picoseconds at the sink of the path.public void setOrderedTimingVertexLists()
public void computeArrivalTimesTopologicalOrder()
public static String getClockRegionOfCellPin(String cellPinName,
Design design)
cellPinName, - the name of the cell pindesign - public void setTimingRequirementTopologicalOrder(float requirement)
requirement, - the required time of the designpublic void resetRequiredAndArrivalTime()
public Pair<Float,TimingVertex> getMaxDelay()
public Float getPathDelay(org.jgrapht.GraphPath<TimingVertex,TimingEdge> path)
path - The path of interest.public List<TimingEdge> getCriticalTimingEdgesInOrder(TimingVertex maxV)
maxV - The timing vertex with the maximum arrival timepublic List<TimingEdge> getTimingEdgeOfPath(List<String> verticesNames)
verticesNames, - the given TimingVerticespublic void setTimingRequirement(float requirement,
org.jgrapht.GraphPath<TimingVertex,TimingEdge> graphPath)
requirement - The required time in picoseconds at the sink of the path.graphPath - The GraphPath receiving this required time in picoseconds at the sink of the
path.public Float getSlack(org.jgrapht.GraphPath<TimingVertex,TimingEdge> graphPath)
graphPath - The GraphPath that is being checked for the slack.public float getRequiredTime(org.jgrapht.GraphPath<TimingVertex,TimingEdge> graphPath)
graphPath - The GraphPath that is being checked for the required time.public boolean addTimingPath(org.jgrapht.GraphPath<TimingVertex,TimingEdge> path)
path - The GraphPath that is being inserted.public boolean removeTimingPath(org.jgrapht.GraphPath<TimingVertex,TimingEdge> path)
path - The GraphPath that is being removed.public Float getWorstSlack()
public org.jgrapht.GraphPath<TimingVertex,TimingEdge> getMaxDelayPath()
TimingGraph.buildGraphPaths().public org.jgrapht.GraphPath<TimingVertex,TimingEdge> getTimingPath(EDIFHierPortInst src, EDIFHierPortInst snk)
src - Hierarchical port instance of the source of the path of interest.snk - Hierarchical port instance of the sink of the path of interest.public org.jgrapht.GraphPath<TimingVertex,TimingEdge> getTimingPath(String src, String snk)
src - Full hierarchical name of the source of the path of interest.snk - Full hierarchical name of the sink of the path of interest.public void generateGraphvizDotVisualization(String dotFileName)
dotFileName - The output filename for the writing the .dot file.public HashSet<org.jgrapht.GraphPath<TimingVertex,TimingEdge>> getGraphPaths()
public List<org.jgrapht.GraphPath<TimingVertex,TimingEdge>> buildGraphPaths()
public void buildSuperGraphPaths()
public void computeArrivalTimes()
public void computeSlacks()
public int addNetDelayEdges(Net net)
public DelayModel getintraSiteAndLogicDelayModel()
public TimingModel getTimingModel()
public void setTimingModel(TimingModel tModel)
tModel - The TimingManager will set this to the TimingModel that it creates.public TimingManager getTimingManager()
public void setTimingManager(TimingManager tManager)
tManager - The TimingManager will set this to itself.public Map<TimingEdge,Connection> getTimingEdgeConnectionMap()
public void setTimingEdgesOfConnections(List<Connection> connections)
TimingEdge instances to each connection in the list.connections - A list of connections that should be associated with TimingEdge instances.public void prettyPrintPathDelays(org.jgrapht.GraphPath<TimingVertex,TimingEdge> path)
public EDIFHierNet getClockNet(org.jgrapht.GraphPath<TimingVertex,TimingEdge> path)
path - The path to get the clock from.