search: allow path groups updating to be triggered externally

Signed-off-by: Arthur Koucher <arthurckoucher@gmail.com>
This commit is contained in:
Arthur Koucher 2024-07-24 15:02:38 -03:00
parent 1c7f022cd0
commit 5889cfabf7
2 changed files with 38 additions and 5 deletions

View File

@ -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,

View File

@ -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
{