mirror of
https://github.com/The-OpenROAD-Project/OpenSTA.git
synced 2026-09-01 10:27:10 +02:00
read_spef dspef delete reduced parasitics
Signed-off-by: James Cherry <[email protected]>
This commit is contained in:
@@ -999,6 +999,19 @@ ConcreteParasitics::loadPinCapacitanceChanged(const Pin *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.
|
||||
void
|
||||
ConcreteParasitics::deleteReducedParasitics(const Pin *pin)
|
||||
@@ -1027,6 +1040,19 @@ ConcreteParasitics::deleteDrvrReducedParasitics(const Pin *drvr_pin)
|
||||
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
|
||||
|
||||
@@ -193,6 +193,8 @@ public:
|
||||
const Corner *corner,
|
||||
const MinMax *cnst_min_max,
|
||||
const ParasiticAnalysisPt *ap);
|
||||
void deleteReducedParasitics(const Net *net,
|
||||
const ParasiticAnalysisPt *ap);
|
||||
virtual void deleteDrvrReducedParasitics(const Pin *drvr_pin);
|
||||
|
||||
protected:
|
||||
@@ -201,6 +203,8 @@ protected:
|
||||
Parasitic *ensureRspf(const Pin *drvr_pin);
|
||||
void makeAnalysisPtAfter();
|
||||
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
|
||||
// and transition.
|
||||
|
||||
@@ -448,9 +448,11 @@ SpefReader::dspfBegin(Net *net,
|
||||
if (increment_
|
||||
&& parasitics_->findParasiticNetwork(net, ap_))
|
||||
parasitic_ = nullptr;
|
||||
else
|
||||
else {
|
||||
parasitics_->deleteReducedParasitics(net, ap_);
|
||||
parasitic_ = parasitics_->makeParasiticNetwork(net, pin_cap_included_,
|
||||
ap_);
|
||||
ap_);
|
||||
}
|
||||
net_ = net;
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user