sim - Check FindParam() results before using them

This commit is contained in:
Fabien Corona 2023-02-18 12:54:55 +01:00
parent f5902dad28
commit 5482bc2905
3 changed files with 35 additions and 13 deletions

View File

@ -110,10 +110,18 @@ std::string SPICE_GENERATOR_KIBIS::IbisDevice( const SPICE_ITEM& aItem, const PR
KIBIS_PARAMETER kparams;
kparams.SetCornerFromString( kparams.m_supply, m_model.FindParam( "vcc" )->value->ToString() );
kparams.SetCornerFromString( kparams.m_Rpin, m_model.FindParam( "rpin" )->value->ToString() );
if ( m_model.FindParam( "vcc" ) )
kparams.SetCornerFromString( kparams.m_supply, m_model.FindParam( "vcc" )->value->ToString() );
if ( m_model.FindParam( "rpin" ) )
kparams.SetCornerFromString( kparams.m_Rpin, m_model.FindParam( "rpin" )->value->ToString() );
if ( m_model.FindParam( "lpin" ) )
kparams.SetCornerFromString( kparams.m_Lpin, m_model.FindParam( "lpin" )->value->ToString() );
if ( m_model.FindParam( "cpin" ) )
kparams.SetCornerFromString( kparams.m_Cpin, m_model.FindParam( "cpin" )->value->ToString() );
//kparams.SetCornerFromString( kparams.m_Ccomp, FindParam( "ccomp" )->value->ToString() );
std::string result;
@ -129,7 +137,10 @@ std::string SPICE_GENERATOR_KIBIS::IbisDevice( const SPICE_ITEM& aItem, const PR
case SIM_MODEL::TYPE::KIBIS_DRIVER_DC:
{
std::string paramValue = m_model.FindParam( "dc" )->value->ToString();
std::string paramValue = "";
if ( m_model.FindParam( "dc" ) )
paramValue = m_model.FindParam( "dc" )->value->ToString();
if( paramValue == "hi-Z" )
{

View File

@ -28,8 +28,14 @@
std::string SPICE_GENERATOR_R_POT::ModelLine( const SPICE_ITEM& aItem ) const
{
std::string r = m_model.FindParam( "r" )->value->ToSpiceString();
std::string position = m_model.FindParam( "pos" )->value->ToSpiceString();
std::string r = "0";
std::string position = "";
if ( m_model.FindParam( "r" ) )
r = m_model.FindParam( "r" )->value->ToSpiceString();
if ( m_model.FindParam( "pos" ) )
position = m_model.FindParam( "pos" )->value->ToSpiceString();
if( position != "" )
{

View File

@ -31,7 +31,7 @@ using PARAM = SIM_MODEL::PARAM;
std::string SPICE_GENERATOR_TLINE::ModelLine( const SPICE_ITEM& aItem ) const
{
std::string r, l, g, c, len;
std::string r="0" , l="0", g="0", c="0", len="1";
switch( m_model.GetType() )
{
@ -50,15 +50,20 @@ std::string SPICE_GENERATOR_TLINE::ModelLine( const SPICE_ITEM& aItem ) const
len = SIM_VALUE_FLOAT( 1 ).ToSpiceString();
break;
}
case SIM_MODEL::TYPE::TLINE_RLGC:
r = m_model.FindParam( "r" )->value->ToSpiceString();
l = m_model.FindParam( "l" )->value->ToSpiceString();
g = m_model.FindParam( "g" )->value->ToSpiceString();
c = m_model.FindParam( "c" )->value->ToSpiceString();
len = m_model.FindParam( "len" )->value->ToSpiceString();
{
if( m_model.FindParam( "r" ) )
r = m_model.FindParam( "r" )->value->ToSpiceString();
if( m_model.FindParam( "l" ) )
l = m_model.FindParam( "l" )->value->ToSpiceString();
if( m_model.FindParam( "g" ) )
g = m_model.FindParam( "g" )->value->ToSpiceString();
if( m_model.FindParam( "c" ) )
c = m_model.FindParam( "c" )->value->ToSpiceString();
if( m_model.FindParam( "len" ) )
len = m_model.FindParam( "len" )->value->ToSpiceString();
break;
}
default:
wxFAIL_MSG( "Unhandled SIM_MODEL type in SIM_MODEL_TLINE" );
return "";