KiCad PCB EDA Suite
Loading...
Searching...
No Matches
sim_model.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2022 Mikolaj Wielgus
5 * Copyright (C) 2022 CERN
6 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 3
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, you may find one here:
20 * https://www.gnu.org/licenses/gpl-3.0.html
21 * or you may search the http://www.gnu.org website for the version 3 license,
22 * or you may write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 */
25
26#ifndef SIM_MODEL_H
27#define SIM_MODEL_H
28
29#include <wx/string.h>
30#include <map>
31#include <utility>
32
33#include <sch_field.h>
34#include <sch_pin.h>
35
36// Must be included after sch_field.h (exactly eda_shape.h) to avoid a colliding
37// declaration with a window header (under msys2)
38#include <sim/sim_value.h>
39#include <enum_vector.h>
40
41class SIM_LIBRARY;
42struct SPICE_ITEM;
43class SPICE_GENERATOR;
45class PROJECT;
46class REPORTER;
47
48
49#define SIM_REFERENCE_FIELD wxT( "Reference" )
50#define SIM_VALUE_FIELD wxT( "Value" )
51
52#define SIM_DEVICE_FIELD wxT( "Sim.Device" )
53#define SIM_DEVICE_SUBTYPE_FIELD wxT( "Sim.Type" )
54#define SIM_PINS_FIELD wxT( "Sim.Pins" )
55#define SIM_PARAMS_FIELD wxT( "Sim.Params" )
56#define SIM_LIBRARY_FIELD wxT( "Sim.Library" )
57#define SIM_NAME_FIELD wxT( "Sim.Name" )
58#define SIM_NODES_FORMAT_FIELD wxT( "Sim.NodesFormat" )
59
60#define SIM_LEGACY_ENABLE_FIELD_V7 wxT( "Sim.Enable" )
61#define SIM_LEGACY_PRIMITIVE_FIELD wxS( "Spice_Primitive" )
62#define SIM_LEGACY_MODEL_FIELD wxS( "Spice_Model" )
63#define SIM_LEGACY_PINS_FIELD wxS( "Spice_Node_Sequence" )
64#define SIM_LEGACY_ENABLE_FIELD wxS( "Spice_Netlist_Enabled" )
65#define SIM_LEGACY_LIBRARY_FIELD wxS( "Spice_Lib_File" )
66
67
69{
70 const std::string modelPinName;
72
73 static constexpr auto NOT_CONNECTED = -1;
74};
75
76
78{
79public:
80 friend class SPICE_GENERATOR;
82
83 struct PARAM;
84
85 // There's a trailing '_' because `DEVICE_TYPE` collides with something in Windows headers.
87 NONE,
88
89 R,
90 C,
91 L,
92 K,
93 TLINE,
94 SW,
95
96 D,
97 NPN,
98 PNP,
99
100 NJFET,
101 PJFET,
102
103 NMES,
104 PMES,
105
106 NMOS,
107 PMOS,
108
109 V,
110 I,
111 E,
112 F,
113 G,
114 H,
115
116 SUBCKT,
117 XSPICE,
118
119 KIBIS,
120
121 SPICE
122 )
123
124 struct DEVICE_INFO
125 {
126 std::string fieldValue;
127 std::string description;
128 bool showInMenu;
129 };
130
131
133 NONE,
134
135 R,
136 R_POT,
137 R_BEHAVIORAL,
138
139 C,
140 C_BEHAVIORAL,
141
142 L,
143 L_BEHAVIORAL,
144
145 K,
146
147 TLINE_Z0,
148 TLINE_RLGC,
149
150 SW_V,
151 SW_I,
152
153 D,
154
155 NPN_VBIC,
156 PNP_VBIC,
157 NPN_GUMMELPOON,
158 PNP_GUMMELPOON,
159 //NPN_MEXTRAM,
160 //PNP_MEXTRAM,
161 NPN_HICUM2,
162 PNP_HICUM2,
163 //NPN_HICUM_L0,
164 //PNP_HICUM_L0,
165
166 NJFET_SHICHMANHODGES,
167 PJFET_SHICHMANHODGES,
168
169 NJFET_PARKERSKELLERN,
170 PJFET_PARKERSKELLERN,
171
172
173 NMES_STATZ,
174 PMES_STATZ,
175
176 NMES_YTTERDAL,
177 PMES_YTTERDAL,
178
179 NMES_HFET1,
180 PMES_HFET1,
181
182 NMES_HFET2,
183 PMES_HFET2,
184
185
186 NMOS_VDMOS,
187 PMOS_VDMOS,
188
189 NMOS_MOS1,
190 PMOS_MOS1,
191
192 NMOS_MOS2,
193 PMOS_MOS2,
194
195 NMOS_MOS3,
196 PMOS_MOS3,
197
198 NMOS_BSIM1,
199 PMOS_BSIM1,
200
201 NMOS_BSIM2,
202 PMOS_BSIM2,
203
204 NMOS_MOS6,
205 PMOS_MOS6,
206
207 NMOS_MOS9,
208 PMOS_MOS9,
209
210 NMOS_BSIM3,
211 PMOS_BSIM3,
212
213 NMOS_B4SOI,
214 PMOS_B4SOI,
215
216 NMOS_BSIM4,
217 PMOS_BSIM4,
218
219 //NMOS_EKV2_6,
220 //PMOS_EKV2_6,
221
222 //NMOS_PSP,
223 //PMOS_PSP,
224
225 NMOS_B3SOIFD,
226 PMOS_B3SOIFD,
227
228 NMOS_B3SOIDD,
229 PMOS_B3SOIDD,
230
231 NMOS_B3SOIPD,
232 PMOS_B3SOIPD,
233
234 //NMOS_STAG,
235 //PMOS_STAG,
236
237 NMOS_HISIM2,
238 PMOS_HISIM2,
239
240 NMOS_HISIMHV1,
241 PMOS_HISIMHV1,
242
243 NMOS_HISIMHV2,
244 PMOS_HISIMHV2,
245
246
247 V,
248 V_SIN,
249 V_PULSE,
250 V_EXP,
251 V_AM,
252 V_SFFM,
253 V_VCL,
254 V_CCL,
255 V_PWL,
256 V_WHITENOISE,
257 V_PINKNOISE,
258 V_BURSTNOISE,
259 V_RANDUNIFORM,
260 V_RANDGAUSSIAN,
261 V_RANDEXP,
262 V_RANDPOISSON,
263 V_BEHAVIORAL,
264
265 I,
266 I_SIN,
267 I_PULSE,
268 I_EXP,
269 I_AM,
270 I_SFFM,
271 I_VCL,
272 I_CCL,
273 I_PWL,
274 I_WHITENOISE,
275 I_PINKNOISE,
276 I_BURSTNOISE,
277 I_RANDUNIFORM,
278 I_RANDGAUSSIAN,
279 I_RANDEXP,
280 I_RANDPOISSON,
281 I_BEHAVIORAL,
282
283 SUBCKT,
284 XSPICE,
285
286 KIBIS_DEVICE,
287 KIBIS_DRIVER_DC,
288 KIBIS_DRIVER_RECT,
289 KIBIS_DRIVER_PRBS,
290
291 RAWSPICE
292 )
293
294 struct INFO
295 {
296 DEVICE_T deviceType;
297 std::string fieldValue;
298 std::string description;
299 };
300
301
303 {
304 std::string itemType;
305 std::string modelType = "";
306 std::string functionName = "";
307 std::string level = "";
308 bool isDefaultLevel = false;
309 bool hasExpression = false;
310 std::string version = "";
311 };
312
313
314 struct PARAM
315 {
316 // MS Windows compilers complain about the names IN and OUT, so we prefix them.
323
342
343 struct INFO
344 {
345 INFO( const std::string& aName = "",
346 unsigned aId = 0,
347 DIR aDir = DIR_INOUT,
349 const std::string& aUnit = "",
350 CATEGORY aCategory = CATEGORY::PRINCIPAL,
351 const std::string& aDefaultValue = "",
352 const std::string& legacy_unused_value = "",
353 const std::string& aDescription = "",
354 bool aIsSpiceInstanceParam = false,
355 bool aIsInstanceParam = false,
356 const std::string& aSpiceModelName = "",
357 const std::string& aSpiceInstanceName = "",
358 std::vector<std::string> aEnumValues = {} ) :
359 name( aName ),
360 id( aId ),
361 dir( aDir ),
362 type( aType ),
363 unit( aUnit ),
364 category( aCategory ),
365 defaultValue( aDefaultValue ),
366 description( aDescription ),
367 isSpiceInstanceParam( aIsSpiceInstanceParam ),
368 isInstanceParam( aIsInstanceParam ),
369 spiceModelName( aSpiceModelName ),
370 spiceInstanceName( aSpiceInstanceName ),
371 enumValues( std::move( aEnumValues ) )
372 {}
373
374 bool Matches( const std::string& aName ) const;
375
376 std::string name;
377 unsigned id;
380 std::string unit;
382 std::string defaultValue;
383 std::string description;
386 std::string spiceModelName;
387 std::string spiceInstanceName;
388 std::vector<std::string> enumValues;
389 };
390
391 PARAM( const INFO& aInfo ) :
392 info( aInfo )
393 {}
394
395 bool Matches( const std::string& aName ) const
396 {
397 return info.Matches( aName );
398 }
399
400 std::string value;
401 const INFO& info;
402 };
403
404
405 static DEVICE_INFO DeviceInfo( DEVICE_T aDeviceType );
406 static INFO TypeInfo( TYPE aType );
407 static SPICE_INFO SpiceInfo( TYPE aType );
408
409
410 static TYPE ReadTypeFromFields( const std::vector<SCH_FIELD>& aFields,
411 bool aResolve, int aDepth, REPORTER& aReporter );
412
413 static std::unique_ptr<SIM_MODEL> Create( TYPE aType, const std::vector<SCH_PIN*>& aPins,
414 REPORTER& aReporter );
415
416 static std::unique_ptr<SIM_MODEL> Create( const SIM_MODEL* aBaseModel,
417 const std::vector<SCH_PIN*>& aPins,
418 REPORTER& aReporter );
419
420 static std::unique_ptr<SIM_MODEL> Create( const SIM_MODEL* aBaseModel,
421 const std::vector<SCH_PIN*>& aPins,
422 const std::vector<SCH_FIELD>& aFields,
423 bool aResolve, int aDepth,
424 REPORTER& aReporter );
425
426 static std::unique_ptr<SIM_MODEL> Create( const std::vector<SCH_FIELD>& aFields,
427 bool aResolve, int aDepth,
428 const std::vector<SCH_PIN*>& aPins,
429 REPORTER& aReporter );
430
432 const SIM_MODEL_SERIALIZER& Serializer() const { return *m_serializer; }
433
434
435 // Move semantics.
436 // Rule of five.
437 virtual ~SIM_MODEL(); // = default in implementation file.
438 SIM_MODEL() = delete;
439 SIM_MODEL( const SIM_MODEL& aOther ) = delete;
440 SIM_MODEL( SIM_MODEL&& aOther ) = default;
441 SIM_MODEL& operator=(SIM_MODEL&& aOther ) = delete;
442
443 void ReadDataFields( const std::vector<SCH_FIELD>* aFields, bool aResolve, int aDepth,
444 const std::vector<SCH_PIN*>& aPins );
445
446 void WriteFields( std::vector<SCH_FIELD>& aFields, const SCH_SHEET_PATH* aSheetPath = nullptr,
447 const wxString& aVariantName = wxEmptyString ) const;
448
449 SPICE_INFO GetSpiceInfo() const { return SpiceInfo( GetType() ); }
450
451 void AddPin( const SIM_MODEL_PIN& aPin );
452 void ClearPins();
453
454 int FindModelPinIndex( const std::string& aSymbolPinNumber );
455 void AddParam( const PARAM::INFO& aInfo );
456
457 DEVICE_INFO GetDeviceInfo() const { return DeviceInfo( GetDeviceType() ); }
458 INFO GetTypeInfo() const { return TypeInfo( GetType() ); }
459
460 DEVICE_T GetDeviceType() const { return GetTypeInfo().deviceType; }
461 TYPE GetType() const { return m_type; }
462
463 const SIM_MODEL* GetBaseModel() const { return m_baseModel; }
464 virtual void SetBaseModel( const SIM_MODEL& aBaseModel );
465
466 virtual std::vector<std::string> GetPinNames() const { return {}; }
467
468 int GetPinCount() const { return static_cast<int>( m_modelPins.size() ); }
469 const SIM_MODEL_PIN& GetPin( unsigned aIndex ) const { return m_modelPins.at( aIndex ); }
470
471 std::vector<std::reference_wrapper<const SIM_MODEL_PIN>> GetPins() const;
472
473 void AssignSymbolPinNumberToModelPin( int aPinIndex, const wxString& aSymbolPinNumber );
474 virtual void AssignSymbolPinNumberToModelPin( const std::string& aPinName,
475 const wxString& aSymbolPinNumber );
476
477
478 int GetParamCount() const { return static_cast<int>( m_params.size() ); }
479 virtual const PARAM& GetParam( unsigned aParamIndex ) const; // Return base parameter unless it's overridden.
480
481 virtual const PARAM* GetTunerParam() const { return nullptr; }
482
483 const PARAM* FindParam( const std::string& aParamName ) const;
484
485 const PARAM& GetParamOverride( unsigned aParamIndex ) const; // Return the actual parameter.
486 const PARAM& GetBaseParam( unsigned aParamIndex ) const; // Always return base parameter if it exists.
487
488
489 void SetParamValue( int aParamIndex, const std::string& aValue,
490 SIM_VALUE::NOTATION aNotation = SIM_VALUE::NOTATION::SI );
491 void SetParamValue( const std::string& aParamName, const std::string& aValue,
492 SIM_VALUE::NOTATION aNotation = SIM_VALUE::NOTATION::SI );
493
494 // Can modifying a model parameter also modify other parameters?
495 virtual bool HasAutofill() const { return false; }
496 virtual bool HasPrimaryValue() const { return false; }
497
498 void SetIsEnabled( bool aIsEnabled ) { m_isEnabled = aIsEnabled; }
499 bool IsEnabled() const { return m_isEnabled; }
500
501 void SetIsStoredInValue( bool aIsStoredInValue )
502 {
503 if( HasPrimaryValue() )
504 m_isStoredInValue = aIsStoredInValue;
505 }
506 bool IsStoredInValue() const { return m_isStoredInValue; }
507
508 virtual void SwitchSingleEndedDiff( bool aDiff ) { };
509
510 template <class T>
511 static bool InferSimModel( T& aSymbol, std::vector<SCH_FIELD>* aFields, bool aResolve, int aDepth,
512 SIM_VALUE_GRAMMAR::NOTATION aNotation, wxString* aDeviceType,
513 wxString* aModelType, wxString* aModelParams, wxString* aPinMap );
514
515 template <class T>
516 static void MigrateSimModel( T& aSymbol, const PROJECT* aProject );
517
518protected:
519 static std::unique_ptr<SIM_MODEL> Create( TYPE aType );
520
521 SIM_MODEL( TYPE aType );
522 SIM_MODEL( TYPE aType, std::unique_ptr<SPICE_GENERATOR> aSpiceGenerator );
523 SIM_MODEL( TYPE aType, std::unique_ptr<SPICE_GENERATOR> aSpiceGenerator,
524 std::unique_ptr<SIM_MODEL_SERIALIZER> aSerializer );
525
526 void createPins( const std::vector<SCH_PIN*>& aSymbolPins );
527
528 virtual int doFindParam( const std::string& aParamName ) const;
529 virtual void doSetParamValue( int aParamIndex, const std::string& aValue );
530
531private:
532 virtual bool requiresSpiceModelLine( const SPICE_ITEM& aItem ) const;
533
534protected:
535 std::vector<PARAM> m_params;
536 std::vector<SIM_MODEL_PIN> m_modelPins;
538 std::unique_ptr<SIM_MODEL_SERIALIZER> m_serializer;
539
540private:
541 std::unique_ptr<SPICE_GENERATOR> m_spiceGenerator;
542
546};
547
548#endif // SIM_MODEL_H
const char * name
Definition kibis.h:488
Container for project specific data.
Definition project.h:65
A pure virtual class used to derive REPORTER objects from.
Definition reporter.h:73
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
Serializes/deserializes a SIM_MODEL for storage in LIB_FIELDs/SCH_FIELDs.
int FindModelPinIndex(const std::string &aSymbolPinNumber)
const SIM_MODEL * GetBaseModel() const
Definition sim_model.h:463
static void MigrateSimModel(T &aSymbol, const PROJECT *aProject)
const PARAM & GetBaseParam(unsigned aParamIndex) const
friend class NETLIST_EXPORTER_SPICE
Definition sim_model.h:81
void AddParam(const PARAM::INFO &aInfo)
bool IsStoredInValue() const
Definition sim_model.h:506
virtual std::vector< std::string > GetPinNames() const
Definition sim_model.h:466
void WriteFields(std::vector< SCH_FIELD > &aFields, const SCH_SHEET_PATH *aSheetPath=nullptr, const wxString &aVariantName=wxEmptyString) const
std::unique_ptr< SPICE_GENERATOR > m_spiceGenerator
Definition sim_model.h:541
virtual bool requiresSpiceModelLine(const SPICE_ITEM &aItem) const
void ClearPins()
DEFINE_ENUM_CLASS_WITH_ITERATOR(TYPE, NONE, R, R_POT, R_BEHAVIORAL, C, C_BEHAVIORAL, L, L_BEHAVIORAL, K, TLINE_Z0, TLINE_RLGC, SW_V, SW_I, D, NPN_VBIC, PNP_VBIC, NPN_GUMMELPOON, PNP_GUMMELPOON, NPN_HICUM2, PNP_HICUM2, NJFET_SHICHMANHODGES, PJFET_SHICHMANHODGES, NJFET_PARKERSKELLERN, PJFET_PARKERSKELLERN, NMES_STATZ, PMES_STATZ, NMES_YTTERDAL, PMES_YTTERDAL, NMES_HFET1, PMES_HFET1, NMES_HFET2, PMES_HFET2, NMOS_VDMOS, PMOS_VDMOS, NMOS_MOS1, PMOS_MOS1, NMOS_MOS2, PMOS_MOS2, NMOS_MOS3, PMOS_MOS3, NMOS_BSIM1, PMOS_BSIM1, NMOS_BSIM2, PMOS_BSIM2, NMOS_MOS6, PMOS_MOS6, NMOS_MOS9, PMOS_MOS9, NMOS_BSIM3, PMOS_BSIM3, NMOS_B4SOI, PMOS_B4SOI, NMOS_BSIM4, PMOS_BSIM4, NMOS_B3SOIFD, PMOS_B3SOIFD, NMOS_B3SOIDD, PMOS_B3SOIDD, NMOS_B3SOIPD, PMOS_B3SOIPD, NMOS_HISIM2, PMOS_HISIM2, NMOS_HISIMHV1, PMOS_HISIMHV1, NMOS_HISIMHV2, PMOS_HISIMHV2, V, V_SIN, V_PULSE, V_EXP, V_AM, V_SFFM, V_VCL, V_CCL, V_PWL, V_WHITENOISE, V_PINKNOISE, V_BURSTNOISE, V_RANDUNIFORM, V_RANDGAUSSIAN, V_RANDEXP, V_RANDPOISSON, V_BEHAVIORAL, I, I_SIN, I_PULSE, I_EXP, I_AM, I_SFFM, I_VCL, I_CCL, I_PWL, I_WHITENOISE, I_PINKNOISE, I_BURSTNOISE, I_RANDUNIFORM, I_RANDGAUSSIAN, I_RANDEXP, I_RANDPOISSON, I_BEHAVIORAL, SUBCKT, XSPICE, KIBIS_DEVICE, KIBIS_DRIVER_DC, KIBIS_DRIVER_RECT, KIBIS_DRIVER_PRBS, RAWSPICE) struct INFO
Definition sim_model.h:132
bool IsEnabled() const
Definition sim_model.h:499
std::vector< SIM_MODEL_PIN > m_modelPins
Definition sim_model.h:536
static INFO TypeInfo(TYPE aType)
int GetPinCount() const
Definition sim_model.h:468
virtual const PARAM * GetTunerParam() const
Definition sim_model.h:481
void AddPin(const SIM_MODEL_PIN &aPin)
static SPICE_INFO SpiceInfo(TYPE aType)
const SIM_MODEL_SERIALIZER & Serializer() const
Definition sim_model.h:432
bool m_isEnabled
Definition sim_model.h:544
void ReadDataFields(const std::vector< SCH_FIELD > *aFields, bool aResolve, int aDepth, const std::vector< SCH_PIN * > &aPins)
static bool InferSimModel(T &aSymbol, std::vector< SCH_FIELD > *aFields, bool aResolve, int aDepth, SIM_VALUE_GRAMMAR::NOTATION aNotation, wxString *aDeviceType, wxString *aModelType, wxString *aModelParams, wxString *aPinMap)
const SPICE_GENERATOR & SpiceGenerator() const
Definition sim_model.h:431
virtual const PARAM & GetParam(unsigned aParamIndex) const
bool m_isStoredInValue
Definition sim_model.h:545
void createPins(const std::vector< SCH_PIN * > &aSymbolPins)
virtual void SetBaseModel(const SIM_MODEL &aBaseModel)
SIM_MODEL()=delete
static TYPE ReadTypeFromFields(const std::vector< SCH_FIELD > &aFields, bool aResolve, int aDepth, REPORTER &aReporter)
int GetParamCount() const
Definition sim_model.h:478
void AssignSymbolPinNumberToModelPin(int aPinIndex, const wxString &aSymbolPinNumber)
DEVICE_INFO GetDeviceInfo() const
Definition sim_model.h:457
DEVICE_T GetDeviceType() const
Definition sim_model.h:460
static DEVICE_INFO DeviceInfo(DEVICE_T aDeviceType)
Definition sim_model.cpp:60
INFO GetTypeInfo() const
Definition sim_model.h:458
const PARAM * FindParam(const std::string &aParamName) const
virtual void doSetParamValue(int aParamIndex, const std::string &aValue)
std::vector< PARAM > m_params
Definition sim_model.h:535
const PARAM & GetParamOverride(unsigned aParamIndex) const
SIM_MODEL(SIM_MODEL &&aOther)=default
friend class SPICE_GENERATOR
Definition sim_model.h:80
virtual bool HasAutofill() const
Definition sim_model.h:495
virtual ~SIM_MODEL()
void SetIsEnabled(bool aIsEnabled)
Definition sim_model.h:498
static std::unique_ptr< SIM_MODEL > Create(TYPE aType, const std::vector< SCH_PIN * > &aPins, REPORTER &aReporter)
SIM_MODEL & operator=(SIM_MODEL &&aOther)=delete
void SetParamValue(int aParamIndex, const std::string &aValue, SIM_VALUE::NOTATION aNotation=SIM_VALUE::NOTATION::SI)
SPICE_INFO GetSpiceInfo() const
Definition sim_model.h:449
virtual void SwitchSingleEndedDiff(bool aDiff)
Definition sim_model.h:508
const SIM_MODEL_PIN & GetPin(unsigned aIndex) const
Definition sim_model.h:469
void SetIsStoredInValue(bool aIsStoredInValue)
Definition sim_model.h:501
std::unique_ptr< SIM_MODEL_SERIALIZER > m_serializer
Definition sim_model.h:538
virtual bool HasPrimaryValue() const
Definition sim_model.h:496
virtual int doFindParam(const std::string &aParamName) const
TYPE GetType() const
Definition sim_model.h:461
DEFINE_ENUM_CLASS_WITH_ITERATOR(DEVICE_T, NONE, R, C, L, K, TLINE, SW, D, NPN, PNP, NJFET, PJFET, NMES, PMES, NMOS, PMOS, V, I, E, F, G, H, SUBCKT, XSPICE, KIBIS, SPICE) struct DEVICE_INFO
Definition sim_model.h:86
std::vector< std::reference_wrapper< const SIM_MODEL_PIN > > GetPins() const
const TYPE m_type
Definition sim_model.h:543
const SIM_MODEL * m_baseModel
Definition sim_model.h:537
SIM_MODEL(const SIM_MODEL &aOther)=delete
SIM_VALUE_GRAMMAR::NOTATION NOTATION
Definition sim_value.h:61
@ NONE
Definition eda_shape.h:69
#define F(x, y, z)
Definition md5_hash.cpp:15
#define I(x, y, z)
Definition md5_hash.cpp:18
#define G(x, y, z)
Definition md5_hash.cpp:16
#define H(x, y, z)
Definition md5_hash.cpp:17
STL namespace.
#define D(x)
Definition ptree.cpp:41
SIM_MODEL::TYPE TYPE
Definition sim_model.cpp:57
std::string spiceModelName
Definition sim_model.h:386
std::vector< std::string > enumValues
Definition sim_model.h:388
INFO(const std::string &aName="", unsigned aId=0, DIR aDir=DIR_INOUT, SIM_VALUE::TYPE aType=SIM_VALUE::TYPE_FLOAT, const std::string &aUnit="", CATEGORY aCategory=CATEGORY::PRINCIPAL, const std::string &aDefaultValue="", const std::string &legacy_unused_value="", const std::string &aDescription="", bool aIsSpiceInstanceParam=false, bool aIsInstanceParam=false, const std::string &aSpiceModelName="", const std::string &aSpiceInstanceName="", std::vector< std::string > aEnumValues={})
Definition sim_model.h:345
SIM_VALUE::TYPE type
Definition sim_model.h:379
bool Matches(const std::string &aName) const
std::string defaultValue
Definition sim_model.h:382
std::string spiceInstanceName
Definition sim_model.h:387
std::string description
Definition sim_model.h:383
PARAM(const INFO &aInfo)
Definition sim_model.h:391
bool Matches(const std::string &aName) const
Definition sim_model.h:395
std::string value
Definition sim_model.h:400
const INFO & info
Definition sim_model.h:401
std::string functionName
Definition sim_model.h:306
std::string itemType
Definition sim_model.h:304
std::string modelType
Definition sim_model.h:305
std::string version
Definition sim_model.h:310
static constexpr auto NOT_CONNECTED
Definition sim_model.h:73
const std::string modelPinName
Definition sim_model.h:70
wxString symbolPinNumber
Definition sim_model.h:71