report max_fanout, max_cap do not report disabled pins

This commit is contained in:
James Cherry 2020-06-14 21:23:26 -07:00
parent bb9060160d
commit 68bd76e1a8
4 changed files with 28 additions and 9 deletions

View File

@ -249,8 +249,7 @@ CheckCapacitanceLimits::pinCapacitanceLimitViolations(Instance *inst,
InstancePinIterator *pin_iter = network->pinIterator(inst); InstancePinIterator *pin_iter = network->pinIterator(inst);
while (pin_iter->hasNext()) { while (pin_iter->hasNext()) {
Pin *pin = pin_iter->next(); Pin *pin = pin_iter->next();
if (network->direction(pin)->isAnyOutput() if (checkPin(pin)) {
&& !sim->logicZeroOne(pin)) {
const Corner *corner1; const Corner *corner1;
const RiseFall *rf; const RiseFall *rf;
float capacitance, limit, slack; float capacitance, limit, slack;
@ -294,8 +293,7 @@ CheckCapacitanceLimits::pinMinCapacitanceLimitSlack(Instance *inst,
InstancePinIterator *pin_iter = network->pinIterator(inst); InstancePinIterator *pin_iter = network->pinIterator(inst);
while (pin_iter->hasNext()) { while (pin_iter->hasNext()) {
Pin *pin = pin_iter->next(); Pin *pin = pin_iter->next();
if (network->direction(pin)->isAnyOutput() if (checkPin(pin)) {
&& !sim->logicZeroOne(pin)) {
const Corner *corner1; const Corner *corner1;
const RiseFall *rf; const RiseFall *rf;
float capacitance, limit, slack; float capacitance, limit, slack;
@ -312,4 +310,15 @@ CheckCapacitanceLimits::pinMinCapacitanceLimitSlack(Instance *inst,
delete pin_iter; delete pin_iter;
} }
bool
CheckCapacitanceLimits::checkPin(const Pin *pin)
{
const Network *network = sta_->network();
const Sim *sim = sta_->sim();
const Sdc *sdc = sta_->sdc();
return network->direction(pin)->isAnyOutput()
&& !sim->logicZeroOne(pin)
&& !sdc->isDisabled(pin);
}
} // namespace } // namespace

View File

@ -84,6 +84,7 @@ protected:
// Return values. // Return values.
Pin *&min_slack_pin, Pin *&min_slack_pin,
float &min_slack); float &min_slack);
bool checkPin(const Pin *pin);
const StaState *sta_; const StaState *sta_;
}; };

View File

@ -224,8 +224,7 @@ CheckFanoutLimits::pinFanoutLimitViolations(Instance *inst,
InstancePinIterator *pin_iter = network->pinIterator(inst); InstancePinIterator *pin_iter = network->pinIterator(inst);
while (pin_iter->hasNext()) { while (pin_iter->hasNext()) {
Pin *pin = pin_iter->next(); Pin *pin = pin_iter->next();
if (network->direction(pin)->isAnyOutput() if (checkPin(pin)) {
&& !sim->logicZeroOne(pin)) {
float fanout; float fanout;
float limit, slack; float limit, slack;
checkFanout(pin, min_max, fanout, limit, slack ); checkFanout(pin, min_max, fanout, limit, slack );
@ -262,12 +261,10 @@ CheckFanoutLimits::pinMinFanoutLimitSlack(Instance *inst,
float &min_slack) float &min_slack)
{ {
const Network *network = sta_->network(); const Network *network = sta_->network();
const Sim *sim = sta_->sim();
InstancePinIterator *pin_iter = network->pinIterator(inst); InstancePinIterator *pin_iter = network->pinIterator(inst);
while (pin_iter->hasNext()) { while (pin_iter->hasNext()) {
Pin *pin = pin_iter->next(); Pin *pin = pin_iter->next();
if (network->direction(pin)->isAnyOutput() if (checkPin(pin)) {
&& !sim->logicZeroOne(pin)) {
float fanout; float fanout;
float limit, slack; float limit, slack;
checkFanout(pin, min_max, fanout, limit, slack); checkFanout(pin, min_max, fanout, limit, slack);
@ -282,4 +279,15 @@ CheckFanoutLimits::pinMinFanoutLimitSlack(Instance *inst,
delete pin_iter; delete pin_iter;
} }
bool
CheckFanoutLimits::checkPin(const Pin *pin)
{
const Network *network = sta_->network();
const Sim *sim = sta_->sim();
const Sdc *sdc = sta_->sdc();
return network->direction(pin)->isAnyOutput()
&& !sim->logicZeroOne(pin)
&& !sdc->isDisabled(pin);
}
} // namespace } // namespace

View File

@ -59,6 +59,7 @@ protected:
Pin *&min_slack_pin, Pin *&min_slack_pin,
float &min_slack); float &min_slack);
float fanoutLoad(const Pin *pin) const; float fanoutLoad(const Pin *pin) const;
bool checkPin(const Pin *pin);
const StaState *sta_; const StaState *sta_;
}; };