read_spef dspef delete reduced parasitics
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
bdc07bb6a3
commit
1c88a1a8d4
|
|
@ -60,6 +60,8 @@ public:
|
||||||
virtual void deleteParasitics(const Pin *pin,
|
virtual void deleteParasitics(const Pin *pin,
|
||||||
const ParasiticAnalysisPt *ap) = 0;
|
const ParasiticAnalysisPt *ap) = 0;
|
||||||
virtual void deleteUnsavedParasitic(Parasitic *parasitic) = 0;
|
virtual void deleteUnsavedParasitic(Parasitic *parasitic) = 0;
|
||||||
|
virtual void deleteReducedParasitics(const Net *net,
|
||||||
|
const ParasiticAnalysisPt *ap) = 0;
|
||||||
virtual void deleteDrvrReducedParasitics(const Pin *drvr_pin) = 0;
|
virtual void deleteDrvrReducedParasitics(const Pin *drvr_pin) = 0;
|
||||||
|
|
||||||
virtual bool isReducedParasiticNetwork(Parasitic *parasitic) const = 0;
|
virtual bool isReducedParasiticNetwork(Parasitic *parasitic) const = 0;
|
||||||
|
|
|
||||||
|
|
@ -999,6 +999,19 @@ ConcreteParasitics::loadPinCapacitanceChanged(const Pin *pin)
|
||||||
deleteReducedParasitics(pin);
|
deleteReducedParasitics(pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ConcreteParasitics::deleteReducedParasitics(const Net *net,
|
||||||
|
const ParasiticAnalysisPt *ap)
|
||||||
|
{
|
||||||
|
if (!drvr_parasitic_map_.empty()) {
|
||||||
|
PinSet *drivers = network_->drivers(net);
|
||||||
|
if (drivers) {
|
||||||
|
for (auto drvr_pin : *drivers)
|
||||||
|
deleteDrvrReducedParasitics(drvr_pin, ap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Delete reduced models on pin's net.
|
// Delete reduced models on pin's net.
|
||||||
void
|
void
|
||||||
ConcreteParasitics::deleteReducedParasitics(const Pin *pin)
|
ConcreteParasitics::deleteReducedParasitics(const Pin *pin)
|
||||||
|
|
@ -1027,6 +1040,19 @@ ConcreteParasitics::deleteDrvrReducedParasitics(const Pin *drvr_pin)
|
||||||
drvr_parasitic_map_[drvr_pin] = nullptr;
|
drvr_parasitic_map_[drvr_pin] = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ConcreteParasitics::deleteDrvrReducedParasitics(const Pin *drvr_pin,
|
||||||
|
const ParasiticAnalysisPt *ap)
|
||||||
|
{
|
||||||
|
UniqueLock lock(lock_);
|
||||||
|
ConcreteParasitic **parasitics = drvr_parasitic_map_[drvr_pin];
|
||||||
|
if (parasitics) {
|
||||||
|
int ap_index = ap->index();
|
||||||
|
delete parasitics[ap_index];
|
||||||
|
parasitics[ap_index] = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
|
|
||||||
|
|
@ -193,6 +193,8 @@ public:
|
||||||
const Corner *corner,
|
const Corner *corner,
|
||||||
const MinMax *cnst_min_max,
|
const MinMax *cnst_min_max,
|
||||||
const ParasiticAnalysisPt *ap);
|
const ParasiticAnalysisPt *ap);
|
||||||
|
void deleteReducedParasitics(const Net *net,
|
||||||
|
const ParasiticAnalysisPt *ap);
|
||||||
virtual void deleteDrvrReducedParasitics(const Pin *drvr_pin);
|
virtual void deleteDrvrReducedParasitics(const Pin *drvr_pin);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
@ -201,6 +203,8 @@ protected:
|
||||||
Parasitic *ensureRspf(const Pin *drvr_pin);
|
Parasitic *ensureRspf(const Pin *drvr_pin);
|
||||||
void makeAnalysisPtAfter();
|
void makeAnalysisPtAfter();
|
||||||
void deleteReducedParasitics(const Pin *pin);
|
void deleteReducedParasitics(const Pin *pin);
|
||||||
|
void deleteDrvrReducedParasitics(const Pin *drvr_pin,
|
||||||
|
const ParasiticAnalysisPt *ap);
|
||||||
|
|
||||||
// Driver pin to array of parasitics indexed by analysis pt index
|
// Driver pin to array of parasitics indexed by analysis pt index
|
||||||
// and transition.
|
// and transition.
|
||||||
|
|
|
||||||
|
|
@ -448,9 +448,11 @@ SpefReader::dspfBegin(Net *net,
|
||||||
if (increment_
|
if (increment_
|
||||||
&& parasitics_->findParasiticNetwork(net, ap_))
|
&& parasitics_->findParasiticNetwork(net, ap_))
|
||||||
parasitic_ = nullptr;
|
parasitic_ = nullptr;
|
||||||
else
|
else {
|
||||||
|
parasitics_->deleteReducedParasitics(net, ap_);
|
||||||
parasitic_ = parasitics_->makeParasiticNetwork(net, pin_cap_included_,
|
parasitic_ = parasitics_->makeParasiticNetwork(net, pin_cap_included_,
|
||||||
ap_);
|
ap_);
|
||||||
|
}
|
||||||
net_ = net;
|
net_ = net;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue