From 0d01effea13e871ebb189e9fc24e9ef4c9799cd1 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 22 Jan 2020 20:03:39 -0700 Subject: [PATCH 1/2] remove undefined protos --- liberty/Liberty.hh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/liberty/Liberty.hh b/liberty/Liberty.hh index d74a5da0..baf2106f 100644 --- a/liberty/Liberty.hh +++ b/liberty/Liberty.hh @@ -452,10 +452,6 @@ public: OcvDerate *ocvDerate() const; OcvDerate *findOcvDerate(const char *derate_name); - // Next higher/lower drive equivalent cells. - LibertyCell *higherDrive() const; - LibertyCell *lowerDrive() const; - // Build helpers. void makeSequential(int size, bool is_register, From 78e04a1cd0c6011a312bdb4052c06aecd32a4bf3 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Wed, 22 Jan 2020 20:03:51 -0700 Subject: [PATCH 2/2] Sta::vertexSlacks --- search/Sta.cc | 21 +++++++++++++++++++++ search/Sta.hh | 2 ++ 2 files changed, 23 insertions(+) diff --git a/search/Sta.cc b/search/Sta.cc index 1c845b64..91ad5a55 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -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) { diff --git a/search/Sta.hh b/search/Sta.hh index 75275a5c..7f49a44a 100644 --- a/search/Sta.hh +++ b/search/Sta.hh @@ -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,