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.
|
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 |
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.
|
Float |
getWorstSlack()
Finds and returns the value of the worst slack from the TimingGraph.
|
void |
populateHierCellInstMap() |
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, createBuilder
addEdge, 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, vertexSet
public 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 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 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.