IBIS: add stub for Model Spec; support empty strings in line with keywords.

This commit is contained in:
Alex Shvartzkop 2023-11-29 00:24:01 +03:00
parent f84bab00b4
commit 08e6e0258f
2 changed files with 21 additions and 2 deletions

View File

@ -1135,8 +1135,8 @@ bool IbisParser::readString( std::string& aDest )
if( len < 1 )
{
Report( _( "Unable to read string, input is empty." ), RPT_SEVERITY_ERROR );
return false;
// The data is likely on the next line. Skip.
return true;
}
char c = aDest[len - 1];
@ -1436,6 +1436,20 @@ bool IbisParser::readRamp()
}
bool IbisParser::readModelSpec()
{
bool status = true;
m_continue = IBIS_PARSER_CONTINUE::MODEL_SPEC;
// TODO
// readTypMinMaxValueSubparam( std::string( "Vmeas" ), m_currentModel->... )
// ...
return status;
}
bool IbisParser::parseModel( std::string& aKeyword )
{
bool status = false;
@ -1458,6 +1472,8 @@ bool IbisParser::parseModel( std::string& aKeyword )
status = readWaveform( nullptr, IBIS_WAVEFORM_TYPE::FALLING );
else if( compareIbisWord( aKeyword.c_str(), "Ramp" ) )
status = readRamp();
else if( compareIbisWord( aKeyword.c_str(), "Model_Spec" ) )
status = readModelSpec();
else if( compareIbisWord( aKeyword.c_str(), "Pullup_Reference" ) )
status = readTypMinMaxValue( m_currentModel->m_pullupReference );
else if( compareIbisWord( aKeyword.c_str(), "Pulldown_Reference" ) )
@ -2577,6 +2593,7 @@ bool IbisParser::onNewLine()
status &= readWaveform( m_currentWaveform, m_currentWaveform->m_type );
break;
case IBIS_PARSER_CONTINUE::RAMP: status &= readRamp(); break;
case IBIS_PARSER_CONTINUE::MODEL_SPEC: status &= readModelSpec(); break;
case IBIS_PARSER_CONTINUE::PACKAGEMODEL_PINS: status &= readPackageModelPins(); break;
case IBIS_PARSER_CONTINUE::MATRIX: status &= readMatrix( m_currentMatrix ); break;
case IBIS_PARSER_CONTINUE::NONE:

View File

@ -631,6 +631,7 @@ enum class IBIS_PARSER_CONTINUE
MATRIX,
MODELSELECTOR,
MODEL,
MODEL_SPEC,
IV_TABLE,
VT_TABLE,
RAMP,
@ -771,6 +772,7 @@ private:
bool readMatrixSparse( std::string, IBIS_MATRIX_SPARSE& aDest );
bool readRampdvdt( dvdtTypMinMax& aDest );
bool readRamp();
bool readModelSpec();
bool readWaveform( IbisWaveform* aDest, IBIS_WAVEFORM_TYPE aType );
bool readString( std::string& aDest );
bool storeString( std::string& aDest, bool aMultiline );