OpenSTA/parasitics/NullParasitics.cc

457 lines
7.3 KiB
C++
Raw Normal View History

2018-09-28 17:54:21 +02:00
// OpenSTA, Static Timing Analyzer
2020-03-07 03:50:37 +01:00
// Copyright (c) 2020, Parallax Software, Inc.
2018-09-28 17:54:21 +02:00
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
2020-04-05 23:53:44 +02:00
#include "NullParasitics.hh"
2018-09-28 17:54:21 +02:00
namespace sta {
NullParasitics::NullParasitics(StaState *sta) :
Parasitics(sta)
{
}
2019-04-19 03:01:10 +02:00
bool
NullParasitics::haveParasitics()
{
return false;
}
2018-09-28 17:54:21 +02:00
void
NullParasitics::clear()
{
}
void
NullParasitics::save()
{
}
void
NullParasitics::deleteParasitics()
{
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::deleteParasitics(const Net *,
const ParasiticAnalysisPt *)
2018-09-28 17:54:21 +02:00
{
}
void
NullParasitics::deleteParasitics(const Pin *, const ParasiticAnalysisPt *)
{
}
void
NullParasitics::deleteUnsavedParasitic(Parasitic *)
2018-09-28 17:54:21 +02:00
{
}
void
NullParasitics::deleteDrvrReducedParasitics(const Pin *)
2018-09-28 17:54:21 +02:00
{
}
float
NullParasitics::capacitance(Parasitic *) const
2018-09-28 17:54:21 +02:00
{
return 0.0;
2018-09-28 17:54:21 +02:00
}
Parasitic *
NullParasitics::findPiElmore(const Pin *,
2019-11-11 23:30:19 +01:00
const RiseFall *,
2018-09-28 17:54:21 +02:00
const ParasiticAnalysisPt *) const
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
Parasitic *
NullParasitics::makePiElmore(const Pin *,
2019-11-11 23:30:19 +01:00
const RiseFall *,
2018-09-28 17:54:21 +02:00
const ParasiticAnalysisPt *,
2018-11-26 18:15:52 +01:00
float,
float,
float)
2018-09-28 17:54:21 +02:00
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
bool
NullParasitics::isPiElmore(Parasitic *) const
{
return false;
}
bool
NullParasitics::isReducedParasiticNetwork(Parasitic *) const
{
return false;
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::setIsReducedParasiticNetwork(Parasitic *,
bool)
2018-09-28 17:54:21 +02:00
{
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::piModel(Parasitic *,
float &,
float &,
float &) const
2018-09-28 17:54:21 +02:00
{
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::setPiModel(Parasitic *,
float,
float,
float)
2018-09-28 17:54:21 +02:00
{
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::findElmore(Parasitic *,
const Pin *,
float &,
bool &) const
2018-09-28 17:54:21 +02:00
{
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::setElmore(Parasitic *,
const Pin *,
float)
2018-09-28 17:54:21 +02:00
{
}
bool
NullParasitics::isPiModel(Parasitic*) const
{
return false;
}
bool
NullParasitics::isPiPoleResidue(Parasitic* ) const
{
return false;
}
Parasitic *
NullParasitics::findPiPoleResidue(const Pin *,
2019-11-11 23:30:19 +01:00
const RiseFall *,
2018-09-28 17:54:21 +02:00
const ParasiticAnalysisPt *) const
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
Parasitic *
NullParasitics::makePiPoleResidue(const Pin *,
2019-11-11 23:30:19 +01:00
const RiseFall *,
2018-09-28 17:54:21 +02:00
const ParasiticAnalysisPt *,
2018-11-26 18:15:52 +01:00
float,
float,
float)
2018-09-28 17:54:21 +02:00
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
Parasitic *
NullParasitics::findPoleResidue(const Parasitic *,
const Pin *) const
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::setPoleResidue(Parasitic *,
const Pin *,
ComplexFloatSeq *,
ComplexFloatSeq *)
2018-09-28 17:54:21 +02:00
{
}
bool
NullParasitics::isPoleResidue(const Parasitic *) const
{
return false;
}
size_t
NullParasitics::poleResidueCount(const Parasitic *) const
{
return 0;
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::poleResidue(const Parasitic *,
int,
ComplexFloat &,
ComplexFloat &) const
2018-09-28 17:54:21 +02:00
{
}
bool
NullParasitics::isParasiticNetwork(Parasitic *) const
2018-09-28 17:54:21 +02:00
{
return false;
}
Parasitic *
NullParasitics::findParasiticNetwork(const Net *,
2018-09-28 17:54:21 +02:00
const ParasiticAnalysisPt *) const
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
Parasitic *
NullParasitics::findParasiticNetwork(const Pin *,
const ParasiticAnalysisPt *) const
2018-09-28 17:54:21 +02:00
{
return nullptr;
2018-09-28 17:54:21 +02:00
}
Parasitic *
NullParasitics::makeParasiticNetwork(const Net *,
2018-11-26 18:15:52 +01:00
bool,
const ParasiticAnalysisPt *)
2018-09-28 17:54:21 +02:00
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
2018-11-26 18:15:52 +01:00
bool
NullParasitics::includesPinCaps(Parasitic *) const
{
return false;
}
2018-09-28 17:54:21 +02:00
void
NullParasitics::deleteParasiticNetwork(const Net *,
const ParasiticAnalysisPt *)
{
}
ParasiticNode *
2018-11-26 18:15:52 +01:00
NullParasitics::ensureParasiticNode(Parasitic *,
2019-06-02 23:58:09 +02:00
const Net *,
2018-11-26 18:15:52 +01:00
int)
2018-09-28 17:54:21 +02:00
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
ParasiticNode *
2018-11-26 18:15:52 +01:00
NullParasitics::ensureParasiticNode(Parasitic *,
const Pin *)
2018-09-28 17:54:21 +02:00
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::incrCap(ParasiticNode *,
float,
2018-09-28 17:54:21 +02:00
const ParasiticAnalysisPt *)
{
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::makeCouplingCap(const char *,
ParasiticNode *,
ParasiticNode *,
float,
2018-09-28 17:54:21 +02:00
const ParasiticAnalysisPt *)
{
}
2018-11-26 18:15:52 +01:00
void NullParasitics::makeCouplingCap(const char *,
ParasiticNode *,
Net *,
int,
float,
const ParasiticAnalysisPt *)
2018-09-28 17:54:21 +02:00
{
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::makeCouplingCap(const char *,
ParasiticNode *,
Pin *,
float,
const ParasiticAnalysisPt *)
2018-09-28 17:54:21 +02:00
{
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::makeResistor(const char *,
ParasiticNode *,
ParasiticNode *,
float,
2018-09-28 17:54:21 +02:00
const ParasiticAnalysisPt *)
{
}
const char *
NullParasitics::name(const ParasiticNode *)
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
const Pin *
NullParasitics::connectionPin(const ParasiticNode *) const
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
ParasiticNode *
2018-11-26 18:15:52 +01:00
NullParasitics::findNode(Parasitic *,
const Pin *) const
2018-09-28 17:54:21 +02:00
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
float
NullParasitics::nodeGndCap(const ParasiticNode *,
const ParasiticAnalysisPt *) const
{
return 0.0;
}
ParasiticDeviceIterator *
NullParasitics::deviceIterator(ParasiticNode *) const
{
return 0;
}
bool
NullParasitics::isResistor(const ParasiticDevice *) const
{
return false;
}
bool
NullParasitics::isCouplingCap(const ParasiticDevice *) const
{
return false;
}
const char *
NullParasitics::name(const ParasiticDevice *) const
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
float
NullParasitics::value(const ParasiticDevice *,
const ParasiticAnalysisPt *) const
{
return 0.0;
}
2019-01-06 01:09:27 +01:00
ParasiticNode *
NullParasitics::node1(const ParasiticDevice *) const
{
2019-03-13 01:25:53 +01:00
return nullptr;
2019-01-06 01:09:27 +01:00
}
ParasiticNode *
NullParasitics::node2(const ParasiticDevice *) const
2019-01-04 01:14:15 +01:00
{
2019-03-13 01:25:53 +01:00
return nullptr;
2019-01-04 01:14:15 +01:00
}
2018-09-28 17:54:21 +02:00
ParasiticNode *
2018-11-26 18:15:52 +01:00
NullParasitics::otherNode(const ParasiticDevice *,
ParasiticNode *) const
2018-09-28 17:54:21 +02:00
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::reduceTo(Parasitic *,
const Net *,
2020-12-01 03:25:27 +01:00
ReducedParasiticType ,
2018-09-28 17:54:21 +02:00
const OperatingConditions *,
const Corner *,
const MinMax *,
const ParasiticAnalysisPt *)
{
}
void
2018-11-26 18:15:52 +01:00
NullParasitics::reduceToPiElmore(Parasitic *,
const Net *,
2018-09-28 17:54:21 +02:00
const OperatingConditions *,
const Corner *,
const MinMax *,
const ParasiticAnalysisPt *)
{
}
void
2018-09-28 17:54:21 +02:00
NullParasitics::reduceToPiElmore(Parasitic *,
const Pin *,
const OperatingConditions *,
const Corner *,
const MinMax *,
const ParasiticAnalysisPt *)
{
}
void
NullParasitics::reduceToPiPoleResidue2(Parasitic *, const Net *,
2018-11-26 18:15:52 +01:00
const OperatingConditions *,
2018-09-28 17:54:21 +02:00
const Corner *,
2018-11-26 18:15:52 +01:00
const MinMax *,
const ParasiticAnalysisPt *)
2018-09-28 17:54:21 +02:00
{
}
void
2018-09-28 17:54:21 +02:00
NullParasitics::reduceToPiPoleResidue2(Parasitic *,
const Pin *,
const OperatingConditions *,
const Corner *,
const MinMax *,
const ParasiticAnalysisPt *)
{
}
Parasitic *
NullParasitics::estimatePiElmore(const Pin *,
2019-11-11 23:30:19 +01:00
const RiseFall *,
2018-09-28 17:54:21 +02:00
const Wireload *,
float,
float,
const OperatingConditions *,
const Corner *,
const MinMax *,
const ParasiticAnalysisPt *)
{
2019-03-13 01:25:53 +01:00
return nullptr;
2018-09-28 17:54:21 +02:00
}
void
NullParasitics::disconnectPinBefore(const Pin *)
{
}
void
NullParasitics::loadPinCapacitanceChanged(const Pin *)
{
}
2018-09-28 17:54:21 +02:00
} // namespace