Sta::findSlewLimit
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
de3759b451
commit
4ac0829438
|
|
@ -631,6 +631,12 @@ public:
|
|||
Slew &slew,
|
||||
float &slack,
|
||||
float &limit);
|
||||
void findSlewLimit(const Pin *pin,
|
||||
const Corner *corner,
|
||||
const MinMax *min_max,
|
||||
// Return values.
|
||||
float &limit,
|
||||
bool &exists);
|
||||
|
||||
void checkFanoutLimitPreamble();
|
||||
// Return pins with the min/max fanout limit slack.
|
||||
|
|
|
|||
|
|
@ -155,10 +155,10 @@ CheckSlewLimits::checkSlews1(Vertex *vertex,
|
|||
&& !sta_->clkNetwork()->isIdealClock(pin)) {
|
||||
for (auto rf : RiseFall::range()) {
|
||||
float limit;
|
||||
bool limit_exists;
|
||||
bool exists;
|
||||
findLimit(pin, vertex, corner, rf, min_max, check_clks,
|
||||
limit, limit_exists);
|
||||
if (limit_exists) {
|
||||
limit, exists);
|
||||
if (exists) {
|
||||
checkSlew(vertex, corner, rf, min_max, limit,
|
||||
corner1, rf1, slew1, slack1, limit1);
|
||||
}
|
||||
|
|
@ -166,7 +166,25 @@ CheckSlewLimits::checkSlews1(Vertex *vertex,
|
|||
}
|
||||
}
|
||||
|
||||
// return the tightest limit.
|
||||
void
|
||||
CheckSlewLimits::findLimit(const Pin *pin,
|
||||
const Corner *corner,
|
||||
const MinMax *min_max,
|
||||
// Return values.
|
||||
float &limit,
|
||||
bool &exists) const
|
||||
{
|
||||
limit = INF;
|
||||
exists = false;
|
||||
for (auto rf : RiseFall::range()) {
|
||||
float limit;
|
||||
bool exists;
|
||||
findLimit(pin, nullptr, corner, rf, min_max, false,
|
||||
limit, exists);
|
||||
}
|
||||
}
|
||||
|
||||
// Return the tightest limit.
|
||||
void
|
||||
CheckSlewLimits::findLimit(const Pin *pin,
|
||||
const Vertex *vertex,
|
||||
|
|
|
|||
|
|
@ -52,6 +52,12 @@ public:
|
|||
bool violators,
|
||||
const Corner *corner,
|
||||
const MinMax *min_max);
|
||||
void findLimit(const Pin *pin,
|
||||
const Corner *corner,
|
||||
const MinMax *min_max,
|
||||
// Return values.
|
||||
float &limit,
|
||||
bool &exists) const;
|
||||
|
||||
protected:
|
||||
void checkSlews1(const Pin *pin,
|
||||
|
|
|
|||
|
|
@ -5211,6 +5211,19 @@ Sta::maxSlewCheck(// Return values.
|
|||
delete pins;
|
||||
}
|
||||
|
||||
void
|
||||
Sta::findSlewLimit(const Pin *pin,
|
||||
const Corner *corner,
|
||||
const MinMax *min_max,
|
||||
// Return values.
|
||||
float &limit,
|
||||
bool &exists)
|
||||
{
|
||||
checkSlewLimitPreamble();
|
||||
check_slew_limits_->findLimit(pin, corner, min_max,
|
||||
limit, exists);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////'
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Reference in New Issue