From b39dd24339f4108602555f19cb744cd6793a32eb Mon Sep 17 00:00:00 2001 From: James Cherry Date: Fri, 1 Mar 2024 09:23:23 -0700 Subject: [PATCH] write_timing_model area Signed-off-by: James Cherry --- search/MakeTimingModel.cc | 15 +++++++++++++++ search/MakeTimingModelPvt.hh | 1 + 2 files changed, 16 insertions(+) diff --git a/search/MakeTimingModel.cc b/search/MakeTimingModel.cc index 9d82c8fb..ff9a861f 100644 --- a/search/MakeTimingModel.cc +++ b/search/MakeTimingModel.cc @@ -157,6 +157,21 @@ MakeTimingModel::makeCell() { cell_ = lib_builder_->makeCell(library_, cell_name_, filename_); cell_->setIsMacro(true); + cell_->setArea(findArea()); +} + +float +MakeTimingModel::findArea() +{ + float area = 0.0; + LeafInstanceIterator *leaf_iter = network_->leafInstanceIterator(); + while (leaf_iter->hasNext()) { + const Instance *inst = leaf_iter->next(); + const LibertyCell *cell = network_->libertyCell(inst); + area += cell->area(); + } + delete leaf_iter; + return area; } void diff --git a/search/MakeTimingModelPvt.hh b/search/MakeTimingModelPvt.hh index 55689296..da5f15b8 100644 --- a/search/MakeTimingModelPvt.hh +++ b/search/MakeTimingModelPvt.hh @@ -57,6 +57,7 @@ public: private: void makeLibrary(); void makeCell(); + float findArea(); void makePorts(); void checkClock(Clock *clk); void findTimingFromInputs();