From 8bcb0eb27bde2c84277a562c60cc9536970353e3 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 28 Dec 2021 15:28:20 -0700 Subject: [PATCH] libert internal_power power group for rise/fall Signed-off-by: James Cherry --- liberty/LibertyReader.cc | 14 ++++++++++++++ liberty/LibertyReaderPvt.hh | 1 + 2 files changed, 15 insertions(+) diff --git a/liberty/LibertyReader.cc b/liberty/LibertyReader.cc index 5c83e9f5..1b1f0fda 100644 --- a/liberty/LibertyReader.cc +++ b/liberty/LibertyReader.cc @@ -403,6 +403,9 @@ LibertyReader::defineVisitors() &LibertyReader::endLeakagePower); defineGroupVisitor("internal_power", &LibertyReader::beginInternalPower, &LibertyReader::endInternalPower); + // power group for both rise/fall + defineGroupVisitor("power", &LibertyReader::beginRisePower, + &LibertyReader::endPower); defineGroupVisitor("fall_power", &LibertyReader::beginFallPower, &LibertyReader::endRiseFallPower); defineGroupVisitor("rise_power", &LibertyReader::beginRisePower, @@ -4535,6 +4538,17 @@ LibertyReader::endRiseFallPower(LibertyGroup *) endTableModel(); } +void +LibertyReader::endPower(LibertyGroup *) +{ + if (table_) { + TableModel *table_model = new TableModel(table_, scale_factor_type_, rf_); + internal_power_->setModel(RiseFall::rise(), new InternalPowerModel(table_model)); + internal_power_->setModel(RiseFall::fall(), new InternalPowerModel(table_model)); + } + endTableModel(); +} + void LibertyReader::visitRelatedGroundPin(LibertyAttr *attr) { diff --git a/liberty/LibertyReaderPvt.hh b/liberty/LibertyReaderPvt.hh index beeb259d..5b9151b3 100644 --- a/liberty/LibertyReaderPvt.hh +++ b/liberty/LibertyReaderPvt.hh @@ -367,6 +367,7 @@ public: virtual void beginFallPower(LibertyGroup *group); virtual void beginRisePower(LibertyGroup *group); virtual void endRiseFallPower(LibertyGroup *group); + virtual void endPower(LibertyGroup *group); virtual void visitRelatedGroundPin(LibertyAttr *attr); virtual void visitRelatedPowerPin(LibertyAttr *attr); virtual void visitRelatedPgPin(LibertyAttr *attr);