diff --git a/dcalc/ArcDelayCalc.cc b/dcalc/ArcDelayCalc.cc index 1b7ef4da..4b5a3cb7 100644 --- a/dcalc/ArcDelayCalc.cc +++ b/dcalc/ArcDelayCalc.cc @@ -25,15 +25,15 @@ ArcDelayCalc::ArcDelayCalc(StaState *sta): void ArcDelayCalc::gateDelay(const TimingArc *arc, - const Slew &in_slew, - float load_cap, - const Parasitic *parasitic, - float, - const Pvt *, - const DcalcAnalysisPt *dcalc_ap, - // Return values. - ArcDelay &gate_delay, - Slew &drvr_slew) + const Slew &in_slew, + float load_cap, + const Parasitic *parasitic, + float, + const Pvt *, + const DcalcAnalysisPt *dcalc_ap, + // Return values. + ArcDelay &gate_delay, + Slew &drvr_slew) { LoadPinIndexMap load_pin_index_map(network_); ArcDcalcResult dcalc_result = gateDelay(nullptr, arc, in_slew, load_cap, parasitic, diff --git a/dcalc/ArnoldiDelayCalc.cc b/dcalc/ArnoldiDelayCalc.cc index bc453595..88d0c880 100644 --- a/dcalc/ArnoldiDelayCalc.cc +++ b/dcalc/ArnoldiDelayCalc.cc @@ -117,6 +117,7 @@ public: Parasitic *findParasitic(const Pin *drvr_pin, const RiseFall *rf, const DcalcAnalysisPt *dcalc_ap) override; + ReducedParasiticType reducedParasiticType() const override; ArcDcalcResult inputPortDelay(const Pin *port_pin, float in_slew, const RiseFall *rf, @@ -297,6 +298,12 @@ ArnoldiDelayCalc::findParasitic(const Pin *drvr_pin, return parasitic; } +ReducedParasiticType +ArnoldiDelayCalc::reducedParasiticType() const +{ + return ReducedParasiticType::arnoldi; +} + ArcDcalcResult ArnoldiDelayCalc::inputPortDelay(const Pin *, float in_slew, diff --git a/dcalc/DmpDelayCalc.cc b/dcalc/DmpDelayCalc.cc index 55ff6b3b..15145abd 100644 --- a/dcalc/DmpDelayCalc.cc +++ b/dcalc/DmpDelayCalc.cc @@ -132,6 +132,7 @@ public: Parasitic *findParasitic(const Pin *drvr_pin, const RiseFall *rf, const DcalcAnalysisPt *dcalc_ap) override; + ReducedParasiticType reducedParasiticType() const override; ArcDcalcResult inputPortDelay(const Pin *port_pin, float in_slew, const RiseFall *rf, @@ -255,6 +256,12 @@ DmpCeffTwoPoleDelayCalc::findParasitic(const Pin *drvr_pin, return parasitic; } +ReducedParasiticType +DmpCeffTwoPoleDelayCalc::reducedParasiticType() const +{ + return ReducedParasiticType::pi_pole_residue2; +} + ArcDcalcResult DmpCeffTwoPoleDelayCalc::inputPortDelay(const Pin *, float in_slew, diff --git a/dcalc/LumpedCapDelayCalc.cc b/dcalc/LumpedCapDelayCalc.cc index c68ae660..975ca045 100644 --- a/dcalc/LumpedCapDelayCalc.cc +++ b/dcalc/LumpedCapDelayCalc.cc @@ -101,6 +101,12 @@ LumpedCapDelayCalc::findParasitic(const Pin *drvr_pin, return parasitic; } +ReducedParasiticType +LumpedCapDelayCalc::reducedParasiticType() const +{ + return ReducedParasiticType::pi_elmore; +} + ArcDcalcResult LumpedCapDelayCalc::inputPortDelay(const Pin *, float in_slew, diff --git a/dcalc/LumpedCapDelayCalc.hh b/dcalc/LumpedCapDelayCalc.hh index 48b35285..0968c494 100644 --- a/dcalc/LumpedCapDelayCalc.hh +++ b/dcalc/LumpedCapDelayCalc.hh @@ -30,6 +30,7 @@ public: Parasitic *findParasitic(const Pin *drvr_pin, const RiseFall *rf, const DcalcAnalysisPt *dcalc_ap) override; + ReducedParasiticType reducedParasiticType() const override; ArcDcalcResult inputPortDelay(const Pin *port_pin, float in_slew, const RiseFall *rf, diff --git a/dcalc/UnitDelayCalc.cc b/dcalc/UnitDelayCalc.cc index 5722b24b..d9ce6c7a 100644 --- a/dcalc/UnitDelayCalc.cc +++ b/dcalc/UnitDelayCalc.cc @@ -45,6 +45,12 @@ UnitDelayCalc::findParasitic(const Pin *, return nullptr; } +ReducedParasiticType +UnitDelayCalc::reducedParasiticType() const +{ + return ReducedParasiticType::none; +} + ArcDcalcResult UnitDelayCalc::inputPortDelay(const Pin *, float, diff --git a/dcalc/UnitDelayCalc.hh b/dcalc/UnitDelayCalc.hh index 0194caef..788a3742 100644 --- a/dcalc/UnitDelayCalc.hh +++ b/dcalc/UnitDelayCalc.hh @@ -29,6 +29,7 @@ public: Parasitic *findParasitic(const Pin *drvr_pin, const RiseFall *rf, const DcalcAnalysisPt *dcalc_ap) override; + ReducedParasiticType reducedParasiticType() const override; ArcDcalcResult inputPortDelay(const Pin *port_pin, float in_slew, const RiseFall *rf, diff --git a/include/sta/ArcDelayCalc.hh b/include/sta/ArcDelayCalc.hh index c7b98be8..db3a4f0c 100644 --- a/include/sta/ArcDelayCalc.hh +++ b/include/sta/ArcDelayCalc.hh @@ -124,6 +124,7 @@ public: virtual Parasitic *findParasitic(const Pin *drvr_pin, const RiseFall *rf, const DcalcAnalysisPt *dcalc_ap) = 0; + virtual ReducedParasiticType reducedParasiticType() const = 0; // Find the wire delays and slews for an input port without a driving cell. // This call primarily initializes the load delay/slew iterator. virtual ArcDcalcResult inputPortDelay(const Pin *port_pin,