From 3b2c6e1df6338798ffe1ae13318394b51c49df83 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Thu, 1 Jun 2023 19:35:58 -0700 Subject: [PATCH] merge ConcreteElmore into ConcretePiElmore Signed-off-by: James Cherry --- parasitics/ConcreteParasitics.cc | 60 +++++++++-------------------- parasitics/ConcreteParasiticsPvt.hh | 24 +++--------- 2 files changed, 24 insertions(+), 60 deletions(-) diff --git a/parasitics/ConcreteParasitics.cc b/parasitics/ConcreteParasitics.cc index 2ad7ff32..20851c23 100644 --- a/parasitics/ConcreteParasitics.cc +++ b/parasitics/ConcreteParasitics.cc @@ -144,44 +144,6 @@ ConcreteParasitic::nodeIterator() //////////////////////////////////////////////////////////////// -ConcreteElmore::ConcreteElmore() : - loads_(nullptr) -{ -} - -ConcreteElmore::~ConcreteElmore() -{ - delete loads_; -} - -void -ConcreteElmore::findElmore(const Pin *load_pin, - float &elmore, - bool &exists) const -{ - if (loads_) - loads_->findKey(load_pin, elmore, exists); - else - exists = false; -} - -void -ConcreteElmore::deleteLoad(const Pin *load_pin) -{ - loads_->erase(load_pin); -} - -void -ConcreteElmore::setElmore(const Pin *load_pin, - float elmore) -{ - if (loads_ == nullptr) - loads_ = new ConcreteElmoreLoadMap; - (*loads_)[load_pin] = elmore; -} - -//////////////////////////////////////////////////////////////// - ConcretePi::ConcretePi(float c2, float rpi, float c1) : @@ -230,10 +192,15 @@ ConcretePiElmore::ConcretePiElmore(float c2, float rpi, float c1) : ConcretePi(c2, rpi, c1), - ConcreteElmore() + loads_(nullptr) { } +ConcretePiElmore::~ConcretePiElmore() +{ + delete loads_; +} + float ConcretePiElmore::capacitance() const { @@ -273,14 +240,25 @@ ConcretePiElmore::findElmore(const Pin *load_pin, float &elmore, bool &exists) const { - ConcreteElmore::findElmore(load_pin, elmore, exists); + if (loads_) + loads_->findKey(load_pin, elmore, exists); + else + exists = false; } void ConcretePiElmore::setElmore(const Pin *load_pin, float elmore) { - ConcreteElmore::setElmore(load_pin, elmore); + if (loads_ == nullptr) + loads_ = new ConcreteElmoreLoadMap; + (*loads_)[load_pin] = elmore; +} + +void +ConcretePiElmore::deleteLoad(const Pin *load_pin) +{ + loads_->erase(load_pin); } //////////////////////////////////////////////////////////////// diff --git a/parasitics/ConcreteParasiticsPvt.hh b/parasitics/ConcreteParasiticsPvt.hh index f5f0426a..122b757b 100644 --- a/parasitics/ConcreteParasiticsPvt.hh +++ b/parasitics/ConcreteParasiticsPvt.hh @@ -82,24 +82,6 @@ public: virtual ParasiticNodeIterator *nodeIterator(); }; -class ConcreteElmore -{ -public: - void findElmore(const Pin *load_pin, - float &elmore, - bool &exists) const; - void deleteLoad(const Pin *load_pin); - void setElmore(const Pin *load_pin, - float elmore); - -protected: - ConcreteElmore(); - virtual ~ConcreteElmore(); - -private: - ConcreteElmoreLoadMap *loads_; -}; - // Pi model for a driver pin. class ConcretePi { @@ -126,13 +108,13 @@ protected: // Pi model for a driver pin and the elmore delay to each load. class ConcretePiElmore : public ConcretePi, - public ConcreteElmore, public ConcreteParasitic { public: ConcretePiElmore(float c2, float rpi, float c1); + virtual ~ConcretePiElmore(); virtual bool isPiElmore() const { return true; } virtual bool isPiModel() const { return true; } virtual float capacitance() const; @@ -143,6 +125,10 @@ public: virtual void findElmore(const Pin *load_pin, float &elmore, bool &exists) const; virtual void setElmore(const Pin *load_pin, float elmore); + void deleteLoad(const Pin *load_pin); + +private: + ConcreteElmoreLoadMap *loads_; }; // PiElmore from wireload model estimate.