Genclks:: deleteGenclkSrcPaths

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2025-09-08 16:08:26 -07:00
parent dcbaaf4c05
commit aa27e3372e
2 changed files with 17 additions and 8 deletions

View File

@ -352,12 +352,9 @@ 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);
}
}

View File

@ -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_;