delete pin after exception -thru net

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2023-04-12 17:30:04 -07:00
parent ec179707be
commit 0e757e7803
2 changed files with 21 additions and 13 deletions

View File

@ -1487,7 +1487,9 @@ ExceptionThru::deletePinEdges(const Pin *pin,
}
else {
// erase prevents range iteration.
for (const EdgePins &edge_pins : *edges_) {
EdgePinsSet::Iterator edge_iter(edges_);
while (edge_iter.hasNext()) {
const EdgePins &edge_pins = edge_iter.next();
if (edge_pins.first == pin
|| edge_pins.second == pin) {
edges_->erase(edge_pins);

View File

@ -5663,12 +5663,15 @@ Sdc::connectPinAfter(const Pin *pin)
PinSet *drvrs = network_->drivers(pin);
for (ExceptionPath *exception : exceptions_) {
ExceptionPt *first_pt = exception->firstPt();
for (ExceptionThru *thru : *exception->thrus()) {
if (thru->edges()) {
thru->connectPinAfter(drvrs, network_);
if (first_pt == thru)
recordExceptionEdges(exception, thru->edges(),
first_thru_edge_exceptions_);
ExceptionThruSeq *thrus = exception->thrus();
if (thrus) {
for (ExceptionThru *thru : *exception->thrus()) {
if (thru->edges()) {
thru->connectPinAfter(drvrs, network_);
if (first_pt == thru)
recordExceptionEdges(exception, thru->edges(),
first_thru_edge_exceptions_);
}
}
}
}
@ -5681,12 +5684,15 @@ Sdc::disconnectPinBefore(const Pin *pin)
if (have_thru_hpin_exceptions_) {
for (ExceptionPath *exception : exceptions_) {
ExceptionPt *first_pt = exception->firstPt();
for (ExceptionThru *thru : *exception->thrus()) {
if (thru->edges()) {
thru->disconnectPinBefore(pin, network_);
if (thru == first_pt)
recordExceptionEdges(exception, thru->edges(),
first_thru_edge_exceptions_);
ExceptionThruSeq *thrus = exception->thrus();
if (thrus) {
for (ExceptionThru *thru : *exception->thrus()) {
if (thru->edges()) {
thru->disconnectPinBefore(pin, network_);
if (thru == first_pt)
recordExceptionEdges(exception, thru->edges(),
first_thru_edge_exceptions_);
}
}
}
}