parasitics const

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2023-09-23 15:12:13 -07:00
parent cab41188a0
commit 51185d8bbe
8 changed files with 27 additions and 26 deletions

View File

@ -103,7 +103,7 @@ public:
const ParasiticAnalysisPt *ap); const ParasiticAnalysisPt *ap);
virtual ParasiticDeviceIterator *deviceIterator(Parasitic *) { return nullptr; } virtual ParasiticDeviceIterator *deviceIterator(Parasitic *) { return nullptr; }
virtual ParasiticNodeIterator *nodeIterator(Parasitic *) { return nullptr; } virtual ParasiticNodeIterator *nodeIterator(Parasitic *) { return nullptr; }
virtual bool includesPinCaps(Parasitic *parasitic) const; virtual bool includesPinCaps(const Parasitic *parasitic) const;
virtual void deleteParasiticNetwork(const Net *net, virtual void deleteParasiticNetwork(const Net *net,
const ParasiticAnalysisPt *ap); const ParasiticAnalysisPt *ap);
virtual void deleteParasiticNetworks(const Net *net); virtual void deleteParasiticNetworks(const Net *net);
@ -132,7 +132,7 @@ public:
virtual const char *name(const ParasiticNode *node); virtual const char *name(const ParasiticNode *node);
virtual const Pin *connectionPin(const ParasiticNode *node) const; virtual const Pin *connectionPin(const ParasiticNode *node) const;
virtual ParasiticNode *findNode(Parasitic *parasitic, virtual ParasiticNode *findNode(const Parasitic *parasitic,
const Pin *pin) const; const Pin *pin) const;
virtual float nodeGndCap(const ParasiticNode *node, virtual float nodeGndCap(const ParasiticNode *node,
const ParasiticAnalysisPt *ap) const; const ParasiticAnalysisPt *ap) const;

View File

@ -160,7 +160,7 @@ public:
const ParasiticAnalysisPt *ap) = 0; const ParasiticAnalysisPt *ap) = 0;
virtual void deleteParasiticNetworks(const Net *net) = 0; virtual void deleteParasiticNetworks(const Net *net) = 0;
// True if the parasitic network caps include pin capacitances. // True if the parasitic network caps include pin capacitances.
virtual bool includesPinCaps(Parasitic *parasitic) const = 0; virtual bool includesPinCaps(const Parasitic *parasitic) const = 0;
// Parasitic network component builders. // Parasitic network component builders.
// Make a subnode of the parasitic network net. // Make a subnode of the parasitic network net.
virtual ParasiticNode *ensureParasiticNode(Parasitic *parasitic, virtual ParasiticNode *ensureParasiticNode(Parasitic *parasitic,
@ -207,7 +207,7 @@ public:
virtual const char *name(const ParasiticNode *node) = 0; virtual const char *name(const ParasiticNode *node) = 0;
virtual const Pin *connectionPin(const ParasiticNode *node) const = 0; virtual const Pin *connectionPin(const ParasiticNode *node) const = 0;
// Find the parasitic node connected to pin. // Find the parasitic node connected to pin.
virtual ParasiticNode *findNode(Parasitic *parasitic, virtual ParasiticNode *findNode(const Parasitic *parasitic,
const Pin *pin) const = 0; const Pin *pin) const = 0;
// Node capacitance to ground. // Node capacitance to ground.
virtual float nodeGndCap(const ParasiticNode *node, virtual float nodeGndCap(const ParasiticNode *node,

View File

@ -771,7 +771,7 @@ ConcreteParasiticNetwork::ensureParasiticNode(const Net *net,
} }
ConcreteParasiticNode * ConcreteParasiticNode *
ConcreteParasiticNetwork::findNode(const Pin *pin) ConcreteParasiticNetwork::findNode(const Pin *pin) const
{ {
return pin_nodes_.findKey(pin); return pin_nodes_.findKey(pin);
} }
@ -1373,10 +1373,10 @@ ConcreteParasitics::deleteParasiticNetworks(const Net *net)
} }
bool bool
ConcreteParasitics::includesPinCaps(Parasitic *parasitic) const ConcreteParasitics::includesPinCaps(const Parasitic *parasitic) const
{ {
ConcreteParasiticNetwork *cparasitic = const ConcreteParasiticNetwork *cparasitic =
static_cast<ConcreteParasiticNetwork*>(parasitic); static_cast<const ConcreteParasiticNetwork*>(parasitic);
return cparasitic->includesPinCaps(); return cparasitic->includesPinCaps();
} }
@ -1513,11 +1513,11 @@ ConcreteParasitics::connectionPin(const ParasiticNode *node) const
} }
ParasiticNode * ParasiticNode *
ConcreteParasitics::findNode(Parasitic *parasitic, ConcreteParasitics::findNode(const Parasitic *parasitic,
const Pin *pin) const const Pin *pin) const
{ {
ConcreteParasiticNetwork *cparasitic = const ConcreteParasiticNetwork *cparasitic =
static_cast<ConcreteParasiticNetwork*>(parasitic); static_cast<const ConcreteParasiticNetwork*>(parasitic);
return cparasitic->findNode(pin); return cparasitic->findNode(pin);
} }

View File

@ -119,7 +119,7 @@ public:
virtual void deleteParasiticNetwork(const Net *net, virtual void deleteParasiticNetwork(const Net *net,
const ParasiticAnalysisPt *ap); const ParasiticAnalysisPt *ap);
virtual void deleteParasiticNetworks(const Net *net); virtual void deleteParasiticNetworks(const Net *net);
virtual bool includesPinCaps(Parasitic *parasitic) const; virtual bool includesPinCaps(const Parasitic *parasitic) const;
virtual ParasiticNode *ensureParasiticNode(Parasitic *parasitic, virtual ParasiticNode *ensureParasiticNode(Parasitic *parasitic,
const Net *net, const Net *net,
int id); int id);
@ -147,7 +147,8 @@ public:
virtual const char *name(const ParasiticNode *node); virtual const char *name(const ParasiticNode *node);
virtual const Pin *connectionPin(const ParasiticNode *node) const; virtual const Pin *connectionPin(const ParasiticNode *node) const;
virtual ParasiticNode *findNode(Parasitic *parasitic, const Pin *pin) const; virtual ParasiticNode *findNode(const Parasitic *parasitic,
const Pin *pin) const;
virtual float nodeGndCap(const ParasiticNode *node, virtual float nodeGndCap(const ParasiticNode *node,
const ParasiticAnalysisPt *ap) const; const ParasiticAnalysisPt *ap) const;
virtual ParasiticDeviceIterator * virtual ParasiticDeviceIterator *

View File

@ -407,7 +407,7 @@ public:
bool includesPinCaps() const { return includes_pin_caps_; } bool includesPinCaps() const { return includes_pin_caps_; }
ConcreteParasiticNode *ensureParasiticNode(const Net *net, ConcreteParasiticNode *ensureParasiticNode(const Net *net,
int id); int id);
ConcreteParasiticNode *findNode(const Pin *pin); ConcreteParasiticNode *findNode(const Pin *pin) const;
ConcreteParasiticNode *ensureParasiticNode(const Pin *pin); ConcreteParasiticNode *ensureParasiticNode(const Pin *pin);
virtual float capacitance() const; virtual float capacitance() const;
ConcreteParasiticPinNodeMap *pinNodes() { return &pin_nodes_; } ConcreteParasiticPinNodeMap *pinNodes() { return &pin_nodes_; }

View File

@ -240,7 +240,7 @@ NullParasitics::makeParasiticNetwork(const Net *,
} }
bool bool
NullParasitics::includesPinCaps(Parasitic *) const NullParasitics::includesPinCaps(const Parasitic *) const
{ {
return false; return false;
} }
@ -327,7 +327,7 @@ NullParasitics::connectionPin(const ParasiticNode *) const
} }
ParasiticNode * ParasiticNode *
NullParasitics::findNode(Parasitic *, NullParasitics::findNode(const Parasitic *,
const Pin *) const const Pin *) const
{ {
return nullptr; return nullptr;

View File

@ -280,7 +280,7 @@ class ReduceToPiElmore : public ReduceToPi
{ {
public: public:
ReduceToPiElmore(StaState *sta); ReduceToPiElmore(StaState *sta);
void makePiElmore(Parasitic *parasitic_network, void makePiElmore(const Parasitic *parasitic_network,
const Pin *drvr_pin, const Pin *drvr_pin,
ParasiticNode *drvr_node, ParasiticNode *drvr_node,
float coupling_cap_factor, float coupling_cap_factor,
@ -298,7 +298,7 @@ public:
}; };
void void
reduceToPiElmore(Parasitic *parasitic_network, reduceToPiElmore(const Parasitic *parasitic_network,
const Pin *drvr_pin, const Pin *drvr_pin,
float coupling_cap_factor, float coupling_cap_factor,
const OperatingConditions *op_cond, const OperatingConditions *op_cond,
@ -332,7 +332,7 @@ ReduceToPiElmore::ReduceToPiElmore(StaState *sta) :
} }
void void
ReduceToPiElmore::makePiElmore(Parasitic *parasitic_network, ReduceToPiElmore::makePiElmore(const Parasitic *parasitic_network,
const Pin *drvr_pin, const Pin *drvr_pin,
ParasiticNode *drvr_node, ParasiticNode *drvr_node,
float coupling_cap_factor, float coupling_cap_factor,
@ -400,12 +400,12 @@ class ReduceToPiPoleResidue2 : public ReduceToPi
public: public:
ReduceToPiPoleResidue2(StaState *sta); ReduceToPiPoleResidue2(StaState *sta);
~ReduceToPiPoleResidue2(); ~ReduceToPiPoleResidue2();
void findPolesResidues(Parasitic *parasitic_network, void findPolesResidues(const Parasitic *parasitic_network,
Parasitic *pi_pole_residue, Parasitic *pi_pole_residue,
const Pin *drvr_pin, const Pin *drvr_pin,
ParasiticNode *drvr_node, ParasiticNode *drvr_node,
const ParasiticAnalysisPt *ap); const ParasiticAnalysisPt *ap);
void makePiPoleResidue2(Parasitic *parasitic_network, void makePiPoleResidue2(const Parasitic *parasitic_network,
const Pin *drvr_pin, const Pin *drvr_pin,
ParasiticNode *drvr_node, ParasiticNode *drvr_node,
float coupling_cap_factor, float coupling_cap_factor,
@ -466,7 +466,7 @@ ReduceToPiPoleResidue2::ReduceToPiPoleResidue2(StaState *sta) :
// Three Moments of the Impulse Response", Proceedings of the 33rd // Three Moments of the Impulse Response", Proceedings of the 33rd
// Design Automation Conference, 1996, pg 611-616. // Design Automation Conference, 1996, pg 611-616.
void void
reduceToPiPoleResidue2(Parasitic *parasitic_network, reduceToPiPoleResidue2(const Parasitic *parasitic_network,
const Pin *drvr_pin, const Pin *drvr_pin,
float coupling_cap_factor, float coupling_cap_factor,
const OperatingConditions *op_cond, const OperatingConditions *op_cond,
@ -494,7 +494,7 @@ reduceToPiPoleResidue2(Parasitic *parasitic_network,
} }
void void
ReduceToPiPoleResidue2::makePiPoleResidue2(Parasitic *parasitic_network, ReduceToPiPoleResidue2::makePiPoleResidue2(const Parasitic *parasitic_network,
const Pin *drvr_pin, const Pin *drvr_pin,
ParasiticNode *drvr_node, ParasiticNode *drvr_node,
float coupling_cap_factor, float coupling_cap_factor,
@ -524,7 +524,7 @@ ReduceToPiPoleResidue2::~ReduceToPiPoleResidue2()
} }
void void
ReduceToPiPoleResidue2::findPolesResidues(Parasitic *parasitic_network, ReduceToPiPoleResidue2::findPolesResidues(const Parasitic *parasitic_network,
Parasitic *pi_pole_residue, Parasitic *pi_pole_residue,
const Pin *drvr_pin, const Pin *drvr_pin,
ParasiticNode *drvr_node, ParasiticNode *drvr_node,

View File

@ -28,7 +28,7 @@ class StaState;
// Reduce parasitic network to pi elmore model for drvr_pin. // Reduce parasitic network to pi elmore model for drvr_pin.
void void
reduceToPiElmore(Parasitic *parasitic_network, reduceToPiElmore(const Parasitic *parasitic_network,
const Pin *drvr_pin, const Pin *drvr_pin,
float coupling_cap_factor, float coupling_cap_factor,
const OperatingConditions *op_cond, const OperatingConditions *op_cond,
@ -40,7 +40,7 @@ reduceToPiElmore(Parasitic *parasitic_network,
// Reduce parasitic network to pi and 2nd order pole/residue models // Reduce parasitic network to pi and 2nd order pole/residue models
// for drvr_pin. // for drvr_pin.
void void
reduceToPiPoleResidue2(Parasitic *parasitic_network, reduceToPiPoleResidue2(const Parasitic *parasitic_network,
const Pin *drvr_pin, const Pin *drvr_pin,
float coupling_cap_factor, float coupling_cap_factor,
const OperatingConditions *op_cond, const OperatingConditions *op_cond,