prima non-ccs report dcalc resolves #418

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2026-04-16 15:13:28 -07:00
parent 49d0ba2cfc
commit 12c59878ee
2 changed files with 14 additions and 4 deletions

View File

@ -987,10 +987,14 @@ PrimaDelayCalc::reportGateDelay(const Pin *drvr_pin,
dcalc_args.emplace_back(nullptr, drvr_pin, nullptr, arc, in_slew,
load_cap, parasitic);
bool arg_fail = checkArgs(dcalc_args, scene, min_max);
if (arg_fail)
if (arg_fail) {
const RiseFall *rf = arc->toEdge()->asRiseFall();
const Parasitic *reduced = table_dcalc_->findParasitic(drvr_pin, rf,
scene, min_max);
return table_dcalc_->reportGateDelay(drvr_pin, arc, in_slew, load_cap,
parasitic, load_pin_index_map, scene,
reduced, load_pin_index_map, scene,
min_max, digits);
}
else {
GateTimingModel *model = arc->gateModel(scene, min_max);
// Delay calc to find ceff.

View File

@ -975,7 +975,10 @@ ConcreteParasitics::piModel(const Parasitic *parasitic,
float &c1) const
{
const ConcreteParasitic *cparasitic = static_cast<const ConcreteParasitic*>(parasitic);
cparasitic->piModel(c2, rpi, c1);
if (cparasitic->isPiModel())
cparasitic->piModel(c2, rpi, c1);
else
criticalError(2700, "piModel called on non-PiElmore parasitic.");
}
void
@ -985,7 +988,10 @@ ConcreteParasitics::setPiModel(Parasitic *parasitic,
float c1)
{
ConcreteParasitic *cparasitic = static_cast<ConcreteParasitic*>(parasitic);
cparasitic->setPiModel(c2, rpi, c1);
if (cparasitic->isPiModel())
cparasitic->setPiModel(c2, rpi, c1);
else
criticalError(2701, "setPiModel called on non-PiElmore parasitic.");
}
////////////////////////////////////////////////////////////////