37#define NAN_INVALID "0"
39#define IBIS_MAX_VERSION 7.0
40#define IBIS_MAX_LINE_LENGTH 2048
98 bool virtual Check() {
return false; };
134 bool Check()
override;
163 bool Check()
override;
178 bool Check()
override;
198 bool Check()
override;
223 bool Check()
override;
298 bool Check()
override;
323 bool Check()
override;
352 bool Check()
override;
377 std::string
Spice(
int aN,
const std::string& aPort1,
const std::string& aPort2,
bool aNegateI,
378 const std::string& aModelName,
IBIS_CORNER aCorner )
const;
460 bool Check()
override;
477 bool Check()
override;
614 bool Check()
override;
662 bool Check()
override;
687 bool Check()
override;
788 bool ParseFile(
const std::string& aFileName );
866 bool parseDouble(
double& aDest, std::string& aStr,
bool aAllowModifiers =
false );
898 bool readWord( std::string& aDest );
916 bool storeString( std::string& aDest,
bool aMultiline );
Store all of the related component information found in a netlist.
void Report(const std::string &aMsg, SEVERITY aSeverity=RPT_SEVERITY_INFO) const
Print a message.
IBIS_BASE(REPORTER *aReporter)
static std::string doubleToString(double aNumber)
Convert a double to string using scientific notation.
std::vector< double > m_data
IBIS_MATRIX(REPORTER *aReporter)
bool Check() override
Check if the data held by the object is valid.
IBIS_SECTION(REPORTER *aReporter)
IVtableEntry(REPORTER *aReporter)
bool Check() override
Check if the data held by the object is valid.
double InterpolatedI(double aV, IBIS_CORNER aCorner) const
Interpolate the IV table.
std::string Spice(int aN, const std::string &aPort1, const std::string &aPort2, bool aNegateI, const std::string &aModelName, IBIS_CORNER aCorner) const
Interpolate the IV table.
std::vector< IVtableEntry > m_entries
IVtable(REPORTER *aReporter)
bool Check() override
Check if the data held by the object is valid.
IbisComponentPackage(REPORTER *aReporter)
std::string m_GNDClampRef
IbisComponentPinMapping(REPORTER *aReporter)
virtual ~IbisComponentPinMapping()
std::string m_POWERClampRef
bool Check() override
Check if the data held by the object is valid.
virtual ~IbisComponentPin()
IbisComponentPin(REPORTER *aReporter)
std::string m_manufacturer
std::string m_packageModel
std::vector< IbisComponentPinMapping > m_pinMappings
IbisComponentPackage m_package
std::string m_dieSupplyPads
bool Check() override
Check if the data held by the object is valid.
IbisComponent(REPORTER *aReporter)
std::vector< IbisComponentPin > m_pins
IbisDiffPinEntry(REPORTER *aReporter)
virtual ~IbisDiffPinEntry()
IbisDiffPin(REPORTER *aReporter)
std::vector< IbisDiffPinEntry > m_entries
std::vector< IbisComponent > m_components
std::map< std::string, IbisSubmodel > m_submodels
std::vector< IbisPackageModel > m_packageModels
std::vector< IbisModel > m_models
IbisFile(REPORTER *aReporter)
std::vector< IbisModelSelector > m_modelSelectors
std::string m_modelDescription
virtual ~IbisModelSelector()
bool Check() override
Check if the data held by the object is valid.
std::vector< IbisModelSelectorEntry > m_models
IbisModelSelector(REPORTER *aReporter)
TypMinMaxValue m_C_comp_pullup
TypMinMaxValue m_C_comp_power_clamp
TypMinMaxValue m_pullupReference
TypMinMaxValue m_C_comp_pulldown
TypMinMaxValue m_C_comp_gnd_clamp
bool Check() override
Check if the data held by the object is valid.
std::vector< IbisSubmodelMode > m_submodels
std::vector< IbisWaveform * > m_risingWaveforms
TypMinMaxValue m_POWERClampReference
IbisModel(REPORTER *aReporter)
IVtable m_compositeCurrent
IBIS_MODEL_POLARITY m_polarity
IBIS_MODEL_ENABLE m_enable
TypMinMaxValue m_temperatureRange
std::vector< IbisWaveform * > m_fallingWaveforms
TypMinMaxValue m_pulldownReference
TypMinMaxValue m_GNDClampReference
TypMinMaxValue m_voltageRange
std::map< std::string, int > m_pins
std::shared_ptr< IBIS_MATRIX > m_resistanceMatrix
IbisPackageModel(REPORTER *aReporter)
std::shared_ptr< IBIS_MATRIX > m_inductanceMatrix
virtual ~IbisPackageModel()
bool Check() override
Check if the data held by the object is valid.
std::string m_description
std::shared_ptr< IBIS_MATRIX > m_capacitanceMatrix
std::string m_manufacturer
bool parseSubmodel(std::string &aKeyword)
Parse a single keyword in the submodel context.
std::vector< char > m_buffer
bool readAlgorithmicModel()
bool readMatrixBandedOrFull()
IBIS_PARSER_CONTINUE m_continue
bool changeCommentChar()
Ibis can change the character used for comments.
bool getNextLine()
Load the next line.
bool parseComponent(std::string &aKeyword)
Parse a single keyword in the component context.
bool parseModel(std::string &aKeyword)
Parse a single keyword in the model context.
VTtable * m_currentVTtable
bool readMatrixBandwidth()
bool parsePackageModelModelData(std::string &aKeyword)
Parse a single keyword in the package model model data context.
bool isLineEmptyFromCursor()
void printLine()
Print the current line.
bool changeContext(std::string &aKeyword)
bool parseDouble(double &aDest, std::string &aStr, bool aAllowModifiers=false)
Parse a double according to the ibis standard.
bool onNewLine()
Parse the current line.
bool readWord(std::string &aDest)
bool readTypMinMaxValue(TypMinMaxValue &aDest)
bool compareIbisWord(const std::string &a, const std::string &b)
compare two strings without being case sensitive
bool readDvdt(dvdt &aDest)
IbisComponent * m_currentComponent
std::shared_ptr< IBIS_MATRIX > m_currentMatrix
IbisSubmodel * m_currentSubmodel
bool ParseFile(const std::string &aFileName)
Parse a file.
bool readMatrixType(std::shared_ptr< IBIS_MATRIX > &aDest)
std::string * m_continuingString
IbisModel * m_currentModel
IbisParser(REPORTER *aReporter)
bool parseDvdt(dvdt &aDest, std::string &aStr)
Parse a dV/dt value according to the ibis standard.
IbisPackageModel * m_currentPackageModel
bool readDouble(double &aDest)
IbisModelSelector * m_currentModelSelector
bool parsePackageModel(std::string &aKeyword)
Parse a single keyword in the package model context.
bool readString(std::string &aDest)
bool readTypMinMaxValueSubparam(const std::string &aSubparam, TypMinMaxValue &aDest)
bool parseAlgorithmicModel(std::string &aKeyword)
Parse a single keyword in the algorithmic model context.
bool readNumericSubparam(const std::string &aSubparam, double &aDest)
bool readMatrixPinIndex(int &aDest)
IBIS_PARSER_CONTEXT m_context
IVtable * m_currentIVtable
bool readIVtableEntry(IVtable &aTable)
bool readVTtableEntry(VTtable &aTable)
bool parseModelSelector(std::string &aKeyword)
Parse a single keyword in the model selector context.
bool readReceiverThresholds()
bool storeString(std::string &aDest, bool aMultiline)
bool readPackageModelPins()
bool readRampdvdt(dvdtTypMinMax &aDest)
bool readTableLine(std::vector< std::string > &aDest)
bool parseHeader(std::string &aKeyword)
Parse a single keyword in the header context.
bool readWaveform(IbisWaveform *aDest, IBIS_WAVEFORM_TYPE aType)
IbisWaveform * m_currentWaveform
IbisRamp(REPORTER *aReporter)
bool Check() override
Check if the data held by the object is valid.
IBIS_SUBMODEL_MODE m_mode
IbisSubmodelMode(std::string name, IBIS_SUBMODEL_MODE mode)
std::vector< IbisWaveform * > m_fallingWaveforms
TypMinMaxValue m_VtriggerR
std::vector< IbisWaveform * > m_risingWaveforms
bool Check() override
Check if the data held by the object is valid.
IbisSubmodel(REPORTER *aReporter)
IBIS_SUBMODEL_TYPE m_type
TypMinMaxValue m_offDelay
TypMinMaxValue m_VtriggerF
A pure virtual class used to derive REPORTER objects from.
TypMinMaxValue(REPORTER *aReporter)
bool Check() override
Check if the data held by the object is valid.
void Add(const TypMinMaxValue &aValue)
VTtableEntry(REPORTER *aReporter)
VTtable(REPORTER *aReporter)
std::vector< VTtableEntry > m_entries
bool Check() override
Check if the data held by the object is valid.
dvdtTypMinMax(REPORTER *aReporter)
@ COMPONENT_DIESUPPLYPADS