From 12c59878eed722fa8a7639a50be1c2371f00d696 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Thu, 16 Apr 2026 15:13:28 -0700 Subject: [PATCH] prima non-ccs report dcalc resolves #418 Signed-off-by: James Cherry --- dcalc/PrimaDelayCalc.cc | 8 ++++++-- parasitics/ConcreteParasitics.cc | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/dcalc/PrimaDelayCalc.cc b/dcalc/PrimaDelayCalc.cc index a38da6ac..86456936 100644 --- a/dcalc/PrimaDelayCalc.cc +++ b/dcalc/PrimaDelayCalc.cc @@ -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. diff --git a/parasitics/ConcreteParasitics.cc b/parasitics/ConcreteParasitics.cc index e015d5e2..6ab2bcbb 100644 --- a/parasitics/ConcreteParasitics.cc +++ b/parasitics/ConcreteParasitics.cc @@ -975,7 +975,10 @@ ConcreteParasitics::piModel(const Parasitic *parasitic, float &c1) const { const ConcreteParasitic *cparasitic = static_cast(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(parasitic); - cparasitic->setPiModel(c2, rpi, c1); + if (cparasitic->isPiModel()) + cparasitic->setPiModel(c2, rpi, c1); + else + criticalError(2701, "setPiModel called on non-PiElmore parasitic."); } ////////////////////////////////////////////////////////////////