max_slew/cap/fanout_check_limit tcl accessors
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
e76578116c
commit
ecc1dcc605
|
|
@ -626,7 +626,11 @@ public:
|
||||||
Slew &slew,
|
Slew &slew,
|
||||||
float &limit,
|
float &limit,
|
||||||
float &slack);
|
float &slack);
|
||||||
float maxSlewCheckSlack();
|
void maxSlewCheck(// Return values.
|
||||||
|
Pin *&pin,
|
||||||
|
Slew &slew,
|
||||||
|
float &slack,
|
||||||
|
float &limit);
|
||||||
|
|
||||||
void checkFanoutLimitPreamble();
|
void checkFanoutLimitPreamble();
|
||||||
// Return pins with the min/max fanout limit slack.
|
// Return pins with the min/max fanout limit slack.
|
||||||
|
|
@ -647,7 +651,11 @@ public:
|
||||||
float &fanout,
|
float &fanout,
|
||||||
float &limit,
|
float &limit,
|
||||||
float &slack);
|
float &slack);
|
||||||
float maxFanoutCheckSlack();
|
void maxFanoutCheck(// Return values.
|
||||||
|
Pin *&pin,
|
||||||
|
float &fanout,
|
||||||
|
float &slack,
|
||||||
|
float &limit);
|
||||||
|
|
||||||
void checkCapacitanceLimitPreamble();
|
void checkCapacitanceLimitPreamble();
|
||||||
// Return pins with the min/max slew limit slack.
|
// Return pins with the min/max slew limit slack.
|
||||||
|
|
@ -674,7 +682,11 @@ public:
|
||||||
float &capacitance,
|
float &capacitance,
|
||||||
float &limit,
|
float &limit,
|
||||||
float &slack);
|
float &slack);
|
||||||
float maxCapacitanceCheckSlack();
|
void maxCapacitanceCheck(// Return values.
|
||||||
|
Pin *&pin,
|
||||||
|
float &capacitance,
|
||||||
|
float &slack,
|
||||||
|
float &limit);
|
||||||
|
|
||||||
// Min pulse width check with the least slack.
|
// Min pulse width check with the least slack.
|
||||||
// corner=nullptr checks all corners.
|
// corner=nullptr checks all corners.
|
||||||
|
|
|
||||||
|
|
@ -5187,24 +5187,28 @@ Sta::checkSlew(const Pin *pin,
|
||||||
corner1, rf, slew, limit, slack);
|
corner1, rf, slew, limit, slack);
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
void
|
||||||
Sta::maxSlewCheckSlack()
|
Sta::maxSlewCheck(// Return values.
|
||||||
|
Pin *&pin,
|
||||||
|
Slew &slew,
|
||||||
|
float &slack,
|
||||||
|
float &limit)
|
||||||
{
|
{
|
||||||
checkSlewLimitPreamble();
|
checkSlewLimitPreamble();
|
||||||
PinSeq *pins = check_slew_limits_->checkSlewLimits(nullptr, false, nullptr,
|
PinSeq *pins = check_slew_limits_->checkSlewLimits(nullptr, false, nullptr,
|
||||||
MinMax::max());
|
MinMax::max());
|
||||||
float slack = INF;
|
pin = nullptr;
|
||||||
|
slew = 0.0;
|
||||||
|
slack = INF;
|
||||||
|
limit = INF;
|
||||||
if (!pins->empty()) {
|
if (!pins->empty()) {
|
||||||
Pin *pin = (*pins)[0];
|
pin = (*pins)[0];
|
||||||
const Corner *corner;
|
const Corner *corner;
|
||||||
const RiseFall *rf;
|
const RiseFall *rf;
|
||||||
Slew slew;
|
|
||||||
float limit;
|
|
||||||
check_slew_limits_->checkSlew(pin, nullptr, MinMax::max(), true,
|
check_slew_limits_->checkSlew(pin, nullptr, MinMax::max(), true,
|
||||||
corner, rf, slew, limit, slack);
|
corner, rf, slew, limit, slack);
|
||||||
}
|
}
|
||||||
delete pins;
|
delete pins;
|
||||||
return slack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////'
|
////////////////////////////////////////////////////////////////'
|
||||||
|
|
@ -5267,21 +5271,24 @@ Sta::checkFanout(const Pin *pin,
|
||||||
fanout, limit, slack);
|
fanout, limit, slack);
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
void
|
||||||
Sta::maxFanoutCheckSlack()
|
Sta::maxFanoutCheck(// Return values.
|
||||||
|
Pin *&pin,
|
||||||
|
float &fanout,
|
||||||
|
float &slack,
|
||||||
|
float &limit)
|
||||||
{
|
{
|
||||||
checkFanoutLimitPreamble();
|
checkFanoutLimitPreamble();
|
||||||
PinSeq *pins = check_fanout_limits_->checkFanoutLimits(nullptr, false, MinMax::max());
|
PinSeq *pins = check_fanout_limits_->checkFanoutLimits(nullptr, false, MinMax::max());
|
||||||
float slack = INF;
|
pin = nullptr;
|
||||||
|
fanout = 0;
|
||||||
|
slack = INF;
|
||||||
if (!pins->empty()) {
|
if (!pins->empty()) {
|
||||||
Pin *pin = (*pins)[0];
|
pin = (*pins)[0];
|
||||||
float fanout;
|
|
||||||
float limit;
|
|
||||||
check_fanout_limits_->checkFanout(pin, MinMax::max(),
|
check_fanout_limits_->checkFanout(pin, MinMax::max(),
|
||||||
fanout, limit, slack);
|
fanout, limit, slack);
|
||||||
}
|
}
|
||||||
delete pins;
|
delete pins;
|
||||||
return slack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////'
|
////////////////////////////////////////////////////////////////'
|
||||||
|
|
@ -5358,25 +5365,29 @@ Sta::checkCapacitance(const Pin *pin,
|
||||||
limit, slack);
|
limit, slack);
|
||||||
}
|
}
|
||||||
|
|
||||||
float
|
void
|
||||||
Sta::maxCapacitanceCheckSlack()
|
Sta::maxCapacitanceCheck(// Return values.
|
||||||
|
Pin *&pin,
|
||||||
|
float &capacitance,
|
||||||
|
float &slack,
|
||||||
|
float &limit)
|
||||||
{
|
{
|
||||||
checkCapacitanceLimitPreamble();
|
checkCapacitanceLimitPreamble();
|
||||||
PinSeq *pins = check_capacitance_limits_->checkCapacitanceLimits(nullptr, false,
|
PinSeq *pins = check_capacitance_limits_->checkCapacitanceLimits(nullptr, false,
|
||||||
nullptr,
|
nullptr,
|
||||||
MinMax::max());
|
MinMax::max());
|
||||||
float slack = INF;
|
pin = nullptr;
|
||||||
|
capacitance = 0.0;
|
||||||
|
slack = INF;
|
||||||
|
limit = INF;
|
||||||
if (!pins->empty()) {
|
if (!pins->empty()) {
|
||||||
Pin *pin = (*pins)[0];
|
pin = (*pins)[0];
|
||||||
const Corner *corner;
|
const Corner *corner;
|
||||||
const RiseFall *rf;
|
const RiseFall *rf;
|
||||||
float capacitance;
|
|
||||||
float limit;
|
|
||||||
check_capacitance_limits_->checkCapacitance(pin, nullptr, MinMax::max(),
|
check_capacitance_limits_->checkCapacitance(pin, nullptr, MinMax::max(),
|
||||||
corner, rf, capacitance, limit, slack);
|
corner, rf, capacitance, limit, slack);
|
||||||
}
|
}
|
||||||
delete pins;
|
delete pins;
|
||||||
return slack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
|
||||||
61
tcl/StaTcl.i
61
tcl/StaTcl.i
|
|
@ -4762,7 +4762,25 @@ max_slew_check_slack()
|
||||||
{
|
{
|
||||||
cmdLinkedNetwork();
|
cmdLinkedNetwork();
|
||||||
Sta *sta = Sta::sta();
|
Sta *sta = Sta::sta();
|
||||||
return sta->units()->timeUnit()->staToUser(sta->maxSlewCheckSlack());
|
Pin *pin;
|
||||||
|
Slew slew;
|
||||||
|
float slack;
|
||||||
|
float limit;
|
||||||
|
sta->maxSlewCheck(pin, slew, slack, limit);
|
||||||
|
return sta->units()->timeUnit()->staToUser(slack);
|
||||||
|
}
|
||||||
|
|
||||||
|
float
|
||||||
|
max_slew_check_limit()
|
||||||
|
{
|
||||||
|
cmdLinkedNetwork();
|
||||||
|
Sta *sta = Sta::sta();
|
||||||
|
Pin *pin;
|
||||||
|
Slew slew;
|
||||||
|
float slack;
|
||||||
|
float limit;
|
||||||
|
sta->maxSlewCheck(pin, slew, slack, limit);
|
||||||
|
return sta->units()->timeUnit()->staToUser(limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -4809,7 +4827,26 @@ float
|
||||||
max_fanout_check_slack()
|
max_fanout_check_slack()
|
||||||
{
|
{
|
||||||
cmdLinkedNetwork();
|
cmdLinkedNetwork();
|
||||||
return Sta::sta()->maxFanoutCheckSlack();
|
Sta *sta = Sta::sta();
|
||||||
|
Pin *pin;
|
||||||
|
float fanout;
|
||||||
|
float slack;
|
||||||
|
float limit;
|
||||||
|
sta->maxFanoutCheck(pin, fanout, slack, limit);
|
||||||
|
return slack;;
|
||||||
|
}
|
||||||
|
|
||||||
|
float
|
||||||
|
max_fanout_check_limit()
|
||||||
|
{
|
||||||
|
cmdLinkedNetwork();
|
||||||
|
Sta *sta = Sta::sta();
|
||||||
|
Pin *pin;
|
||||||
|
float fanout;
|
||||||
|
float slack;
|
||||||
|
float limit;
|
||||||
|
sta->maxFanoutCheck(pin, fanout, slack, limit);
|
||||||
|
return limit;;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -4856,7 +4893,25 @@ max_capacitance_check_slack()
|
||||||
{
|
{
|
||||||
cmdLinkedNetwork();
|
cmdLinkedNetwork();
|
||||||
Sta *sta = Sta::sta();
|
Sta *sta = Sta::sta();
|
||||||
return sta->units()->capacitanceUnit()->staToUser(sta->maxCapacitanceCheckSlack());
|
Pin *pin;
|
||||||
|
float capacitance;
|
||||||
|
float slack;
|
||||||
|
float limit;
|
||||||
|
sta->maxCapacitanceCheck(pin, capacitance, slack, limit);
|
||||||
|
return sta->units()->capacitanceUnit()->staToUser(slack);
|
||||||
|
}
|
||||||
|
|
||||||
|
float
|
||||||
|
max_capacitance_check_limit()
|
||||||
|
{
|
||||||
|
cmdLinkedNetwork();
|
||||||
|
Sta *sta = Sta::sta();
|
||||||
|
Pin *pin;
|
||||||
|
float capacitance;
|
||||||
|
float slack;
|
||||||
|
float limit;
|
||||||
|
sta->maxCapacitanceCheck(pin, capacitance, slack, limit);
|
||||||
|
return sta->units()->capacitanceUnit()->staToUser(limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue