From aa27e3372ee09f495f30faae17036de17a3a4f45 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Mon, 8 Sep 2025 16:08:26 -0700 Subject: [PATCH] Genclks:: deleteGenclkSrcPaths Signed-off-by: James Cherry --- search/Genclks.cc | 24 ++++++++++++++++-------- search/Genclks.hh | 1 + 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/search/Genclks.cc b/search/Genclks.cc index 299345fc..c2914159 100644 --- a/search/Genclks.cc +++ b/search/Genclks.cc @@ -352,11 +352,8 @@ Genclks::seedSrcPins(Clock *clk, { VertexSet src_vertices(graph_); clk->srcPinVertices(src_vertices, network_, graph_); - VertexSet::Iterator vertex_iter(src_vertices); - while (vertex_iter.hasNext()) { - Vertex *vertex = vertex_iter.next(); + for (Vertex *vertex : src_vertices) iter.enqueue(vertex); - } } //////////////////////////////////////////////////////////////// @@ -972,11 +969,22 @@ Genclks::recordSrcPaths(Clock *gclk) network_->pathName(gclk_pin), gclk->masterClk()->name()); } - // This can be narrowed to visited vertices. - VertexIterator vertex_iter(graph_); - while (vertex_iter.hasNext()) { - Vertex *vertex = vertex_iter.next(); + deleteGenclkSrcPaths(gclk); +} + +void +Genclks:: deleteGenclkSrcPaths(Clock *gclk) +{ + GenclkInfo *genclk_info = genclkInfo(gclk); + GenClkInsertionSearchPred srch_pred(gclk, nullptr, genclk_info, this); + BfsFwdIterator insert_iter(BfsIndex::other, &srch_pred, this); + FilterPath *src_filter = genclk_info->srcFilter(); + seedSrcPins(gclk, src_filter, insert_iter); + GenClkArrivalSearchPred eval_pred(gclk, this); + while (insert_iter.hasNext()) { + Vertex *vertex = insert_iter.next(); search_->deletePaths(vertex); + insert_iter.enqueueAdjacentVertices(vertex, &srch_pred); } } diff --git a/search/Genclks.hh b/search/Genclks.hh index 32752043..0f69f5f0 100644 --- a/search/Genclks.hh +++ b/search/Genclks.hh @@ -130,6 +130,7 @@ private: VertexSet &path_vertices, VertexSet &visited_vertices, EdgeSet *&fdbk_edges); + void deleteGenclkSrcPaths(Clock *gclk); bool found_insertion_delays_; GenclkSrcPathMap genclk_src_paths_;