replace_cell w/spef memory issue

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2025-12-02 14:29:55 -08:00
parent a88895d65c
commit 14893099ed
4 changed files with 12 additions and 2 deletions

View File

@ -276,6 +276,7 @@ public:
// Network edit before/after methods.
virtual void disconnectPinBefore(const Pin *pin,
const Network *network) = 0;
virtual void deletePinBefore(const Pin *pin) = 0;
virtual void loadPinCapacitanceChanged(const Pin *pin) = 0;
protected:

View File

@ -1286,7 +1286,6 @@ ConcreteNetwork::replaceCell(Instance *inst,
if (cport) {
rpins[cport->pinIndex()] = cpin;
cpin->port_ = cport;
cpin->id_ = ConcreteNetwork::nextObjectId();
}
}
}

View File

@ -721,11 +721,13 @@ ConcreteParasiticNetwork::disconnectPin(const Pin *pin,
ccapacitor->replaceNode(node, subnode);
}
pin_nodes_.erase(pin);
pin_nodes_.erase(pin_node);
delete node;
}
}
////////////////////////////////////////////////////////////////
NetIdPairLess::NetIdPairLess(const Network *network) :
net_less_(network)
{
@ -893,6 +895,13 @@ ConcreteParasitics::disconnectPinBefore(const Pin *pin,
}
}
void
ConcreteParasitics::deletePinBefore(const Pin *pin)
{
// Actions are the same.
disconnectPinBefore(pin, network_);
}
void
ConcreteParasitics::loadPinCapacitanceChanged(const Pin *pin)
{

View File

@ -173,6 +173,7 @@ public:
void disconnectPinBefore(const Pin *pin,
const Network *network) override;
void deletePinBefore(const Pin *pin) override;
void loadPinCapacitanceChanged(const Pin *pin) override;
void deleteReducedParasitics(const Net *net,