From 1c0c6e06f35a85403a410e6c9dc72b9d8cea0cec Mon Sep 17 00:00:00 2001 From: James Cherry Date: Tue, 28 Jan 2025 08:56:40 -0700 Subject: [PATCH] recerse bbffa9b4 a976bbac for performance issues Signed-off-by: James Cherry --- include/sta/Search.hh | 3 +-- search/Search.cc | 17 +++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/sta/Search.hh b/include/sta/Search.hh index 74c569f2..e1dfeb4f 100644 --- a/include/sta/Search.hh +++ b/include/sta/Search.hh @@ -261,10 +261,9 @@ public: const PathAnalysisPt *path_ap); ClkInfo *thruClkInfo(PathVertex *from_path, ClkInfo *from_clk_info, - bool from_is_clk, Edge *edge, + Vertex *to_vertex, const Pin *to_pin, - bool to_is_clk, const MinMax *min_max, const PathAnalysisPt *path_ap); ClkInfo *clkInfoWithCrprClkPath(ClkInfo *from_clk_info, diff --git a/search/Search.cc b/search/Search.cc index 49338cf2..bb217733 100644 --- a/search/Search.cc +++ b/search/Search.cc @@ -2170,8 +2170,10 @@ PathVisitor::visitFromPath(const Pin *from_pin, // passed thru reg/latch D->Q edges. && from_tag->isClock())) { const RiseFall *clk_rf = clk_edge ? clk_edge->transition() : nullptr; - ClkInfo *to_clk_info = search_->clkInfoWithCrprClkPath(from_clk_info, - from_path, path_ap); + ClkInfo *to_clk_info = from_clk_info; + if (network_->direction(to_pin)->isInternal()) + to_clk_info = search_->clkInfoWithCrprClkPath(from_clk_info, + from_path, path_ap); to_tag = search_->fromRegClkTag(from_pin, from_rf, clk, clk_rf, to_clk_info, to_pin, to_rf, min_max, path_ap); @@ -2425,8 +2427,8 @@ Search::thruClkTag(PathVertex *from_path, && to_propagates_clk && (role->isWire() || role == TimingRole::combinational())); - ClkInfo *to_clk_info = thruClkInfo(from_path, from_clk_info, from_is_clk, - edge, to_pin, to_is_clk, + ClkInfo *to_clk_info = thruClkInfo(from_path, from_clk_info, + edge, to_vertex, to_pin, min_max, path_ap); Tag *to_tag = mutateTag(from_tag,from_pin,from_rf,from_is_clk,from_clk_info, to_pin, to_rf, to_is_clk, to_is_reg_clk, false, @@ -2438,10 +2440,9 @@ Search::thruClkTag(PathVertex *from_path, ClkInfo * Search::thruClkInfo(PathVertex *from_path, ClkInfo *from_clk_info, - bool from_is_clk, Edge *edge, - const Pin *to_pin, - bool to_is_clk, + Vertex *to_vertex, + const Pin *to_pin, const MinMax *min_max, const PathAnalysisPt *path_ap) { @@ -2472,7 +2473,7 @@ Search::thruClkInfo(PathVertex *from_path, PathVertex *to_crpr_clk_path = nullptr; if (sdc_->crprActive() - && from_is_clk && !to_is_clk) { + && to_vertex->isRegClk()) { to_crpr_clk_path = from_path; changed = true; }