From 5889cfabf7292770976c591c7ac5aef8c70b96da Mon Sep 17 00:00:00 2001 From: Arthur Koucher Date: Wed, 24 Jul 2024 15:02:38 -0300 Subject: [PATCH] search: allow path groups updating to be triggered externally Signed-off-by: Arthur Koucher --- include/sta/Search.hh | 12 ++++++++++++ search/Search.cc | 31 ++++++++++++++++++++++++++----- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/include/sta/Search.hh b/include/sta/Search.hh index a2430809..8705a382 100644 --- a/include/sta/Search.hh +++ b/include/sta/Search.hh @@ -155,6 +155,18 @@ public: Arrival pathClkPathArrival(const Path *path) const; PathGroup *pathGroup(const PathEnd *path_end) const; + void updatePathGroups(int group_count, + int endpoint_count, + bool unique_pins, + float min_slack, + float max_slack, + PathGroupNameSet *group_names, + bool setup, + bool hold, + bool recovery, + bool removal, + bool clk_gating_setup, + bool clk_gating_hold); void deletePathGroups(); virtual ExceptionPath *exceptionTo(ExceptionPathType type, const Path *path, diff --git a/search/Search.cc b/search/Search.cc index 521d3589..92d1335a 100644 --- a/search/Search.cc +++ b/search/Search.cc @@ -452,11 +452,11 @@ Search::findPathEnds(ExceptionFrom *from, recovery = removal = false; if (!sdc_->gatedClkChecksEnabled()) clk_gating_setup = clk_gating_hold = false; - path_groups_ = makePathGroups(group_count, endpoint_count, unique_pins, - slack_min, slack_max, - group_names, setup, hold, - recovery, removal, - clk_gating_setup, clk_gating_hold); + updatePathGroups(group_count, endpoint_count, unique_pins, + slack_min, slack_max, + group_names, setup, hold, + recovery, removal, + clk_gating_setup, clk_gating_hold); ensureDownstreamClkPins(); PathEndSeq path_ends = path_groups_->makePathEnds(to, unconstrained_paths_, corner, min_max, @@ -4006,6 +4006,27 @@ Search::deletePathGroups() path_groups_ = nullptr; } +void +Search::updatePathGroups(int group_count, + int endpoint_count, + bool unique_pins, + float min_slack, + float max_slack, + PathGroupNameSet *group_names, + bool setup, + bool hold, + bool recovery, + bool removal, + bool clk_gating_setup, + bool clk_gating_hold) +{ + path_groups_ = makePathGroups(group_count, endpoint_count, unique_pins, + min_slack, max_slack, + group_names, setup, hold, + recovery, removal, + clk_gating_setup, clk_gating_hold); +} + PathGroup * Search::pathGroup(const PathEnd *path_end) const {