diff --git a/eeschema/sim/sim_model_kibis.cpp b/eeschema/sim/sim_model_kibis.cpp index 27c836f952..5ed3f44f73 100644 --- a/eeschema/sim/sim_model_kibis.cpp +++ b/eeschema/sim/sim_model_kibis.cpp @@ -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" ) { diff --git a/eeschema/sim/sim_model_r_pot.cpp b/eeschema/sim/sim_model_r_pot.cpp index f7aac45358..bb0f9c2f9d 100644 --- a/eeschema/sim/sim_model_r_pot.cpp +++ b/eeschema/sim/sim_model_r_pot.cpp @@ -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 != "" ) { diff --git a/eeschema/sim/sim_model_tline.cpp b/eeschema/sim/sim_model_tline.cpp index 57d78b9506..ee14676c91 100644 --- a/eeschema/sim/sim_model_tline.cpp +++ b/eeschema/sim/sim_model_tline.cpp @@ -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 "";