Parasitics::deleteParasiticNetworks
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
866a434021
commit
be0d78b145
|
|
@ -97,6 +97,7 @@ public:
|
|||
virtual bool includesPinCaps(Parasitic *parasitic) const;
|
||||
virtual void deleteParasiticNetwork(const Net *net,
|
||||
const ParasiticAnalysisPt *ap);
|
||||
virtual void deleteParasiticNetworks(const Net *net);
|
||||
virtual ParasiticNode *ensureParasiticNode(Parasitic *parasitic,
|
||||
const Net *net,
|
||||
int id);
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ public:
|
|||
// Delete parasitic network if it exists.
|
||||
virtual void deleteParasiticNetwork(const Net *net,
|
||||
const ParasiticAnalysisPt *ap) = 0;
|
||||
virtual void deleteParasiticNetworks(const Net *net) = 0;
|
||||
// True if the parasitic network caps include pin capacitances.
|
||||
virtual bool includesPinCaps(Parasitic *parasitic) const = 0;
|
||||
// Parasitic network component builders.
|
||||
|
|
|
|||
|
|
@ -1340,7 +1340,30 @@ ConcreteParasitics::deleteParasiticNetwork(const Net *net,
|
|||
if (parasitics) {
|
||||
int ap_index = ap->index();
|
||||
delete parasitics[ap_index];
|
||||
parasitics[ap_index] = nullptr;
|
||||
int ap_count = corners_->parasiticAnalysisPtCount();
|
||||
if (ap_count == 1) {
|
||||
// If there is only one parasitic we can remove the array and map entry.
|
||||
delete [] parasitics;
|
||||
parasitic_network_map_.erase(net);
|
||||
}
|
||||
else
|
||||
parasitics[ap_index] = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ConcreteParasitics::deleteParasiticNetworks(const Net *net)
|
||||
{
|
||||
if (!parasitic_network_map_.empty()) {
|
||||
UniqueLock lock(lock_);
|
||||
ConcreteParasiticNetwork **parasitics = parasitic_network_map_.findKey(net);
|
||||
if (parasitics) {
|
||||
int ap_count = corners_->parasiticAnalysisPtCount();
|
||||
for (int i = 0; i < ap_count; i++)
|
||||
delete parasitics[i];
|
||||
delete [] parasitics;
|
||||
parasitic_network_map_.erase(net);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@ public:
|
|||
const ParasiticAnalysisPt *ap);
|
||||
virtual void deleteParasiticNetwork(const Net *net,
|
||||
const ParasiticAnalysisPt *ap);
|
||||
virtual void deleteParasiticNetworks(const Net *net);
|
||||
virtual bool includesPinCaps(Parasitic *parasitic) const;
|
||||
virtual ParasiticNode *ensureParasiticNode(Parasitic *parasitic,
|
||||
const Net *net,
|
||||
|
|
|
|||
|
|
@ -245,6 +245,11 @@ NullParasitics::deleteParasiticNetwork(const Net *,
|
|||
{
|
||||
}
|
||||
|
||||
void
|
||||
NullParasitics::deleteParasiticNetworks(const Net *)
|
||||
{
|
||||
}
|
||||
|
||||
ParasiticNode *
|
||||
NullParasitics::ensureParasiticNode(Parasitic *,
|
||||
const Net *,
|
||||
|
|
|
|||
Loading…
Reference in New Issue