Sta::vertexSlacks

This commit is contained in:
James Cherry 2020-01-22 20:03:51 -07:00
parent 0d01effea1
commit 78e04a1cd0
2 changed files with 23 additions and 0 deletions

View File

@ -2918,6 +2918,27 @@ Sta::vertexSlack1(Vertex *vertex,
return slack;
}
void
Sta::vertexSlacks(Vertex *vertex,
Slack (&slacks)[RiseFall::index_count][MinMax::index_count])
{
findRequired(vertex);
for(int rf_index : RiseFall::rangeIndex()) {
for(MinMax *min_max : MinMax::range()) {
slacks[rf_index][min_max->index()] = MinMax::min()->initValue();
}
}
VertexPathIterator path_iter(vertex, this);
while (path_iter.hasNext()) {
Path *path = path_iter.next();
Slack path_slack = path->slack(this);
int rf_index = path->rfIndex(this);
int mm_index = path->minMax(this)->index();
if (path_slack < slacks[rf_index][mm_index])
slacks[rf_index][mm_index] = path_slack;
}
}
void
Sta::findRequired(Vertex *vertex)
{

View File

@ -1010,6 +1010,8 @@ public:
Slack vertexSlack(Vertex *vertex,
const RiseFall *rf,
const PathAnalysisPt *path_ap);
void vertexSlacks(Vertex *vertex,
Slack (&slacks)[RiseFall::index_count][MinMax::index_count]);
// Slew for one delay calc analysis pt(corner).
Slew vertexSlew(Vertex *vertex,
const RiseFall *rf,