30 switch(
m_model.GetTypeInfo().deviceType )
32 case SIM_MODEL::DEVICE_T::NPN:
33 case SIM_MODEL::DEVICE_T::PNP:
34 return { fmt::format(
"I({}:c)",
ItemName( aItem ) ),
35 fmt::format(
"I({}:b)",
ItemName( aItem ) ),
36 fmt::format(
"I({}:e)",
ItemName( aItem ) ) };
38 case SIM_MODEL::DEVICE_T::NJFET:
39 case SIM_MODEL::DEVICE_T::PJFET:
40 case SIM_MODEL::DEVICE_T::NMES:
41 case SIM_MODEL::DEVICE_T::PMES:
42 case SIM_MODEL::DEVICE_T::NMOS:
43 case SIM_MODEL::DEVICE_T::PMOS:
44 return { fmt::format(
"I({}:d)",
ItemName( aItem ) ),
45 fmt::format(
"I({}:g)",
ItemName( aItem ) ),
46 fmt::format(
"I({}:s)",
ItemName( aItem ) ) };
48 case SIM_MODEL::DEVICE_T::R:
49 case SIM_MODEL::DEVICE_T::C:
50 case SIM_MODEL::DEVICE_T::L:
51 case SIM_MODEL::DEVICE_T::D:
108 const std::string& aValue,
113 if( boost::iequals( aParamName,
"level" ) || boost::iequals( aParamName,
"version" ) )
126 if( param.
Matches( aParamName ) )
141 if( !param.
info.
name.ends_with(
'_' ) )
144 if( param.
Matches( aParamName +
"_" ) )
158 if( ngspiceParamInfo.Matches( aParamName ) )
166 if( paramInfo.category == PARAM::CATEGORY::SUPERFLUOUS )
169 if( paramInfo.id == ngspiceParamInfo.id )
181 THROW_IO_ERROR( wxString::Format(
"Unknown simulation model parameter '%s'", aParamName ) );
188 if( boost::iequals( aParamName,
"mfg" ) || boost::iequals( aParamName,
"type" ) )
193 if( boost::iequals( aParamName,
"perim" )
194 || boost::iequals( aParamName,
"isw" )
195 || boost::iequals( aParamName,
"ns" )
196 || boost::iequals( aParamName,
"rsw" )
197 || boost::iequals( aParamName,
"cjsw" )
198 || boost::iequals( aParamName,
"vjsw" )
199 || boost::iequals( aParamName,
"mjsw" )
200 || boost::iequals( aParamName,
"fcs" ) )
209 if( boost::iequals( aParamName,
"icrating" ) || boost::iequals( aParamName,
"vceo" ) )
213 if(
GetType() == TYPE::NPN_GUMMELPOON ||
GetType() == TYPE::PNP_GUMMELPOON )
216 if( boost::iequals( aParamName,
"bvcbo" )
217 || boost::iequals( aParamName,
"nbvcbo" )
218 || boost::iequals( aParamName,
"tbvcbo1" )
219 || boost::iequals( aParamName,
"tbvcbo2" )
220 || boost::iequals( aParamName,
"bvbe" )
221 || boost::iequals( aParamName,
"ibvbe" )
222 || boost::iequals( aParamName,
"nbvbe" ) )
228 if(
GetType() == TYPE::NMOS_VDMOS ||
GetType() == TYPE::PMOS_VDMOS )
231 if( boost::iequals( aParamName,
"vds" )
232 || boost::iequals( aParamName,
"ron" )
233 || boost::iequals( aParamName,
"qg" ) )
253 case TYPE::NONE:
return MODEL_TYPE::NONE;
254 case TYPE::D:
return MODEL_TYPE::DIODE;
257 case TYPE::PNP_VBIC:
return MODEL_TYPE::VBIC;
258 case TYPE::NPN_GUMMELPOON:
259 case TYPE::PNP_GUMMELPOON:
return MODEL_TYPE::BJT;
260 case TYPE::NPN_HICUM2:
261 case TYPE::PNP_HICUM2:
return MODEL_TYPE::HICUM2;
263 case TYPE::NJFET_SHICHMANHODGES:
264 case TYPE::PJFET_SHICHMANHODGES:
return MODEL_TYPE::JFET;
265 case TYPE::NJFET_PARKERSKELLERN:
266 case TYPE::PJFET_PARKERSKELLERN:
return MODEL_TYPE::JFET2;
268 case TYPE::NMES_STATZ:
269 case TYPE::PMES_STATZ:
return MODEL_TYPE::MES;
270 case TYPE::NMES_YTTERDAL:
271 case TYPE::PMES_YTTERDAL:
return MODEL_TYPE::MESA;
272 case TYPE::NMES_HFET1:
273 case TYPE::PMES_HFET1:
return MODEL_TYPE::HFET1;
274 case TYPE::NMES_HFET2:
275 case TYPE::PMES_HFET2:
return MODEL_TYPE::HFET2;
277 case TYPE::NMOS_VDMOS:
278 case TYPE::PMOS_VDMOS:
return MODEL_TYPE::VDMOS;
279 case TYPE::NMOS_MOS1:
280 case TYPE::PMOS_MOS1:
return MODEL_TYPE::MOS1;
281 case TYPE::NMOS_MOS2:
282 case TYPE::PMOS_MOS2:
return MODEL_TYPE::MOS2;
283 case TYPE::NMOS_MOS3:
284 case TYPE::PMOS_MOS3:
return MODEL_TYPE::MOS3;
285 case TYPE::NMOS_BSIM1:
286 case TYPE::PMOS_BSIM1:
return MODEL_TYPE::BSIM1;
287 case TYPE::NMOS_BSIM2:
288 case TYPE::PMOS_BSIM2:
return MODEL_TYPE::BSIM2;
289 case TYPE::NMOS_MOS6:
290 case TYPE::PMOS_MOS6:
return MODEL_TYPE::MOS6;
291 case TYPE::NMOS_BSIM3:
292 case TYPE::PMOS_BSIM3:
return MODEL_TYPE::BSIM3;
293 case TYPE::NMOS_MOS9:
294 case TYPE::PMOS_MOS9:
return MODEL_TYPE::MOS9;
295 case TYPE::NMOS_B4SOI:
296 case TYPE::PMOS_B4SOI:
return MODEL_TYPE::B4SOI;
297 case TYPE::NMOS_BSIM4:
298 case TYPE::PMOS_BSIM4:
return MODEL_TYPE::BSIM4;
299 case TYPE::NMOS_B3SOIFD:
300 case TYPE::PMOS_B3SOIFD:
return MODEL_TYPE::B3SOIFD;
301 case TYPE::NMOS_B3SOIDD:
302 case TYPE::PMOS_B3SOIDD:
return MODEL_TYPE::B3SOIDD;
303 case TYPE::NMOS_B3SOIPD:
304 case TYPE::PMOS_B3SOIPD:
return MODEL_TYPE::B3SOIPD;
305 case TYPE::NMOS_HISIM2:
306 case TYPE::PMOS_HISIM2:
return MODEL_TYPE::HISIM2;
307 case TYPE::NMOS_HISIMHV1:
308 case TYPE::PMOS_HISIMHV1:
return MODEL_TYPE::HISIMHV1;
309 case TYPE::NMOS_HISIMHV2:
310 case TYPE::PMOS_HISIMHV2:
return MODEL_TYPE::HISIMHV2;
313 wxFAIL_MSG(
"Unhandled SIM_MODEL type in SIM_MODEL_NGSPICE" );
314 return MODEL_TYPE::NONE;