tweaks
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
5fbe059b61
commit
830a8dbbfc
|
|
@ -265,8 +265,8 @@ protected:
|
||||||
double *p_;
|
double *p_;
|
||||||
int *index_;
|
int *index_;
|
||||||
|
|
||||||
// Gate slew used to check load delay.
|
// Driver slew used to check load delay.
|
||||||
double gate_slew_;
|
double drvr_slew_;
|
||||||
double vo_delay_;
|
double vo_delay_;
|
||||||
// True if the driver parameters are valid for finding the load delays.
|
// True if the driver parameters are valid for finding the load delays.
|
||||||
bool driver_valid_;
|
bool driver_valid_;
|
||||||
|
|
@ -565,9 +565,9 @@ DmpAlg::loadDelaySlew(const Pin *,
|
||||||
if (!driver_valid_
|
if (!driver_valid_
|
||||||
|| elmore == 0.0
|
|| elmore == 0.0
|
||||||
// Elmore delay is small compared to driver slew.
|
// Elmore delay is small compared to driver slew.
|
||||||
|| elmore < gate_slew_ * 1e-3) {
|
|| elmore < drvr_slew_ * 1e-3) {
|
||||||
delay = elmore;
|
delay = elmore;
|
||||||
slew = gate_slew_;
|
slew = drvr_slew_;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Use the driver thresholds and rely on thresholdAdjust to
|
// Use the driver thresholds and rely on thresholdAdjust to
|
||||||
|
|
@ -591,18 +591,18 @@ DmpAlg::loadDelaySlew(const Pin *,
|
||||||
// Use elmore delay.
|
// Use elmore delay.
|
||||||
delay1 = elmore;
|
delay1 = elmore;
|
||||||
}
|
}
|
||||||
if (slew1 < gate_slew_) {
|
if (slew1 < drvr_slew_) {
|
||||||
// Only report a problem if the difference is significant.
|
// Only report a problem if the difference is significant.
|
||||||
if ((gate_slew_ - slew1) > vth_time_tol * gate_slew_)
|
if ((drvr_slew_ - slew1) > vth_time_tol * drvr_slew_)
|
||||||
fail("load slew less than driver slew");
|
fail("load slew less than driver slew");
|
||||||
slew1 = gate_slew_;
|
slew1 = drvr_slew_;
|
||||||
}
|
}
|
||||||
delay = delay1;
|
delay = delay1;
|
||||||
slew = slew1;
|
slew = slew1;
|
||||||
}
|
}
|
||||||
catch (DmpError &error) {
|
catch (DmpError &error) {
|
||||||
delay = elmore_;
|
delay = elmore_;
|
||||||
slew = gate_slew_;
|
slew = drvr_slew_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -746,7 +746,7 @@ DmpCap::gateDelaySlew(double &delay,
|
||||||
debugPrint(debug_, "dmp_ceff", 3, " ceff = %s",
|
debugPrint(debug_, "dmp_ceff", 3, " ceff = %s",
|
||||||
units_->capacitanceUnit()->asString(ceff_));
|
units_->capacitanceUnit()->asString(ceff_));
|
||||||
gateCapDelaySlew(ceff_, delay, slew);
|
gateCapDelaySlew(ceff_, delay, slew);
|
||||||
gate_slew_ = slew;
|
drvr_slew_ = slew;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -756,7 +756,7 @@ DmpCap::loadDelaySlew(const Pin *,
|
||||||
Slew &slew)
|
Slew &slew)
|
||||||
{
|
{
|
||||||
delay = elmore;
|
delay = elmore;
|
||||||
slew = gate_slew_;
|
slew = drvr_slew_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -932,7 +932,7 @@ DmpPi::gateDelaySlew(double &delay,
|
||||||
ceff_ = c1_ + c2_;
|
ceff_ = c1_ + c2_;
|
||||||
gateCapDelaySlew(ceff_, delay, slew);
|
gateCapDelaySlew(ceff_, delay, slew);
|
||||||
}
|
}
|
||||||
gate_slew_ = slew;
|
drvr_slew_ = slew;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -1223,7 +1223,7 @@ DmpZeroC2::gateDelaySlew(double &delay,
|
||||||
ceff_ = c1_;
|
ceff_ = c1_;
|
||||||
gateCapDelaySlew(ceff_, delay, slew);
|
gateCapDelaySlew(ceff_, delay, slew);
|
||||||
}
|
}
|
||||||
gate_slew_ = slew;
|
drvr_slew_ = slew;
|
||||||
}
|
}
|
||||||
|
|
||||||
double
|
double
|
||||||
|
|
|
||||||
|
|
@ -3962,10 +3962,8 @@ Sta::findElmore(Pin *drvr_pin,
|
||||||
Corner *corner = cmd_corner_;
|
Corner *corner = cmd_corner_;
|
||||||
const ParasiticAnalysisPt *ap = corner->findParasiticAnalysisPt(min_max);
|
const ParasiticAnalysisPt *ap = corner->findParasiticAnalysisPt(min_max);
|
||||||
Parasitic *pi_elmore = parasitics_->findPiElmore(drvr_pin, rf, ap);
|
Parasitic *pi_elmore = parasitics_->findPiElmore(drvr_pin, rf, ap);
|
||||||
if (pi_elmore) {
|
if (pi_elmore)
|
||||||
exists = false;
|
|
||||||
parasitics_->findElmore(pi_elmore, load_pin, elmore, exists);
|
parasitics_->findElmore(pi_elmore, load_pin, elmore, exists);
|
||||||
}
|
|
||||||
else
|
else
|
||||||
exists = false;
|
exists = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue