public ensureLevelized

This commit is contained in:
James Cherry 2019-11-03 09:48:22 -08:00
parent 84c13732f7
commit 3179c5a343
2 changed files with 26 additions and 5 deletions

View File

@ -2728,6 +2728,25 @@ Sta::vertexArrival(Vertex *vertex,
return arrival;
}
Required
Sta::vertexRequired(Vertex *vertex,
const MinMax *min_max)
{
findRequired(vertex);
const MinMax *req_min_max = min_max->opposite();
Required required = req_min_max->initValue();
VertexPathIterator path_iter(vertex, this);
while (path_iter.hasNext()) {
const Path *path = path_iter.next();
if (path->minMax(this) == min_max) {
const Required path_required = path->required(this);
if (fuzzyGreater(path_required, required, req_min_max))
required = path_required;
}
}
return required;
}
Required
Sta::vertexRequired(Vertex *vertex,
const TransRiseFall *tr,

View File

@ -976,13 +976,15 @@ public:
const TransRiseFall *tr,
const PathAnalysisPt *path_ap);
Required vertexRequired(Vertex *vertex,
const TransRiseFall *tr,
const ClockEdge *clk_edge,
const PathAnalysisPt *path_ap);
const MinMax *min_max);
// Min/max across all clock tags.
Required vertexRequired(Vertex *vertex,
const TransRiseFall *tr,
const PathAnalysisPt *path_ap);
Required vertexRequired(Vertex *vertex,
const TransRiseFall *tr,
const ClockEdge *clk_edge,
const PathAnalysisPt *path_ap);
Slack pinSlack(const Pin *pin,
const TransRiseFall *tr,
const MinMax *min_max);
@ -1131,8 +1133,10 @@ public:
void setTclInterp(Tcl_Interp *interp);
Tcl_Interp *tclInterp();
void ensureLevelized();
// Ensure that the timing graph has been built.
Graph *ensureGraph();
void ensureClkArrivals();
Corner *cmdCorner() const;
void setCmdCorner(Corner *corner);
Corner *findCorner(const char *corner_name);
@ -1230,8 +1234,6 @@ protected:
virtual LibertyLibrary *readLibertyFile(const char *filename,
bool infer_latches,
Network *network);
void ensureLevelized();
void ensureClkArrivals();
void delayCalcPreamble();
void delaysInvalidFrom(Port *port);
void delaysInvalidFromFanin(Port *port);