wireload for fanout=0 NaN

This commit is contained in:
James Cherry 2020-06-05 22:02:54 -07:00
parent 5fc4fc17b6
commit ff2e9d521a
4 changed files with 13 additions and 7 deletions

View File

@ -244,7 +244,8 @@ DmpCeffTwoPoleDelayCalc::findParasitic(const Pin *drvr_pin,
parasitic_ap);
// Estimated parasitics are not recorded in the "database", so
// it for deletion after the drvr pin delay calc is finished.
unsaved_parasitics_.push_back(parasitic);
if (parasitic)
unsaved_parasitics_.push_back(parasitic);
return parasitic;
}
}

View File

@ -90,7 +90,8 @@ LumpedCapDelayCalc::findParasitic(const Pin *drvr_pin,
parasitic_ap);
// Estimated parasitics are not recorded in the "database", so
// it for deletion after the drvr pin delay calc is finished.
unsaved_parasitics_.push_back(parasitic);
if (parasitic)
unsaved_parasitics_.push_back(parasitic);
return parasitic;
}
}

View File

@ -1670,10 +1670,13 @@ ConcreteParasitics::estimatePiElmore(const Pin *drvr_pin,
c2, rpi, c1,
elmore_res, elmore_cap, elmore_use_load_cap);
return new ConcretePiElmoreEstimated(c2, rpi, c1, elmore_res, elmore_cap,
elmore_use_load_cap,
rf, op_cond, corner, min_max,
sdc_);
if (c1 > 0.0 || c2 > 0.0)
return new ConcretePiElmoreEstimated(c2, rpi, c1, elmore_res, elmore_cap,
elmore_use_load_cap,
rf, op_cond, corner, min_max,
sdc_);
else
return nullptr;
}
////////////////////////////////////////////////////////////////

View File

@ -150,7 +150,8 @@ EstimateParasitics::estimatePiElmoreBalanced(const Pin *drvr_pin,
float &elmore_cap,
bool &elmore_use_load_cap)
{
if (wireload_res == 0.0) {
if (wireload_res == 0.0
|| fanout == 0) {
// No resistance, so load is capacitance only.
c2 = wireload_cap + net_pin_cap;
rpi = 0.0;