Sta::findWorstClkSkew
This commit is contained in:
parent
8e01d33857
commit
6a582fddb8
|
|
@ -878,6 +878,7 @@ public:
|
|||
const Corner *corner,
|
||||
const SetupHold *setup_hold,
|
||||
int digits);
|
||||
float findWorstClkSkew(const SetupHold *setup_hold);
|
||||
// Header above reportPathEnd results.
|
||||
void reportPathEndHeader();
|
||||
// Footer below reportPathEnd results.
|
||||
|
|
|
|||
|
|
@ -129,11 +129,8 @@ ClkSkews::reportClkSkew(ClockSet *clks,
|
|||
|
||||
// Sort the clocks to report in a stable order.
|
||||
ClockSeq sorted_clks;
|
||||
ClockSet::Iterator clk_iter1(clks);
|
||||
while (clk_iter1.hasNext()) {
|
||||
Clock *clk = clk_iter1.next();
|
||||
for (Clock *clk : *clks)
|
||||
sorted_clks.push_back(clk);
|
||||
}
|
||||
sort(sorted_clks, ClkNameLess());
|
||||
|
||||
Unit *time_unit = units_->timeUnit();
|
||||
|
|
@ -168,6 +165,25 @@ ClkSkews::reportClkSkew(ClockSet *clks,
|
|||
skews.deleteContents();
|
||||
}
|
||||
|
||||
float
|
||||
ClkSkews::findWorstClkSkew(const Corner *corner,
|
||||
const SetupHold *setup_hold)
|
||||
{
|
||||
ClockSet clks;
|
||||
for (Clock *clk : *sdc_->clocks())
|
||||
clks.insert(clk);
|
||||
float worst_skew = INF;
|
||||
ClkSkewMap skews;
|
||||
findClkSkew(&clks, corner, setup_hold, skews);
|
||||
for (auto clk_skew_itr : skews) {
|
||||
ClkSkew *clk_skew = clk_skew_itr.second;
|
||||
float skew = clk_skew->skew();
|
||||
if (skew < worst_skew)
|
||||
worst_skew = skew;
|
||||
}
|
||||
return worst_skew;
|
||||
}
|
||||
|
||||
void
|
||||
ClkSkews::findClkSkew(ClockSet *clks,
|
||||
const Corner *corner,
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ public:
|
|||
const Corner *corner,
|
||||
const SetupHold *setup_hold,
|
||||
int digits);
|
||||
// Find worst clock skew.
|
||||
float findWorstClkSkew(const Corner *corner,
|
||||
const SetupHold *setup_hold);
|
||||
|
||||
protected:
|
||||
void findClkSkew(ClockSet *clks,
|
||||
|
|
|
|||
|
|
@ -2582,6 +2582,15 @@ Sta::reportClkSkew(ClockSet *clks,
|
|||
clk_skews_->reportClkSkew(clks, corner, setup_hold, digits);
|
||||
}
|
||||
|
||||
float
|
||||
Sta::findWorstClkSkew(const SetupHold *setup_hold)
|
||||
{
|
||||
ensureClkArrivals();
|
||||
if (clk_skews_ == nullptr)
|
||||
clk_skews_ = new ClkSkews(this);
|
||||
return clk_skews_->findWorstClkSkew(cmd_corner_, setup_hold);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -4453,6 +4453,13 @@ report_clk_skew(ClockSet *clks,
|
|||
delete clks;
|
||||
}
|
||||
|
||||
float
|
||||
find_worst_clk_skew(const SetupHold *setup_hold)
|
||||
{
|
||||
cmdLinkedNetwork();
|
||||
return Sta::sta()->findWorstClkSkew(setup_hold);
|
||||
}
|
||||
|
||||
TmpPinSet *
|
||||
startpoints()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue