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