From 458c277c8056bad59a69bcd821c7a4bee093cdc9 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Mon, 22 Jun 2026 19:14:30 -0700 Subject: [PATCH] Sta::delaysInvalidFromFanin Signed-off-by: James Cherry --- include/sta/Sta.hh | 1 - search/Sta.cc | 28 ++++++++-------------------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/include/sta/Sta.hh b/include/sta/Sta.hh index da5da08b..bded0b9a 100644 --- a/include/sta/Sta.hh +++ b/include/sta/Sta.hh @@ -1513,7 +1513,6 @@ protected: bool infer_latches); void delayCalcPreamble(); void delaysInvalidFrom(const Port *port); - void delaysInvalidFromFanin(const Port *port); void deleteEdge(Edge *edge); void netParasiticCaps(Net *net, const RiseFall *rf, diff --git a/search/Sta.cc b/search/Sta.cc index 87a3f7d1..e159c7be 100644 --- a/search/Sta.cc +++ b/search/Sta.cc @@ -3965,7 +3965,7 @@ Sta::setPortExtPinCap(const Port *port, for (const MinMax *mm : min_max->range()) sdc->setPortExtPinCap(port, rf1, mm, cap); } - delaysInvalidFromFanin(port); + delaysInvalidFrom(port); } void @@ -4020,7 +4020,7 @@ Sta::setPortExtWireCap(const Port *port, for (const MinMax *mm : min_max->range()) sdc->setPortExtWireCap(port, rf1, mm, cap); } - delaysInvalidFromFanin(port); + delaysInvalidFrom(port); } void @@ -4038,7 +4038,7 @@ Sta::setPortExtFanout(const Port *port, { for (const MinMax *mm : min_max->range()) sdc->setPortExtFanout(port, mm, fanout); - delaysInvalidFromFanin(port); + delaysInvalidFrom(port); } void @@ -5017,20 +5017,6 @@ Sta::delaysInvalidFrom(Vertex *vertex) graph_delay_calc_->delayInvalid(vertex); } -void -Sta::delaysInvalidFromFanin(const Port *port) -{ - if (graph_) { - Instance *top_inst = network_->topInstance(); - Pin *pin = network_->findPin(top_inst, port); - Vertex *vertex, *bidirect_drvr_vertex; - graph_->pinVertices(pin, vertex, bidirect_drvr_vertex); - delaysInvalidFromFanin(vertex); - if (bidirect_drvr_vertex) - delaysInvalidFromFanin(bidirect_drvr_vertex); - } -} - void Sta::delaysInvalidFromFanin(const Pin *pin) { @@ -5070,9 +5056,11 @@ Sta::delaysInvalidFromFanin(Vertex *vertex) VertexInEdgeIterator edge_iter(vertex, graph_); while (edge_iter.hasNext()) { Edge *edge = edge_iter.next(); - Vertex *from_vertex = edge->from(graph_); - delaysInvalidFrom(from_vertex); - search_->requiredInvalid(from_vertex); + if (edge->isWire()) { + Vertex *from_vertex = edge->from(graph_); + delaysInvalidFrom(from_vertex); + search_->requiredInvalid(from_vertex); + } } }