path enum small speedups

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2025-04-07 16:25:02 -07:00
parent 8f0a5e7451
commit 4781e5b692
1 changed files with 5 additions and 3 deletions

View File

@ -555,13 +555,13 @@ PathEnum::makeDivertedPath(Path *path,
prev_copy->setPrevPath(copy);
copies.push_back(copy);
if (Path::equal(p, after_div, this))
if (p == after_div)
after_div_copy = copy;
if (first)
div_path = copy;
else if (network_->isLatchData(p->pin(this)))
break;
if (Path::equal(p, before_div, this)) {
if (p == before_div) {
// Replaced on next pass.
copy->setPrevPath(after_div);
copy->setPrevEdgeArc(div_edge, div_arc, this);
@ -603,12 +603,14 @@ PathEnum::updatePathHeadDelays(PathSeq &paths,
delayAsString(arrival, this));
path->setArrival(arrival);
prev_arrival = arrival;
const Tag *tag = path->tag(this);
const ClkInfo *clk_info = tag->clkInfo();
if (sdc_->crprActive()
&& clk_info != prev_clk_info
// D->Q paths use the EN->Q clk info so no need to update.
&& arc->role() != TimingRole::latchDtoQ()) {
// When crpr is enabled the diverion may be from another crpr clk pin,
// so update the tags to use the corresponding ClkInfo.
Tag *tag = path->tag(this);
Tag *updated_tag = search_->findTag(path->transition(this),
path_ap,
prev_clk_info,