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