report -max_cap do not report constant nets

This commit is contained in:
James Cherry 2020-06-14 18:09:51 -07:00
parent 9ff2d20e05
commit df65a4ca40
3 changed files with 23 additions and 14 deletions

View File

@ -25,6 +25,7 @@
#include "StaState.hh"
#include "Corner.hh"
#include "PortDirection.hh"
#include "Sim.hh"
namespace sta {
@ -244,10 +245,12 @@ CheckCapacitanceLimits::pinCapacitanceLimitViolations(Instance *inst,
PinSeq *violators)
{
const Network *network = sta_->network();
const Sim *sim = sta_->sim();
InstancePinIterator *pin_iter = network->pinIterator(inst);
while (pin_iter->hasNext()) {
Pin *pin = pin_iter->next();
if (network->direction(pin)->isAnyOutput()) {
if (network->direction(pin)->isAnyOutput()
&& !sim->logicZeroOne(pin)) {
const Corner *corner1;
const RiseFall *rf;
float capacitance, limit, slack;
@ -287,19 +290,23 @@ CheckCapacitanceLimits::pinMinCapacitanceLimitSlack(Instance *inst,
float &min_slack)
{
const Network *network = sta_->network();
const Sim *sim = sta_->sim();
InstancePinIterator *pin_iter = network->pinIterator(inst);
while (pin_iter->hasNext()) {
Pin *pin = pin_iter->next();
const Corner *corner1;
const RiseFall *rf;
float capacitance, limit, slack;
checkCapacitance(pin, corner, min_max, corner1, rf, capacitance, limit, slack);
if (rf
&& !fuzzyInf(slack)
&& (min_slack_pin == nullptr
|| slack < min_slack)) {
min_slack_pin = pin;
min_slack = slack;
if (network->direction(pin)->isAnyOutput()
&& !sim->logicZeroOne(pin)) {
const Corner *corner1;
const RiseFall *rf;
float capacitance, limit, slack;
checkCapacitance(pin, corner, min_max, corner1, rf, capacitance, limit, slack);
if (rf
&& !fuzzyInf(slack)
&& (min_slack_pin == nullptr
|| slack < min_slack)) {
min_slack_pin = pin;
min_slack = slack;
}
}
}
delete pin_iter;

View File

@ -220,10 +220,12 @@ CheckFanoutLimits::pinFanoutLimitViolations(Instance *inst,
PinSeq *violators)
{
const Network *network = sta_->network();
const Sim *sim = sta_->sim();
InstancePinIterator *pin_iter = network->pinIterator(inst);
while (pin_iter->hasNext()) {
Pin *pin = pin_iter->next();
if (network->direction(pin)->isAnyOutput()) {
if (network->direction(pin)->isAnyOutput()
&& !sim->logicZeroOne(pin)) {
float fanout;
float limit, slack;
checkFanout(pin, min_max, fanout, limit, slack );
@ -264,8 +266,6 @@ CheckFanoutLimits::pinMinFanoutLimitSlack(Instance *inst,
InstancePinIterator *pin_iter = network->pinIterator(inst);
while (pin_iter->hasNext()) {
Pin *pin = pin_iter->next();
if (stringEq(network->pathName(pin),"rdrv/Q"))
printf("luse\n");
if (network->direction(pin)->isAnyOutput()
&& !sim->logicZeroOne(pin)) {
float fanout;

View File

@ -4974,6 +4974,8 @@ Sta::checkCapacitanceLimitPreamble()
{
if (check_capacitance_limits_ == nullptr)
makeCheckCapacitanceLimits();
// Sim values required to suppress reporting constant nets.
ensureLevelized();
}
Pin *