KiCad PCB EDA Suite
Loading...
Searching...
No Matches
SIM_MODEL Class Reference

#include <sim_model.h>

Inheritance diagram for SIM_MODEL:
SIM_MODEL_BEHAVIORAL SIM_MODEL_IDEAL SIM_MODEL_KIBIS SIM_MODEL_L_MUTUAL SIM_MODEL_RAW_SPICE SIM_MODEL_R_POT SIM_MODEL_SOURCE SIM_MODEL_SPICE SIM_MODEL_SWITCH SIM_MODEL_TLINE SIM_MODEL_XSPICE

Classes

struct  PARAM
 
struct  PIN
 
struct  SPICE_INFO
 

Public Member Functions

 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
 
 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
 
const SPICE_GENERATORSpiceGenerator () const
 
const SIM_MODEL_SERIALIZERSerializer () const
 
virtual ~SIM_MODEL ()
 
 SIM_MODEL ()=delete
 
 SIM_MODEL (const SIM_MODEL &aOther)=delete
 
 SIM_MODEL (SIM_MODEL &&aOther)=default
 
SIM_MODELoperator= (SIM_MODEL &&aOther)=delete
 
void ReadDataFields (const std::vector< SCH_FIELD > *aFields, const std::vector< SCH_PIN * > &aPins)
 
void WriteFields (std::vector< SCH_FIELD > &aFields) const
 
SPICE_INFO GetSpiceInfo () const
 
void AddPin (const PIN &aPin)
 
void ClearPins ()
 
int FindModelPinIndex (const std::string &aSymbolPinNumber)
 
void AddParam (const PARAM::INFO &aInfo)
 
DEVICE_INFO GetDeviceInfo () const
 
INFO GetTypeInfo () const
 
DEVICE_T GetDeviceType () const
 
TYPE GetType () const
 
const SIM_MODELGetBaseModel () const
 
virtual void SetBaseModel (const SIM_MODEL &aBaseModel)
 
virtual std::vector< std::string > GetPinNames () const
 
int GetPinCount () const
 
const PINGetPin (unsigned aIndex) const
 
std::vector< std::reference_wrapper< const PIN > > GetPins () const
 
void SetPinSymbolPinNumber (int aPinIndex, const std::string &aSymbolPinNumber)
 
virtual void SetPinSymbolPinNumber (const std::string &aPinName, const std::string &aSymbolPinNumber)
 
int GetParamCount () const
 
virtual const PARAMGetParam (unsigned aParamIndex) const
 
virtual const PARAMGetTunerParam () const
 
const PARAMFindParam (const std::string &aParamName) const
 
std::vector< std::reference_wrapper< const PARAM > > GetParams () const
 
const PARAMGetParamOverride (unsigned aParamIndex) const
 
const PARAMGetBaseParam (unsigned aParamIndex) const
 
void SetParamValue (int aParamIndex, const std::string &aValue, SIM_VALUE::NOTATION aNotation=SIM_VALUE::NOTATION::SI)
 
void SetParamValue (const std::string &aParamName, const std::string &aValue, SIM_VALUE::NOTATION aNotation=SIM_VALUE::NOTATION::SI)
 
virtual bool HasAutofill () const
 
virtual bool HasPrimaryValue () const
 
void SetIsEnabled (bool aIsEnabled)
 
bool IsEnabled () const
 
void SetIsStoredInValue (bool aIsStoredInValue)
 
bool IsStoredInValue () const
 
virtual void SwitchSingleEndedDiff (bool aDiff)
 

Static Public Member Functions

static DEVICE_INFO DeviceInfo (DEVICE_T aDeviceType)
 
static INFO TypeInfo (TYPE aType)
 
static SPICE_INFO SpiceInfo (TYPE aType)
 
static TYPE ReadTypeFromFields (const std::vector< SCH_FIELD > &aFields, REPORTER &aReporter)
 
static std::unique_ptr< SIM_MODELCreate (TYPE aType, const std::vector< SCH_PIN * > &aPins, REPORTER &aReporter)
 
static std::unique_ptr< SIM_MODELCreate (const SIM_MODEL *aBaseModel, const std::vector< SCH_PIN * > &aPins, REPORTER &aReporter)
 
static std::unique_ptr< SIM_MODELCreate (const SIM_MODEL *aBaseModel, const std::vector< SCH_PIN * > &aPins, const std::vector< SCH_FIELD > &aFields, REPORTER &aReporter)
 
static std::unique_ptr< SIM_MODELCreate (const std::vector< SCH_FIELD > &aFields, const std::vector< SCH_PIN * > &aPins, bool aResolved, REPORTER &aReporter)
 
static std::string GetFieldValue (const std::vector< SCH_FIELD > *aFields, const wxString &aFieldName, bool aResolve=true)
 
static void SetFieldValue (std::vector< SCH_FIELD > &aFields, const wxString &aFieldName, const std::string &aValue)
 
template<class T >
static bool InferSimModel (T &aSymbol, std::vector< SCH_FIELD > *aFields, bool aResolve, SIM_VALUE_GRAMMAR::NOTATION aNotation, wxString *aDeviceType, wxString *aModelType, wxString *aModelParams, wxString *aPinMap)
 
template<class T >
static void MigrateSimModel (T &aSymbol, const PROJECT *aProject)
 

Protected Member Functions

 SIM_MODEL (TYPE aType)
 
 SIM_MODEL (TYPE aType, std::unique_ptr< SPICE_GENERATOR > aSpiceGenerator)
 
 SIM_MODEL (TYPE aType, std::unique_ptr< SPICE_GENERATOR > aSpiceGenerator, std::unique_ptr< SIM_MODEL_SERIALIZER > aSerializer)
 
void createPins (const std::vector< SCH_PIN * > &aSymbolPins)
 
virtual int doFindParam (const std::string &aParamName) const
 
virtual void doSetParamValue (int aParamIndex, const std::string &aValue)
 

Static Protected Member Functions

static std::unique_ptr< SIM_MODELCreate (TYPE aType)
 

Protected Attributes

std::vector< PARAMm_params
 
std::vector< PINm_pins
 
const SIM_MODELm_baseModel
 
std::unique_ptr< SIM_MODEL_SERIALIZERm_serializer
 

Private Member Functions

virtual bool requiresSpiceModelLine (const SPICE_ITEM &aItem) const
 

Private Attributes

std::unique_ptr< SPICE_GENERATORm_spiceGenerator
 
const TYPE m_type
 
bool m_isEnabled
 
bool m_isStoredInValue
 

Friends

class SPICE_GENERATOR
 
class NETLIST_EXPORTER_SPICE
 

Detailed Description

Definition at line 68 of file sim_model.h.

Constructor & Destructor Documentation

◆ ~SIM_MODEL()

SIM_MODEL::~SIM_MODEL ( )
virtualdefault

◆ SIM_MODEL() [1/6]

SIM_MODEL::SIM_MODEL ( )
delete

◆ SIM_MODEL() [2/6]

SIM_MODEL::SIM_MODEL ( const SIM_MODEL aOther)
delete

◆ SIM_MODEL() [3/6]

SIM_MODEL::SIM_MODEL ( SIM_MODEL &&  aOther)
default

◆ SIM_MODEL() [4/6]

SIM_MODEL::SIM_MODEL ( TYPE  aType)
protected

Definition at line 957 of file sim_model.cpp.

◆ SIM_MODEL() [5/6]

SIM_MODEL::SIM_MODEL ( TYPE  aType,
std::unique_ptr< SPICE_GENERATOR aSpiceGenerator 
)
protected

Definition at line 964 of file sim_model.cpp.

◆ SIM_MODEL() [6/6]

SIM_MODEL::SIM_MODEL ( TYPE  aType,
std::unique_ptr< SPICE_GENERATOR aSpiceGenerator,
std::unique_ptr< SIM_MODEL_SERIALIZER aSerializer 
)
protected

Definition at line 971 of file sim_model.cpp.

Member Function Documentation

◆ AddParam()

◆ AddPin()

void SIM_MODEL::AddPin ( const PIN aPin)

◆ ClearPins()

void SIM_MODEL::ClearPins ( )

Definition at line 702 of file sim_model.cpp.

References m_pins.

Referenced by SIM_MODEL_KIBIS::SwitchSingleEndedDiff().

◆ Create() [1/5]

std::unique_ptr< SIM_MODEL > SIM_MODEL::Create ( const SIM_MODEL aBaseModel,
const std::vector< SCH_PIN * > &  aPins,
const std::vector< SCH_FIELD > &  aFields,
REPORTER aReporter 
)
static

◆ Create() [2/5]

std::unique_ptr< SIM_MODEL > SIM_MODEL::Create ( const SIM_MODEL aBaseModel,
const std::vector< SCH_PIN * > &  aPins,
REPORTER aReporter 
)
static

Definition at line 511 of file sim_model.cpp.

References Create(), and GetType().

◆ Create() [3/5]

std::unique_ptr< SIM_MODEL > SIM_MODEL::Create ( const std::vector< SCH_FIELD > &  aFields,
const std::vector< SCH_PIN * > &  aPins,
bool  aResolved,
REPORTER aReporter 
)
static

◆ Create() [4/5]

std::unique_ptr< SIM_MODEL > SIM_MODEL::Create ( TYPE  aType)
staticprotected

Definition at line 872 of file sim_model.cpp.

◆ Create() [5/5]

std::unique_ptr< SIM_MODEL > SIM_MODEL::Create ( TYPE  aType,
const std::vector< SCH_PIN * > &  aPins,
REPORTER aReporter 
)
static

◆ createPins()

void SIM_MODEL::createPins ( const std::vector< SCH_PIN * > &  aSymbolPins)
protected

Definition at line 983 of file sim_model.cpp.

References AddPin(), and GetPinNames().

Referenced by ReadDataFields().

◆ DEFINE_ENUM_CLASS_WITH_ITERATOR() [1/2]

SIM_MODEL::DEFINE_ENUM_CLASS_WITH_ITERATOR ( DEVICE_T  ,
NONE  ,
,
C  ,
,
,
TLINE  ,
SW  ,
D  ,
NPN  ,
PNP  ,
NJFET  ,
PJFET  ,
NMES  ,
PMES  ,
NMOS  ,
PMOS  ,
,
I  ,
E  ,
F  ,
G  ,
H  ,
SUBCKT  ,
XSPICE  ,
KIBIS  ,
SPICE   
)
inline

Definition at line 78 of file sim_model.h.

◆ DEFINE_ENUM_CLASS_WITH_ITERATOR() [2/2]

SIM_MODEL::DEFINE_ENUM_CLASS_WITH_ITERATOR ( TYPE  ,
NONE  ,
,
R_POT  ,
R_BEHAVIORAL  ,
C  ,
C_BEHAVIORAL  ,
,
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_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   
)
inline

Definition at line 124 of file sim_model.h.

◆ DeviceInfo()

◆ doFindParam()

int SIM_MODEL::doFindParam ( const std::string &  aParamName) const
protectedvirtual

Reimplemented in SIM_MODEL_NGSPICE, and SIM_MODEL_SPICE_FALLBACK.

Definition at line 794 of file sim_model.cpp.

References GetParams().

Referenced by FindParam(), and SetParamValue().

◆ doSetParamValue()

void SIM_MODEL::doSetParamValue ( int  aParamIndex,
const std::string &  aValue 
)
protectedvirtual

Reimplemented in SIM_MODEL_SOURCE.

Definition at line 842 of file sim_model.cpp.

References m_params.

Referenced by SIM_MODEL_SOURCE::doSetParamValue(), and SetParamValue().

◆ FindModelPinIndex()

int SIM_MODEL::FindModelPinIndex ( const std::string &  aSymbolPinNumber)

◆ FindParam()

◆ GetBaseModel()

const SIM_MODEL * SIM_MODEL::GetBaseModel ( ) const
inline

◆ GetBaseParam()

const SIM_MODEL::PARAM & SIM_MODEL::GetBaseParam ( unsigned  aParamIndex) const

Definition at line 833 of file sim_model.cpp.

References GetParam(), m_baseModel, and m_params.

◆ GetDeviceInfo()

◆ GetDeviceType()

◆ GetFieldValue()

◆ GetParam()

◆ GetParamCount()

◆ GetParamOverride()

const SIM_MODEL::PARAM & SIM_MODEL::GetParamOverride ( unsigned  aParamIndex) const

◆ GetParams()

◆ GetPin()

◆ GetPinCount()

◆ GetPinNames()

virtual std::vector< std::string > SIM_MODEL::GetPinNames ( ) const
inlinevirtual

◆ GetPins()

std::vector< std::reference_wrapper< const SIM_MODEL::PIN > > SIM_MODEL::GetPins ( ) const

◆ GetSpiceInfo()

◆ GetTunerParam()

virtual const PARAM * SIM_MODEL::GetTunerParam ( ) const
inlinevirtual

◆ GetType()

◆ GetTypeInfo()

◆ HasAutofill()

virtual bool SIM_MODEL::HasAutofill ( ) const
inlinevirtual

◆ HasPrimaryValue()

virtual bool SIM_MODEL::HasPrimaryValue ( ) const
inlinevirtual

◆ InferSimModel()

template<class T >
template bool SIM_MODEL::InferSimModel< LIB_SYMBOL > ( T &  aSymbol,
std::vector< SCH_FIELD > *  aFields,
bool  aResolve,
SIM_VALUE_GRAMMAR::NOTATION  aNotation,
wxString *  aDeviceType,
wxString *  aModelType,
wxString *  aModelParams,
wxString *  aPinMap 
)
static

◆ IsEnabled()

bool SIM_MODEL::IsEnabled ( ) const
inline

Definition at line 505 of file sim_model.h.

References m_isEnabled.

Referenced by SIM_MODEL_SERIALIZER::GenerateEnable().

◆ IsStoredInValue()

bool SIM_MODEL::IsStoredInValue ( ) const
inline

Definition at line 512 of file sim_model.h.

References m_isStoredInValue.

Referenced by SIM_MODEL_SERIALIZER::GenerateParams(), and WriteFields().

◆ MigrateSimModel()

◆ operator=()

SIM_MODEL & SIM_MODEL::operator= ( SIM_MODEL &&  aOther)
delete

◆ ReadDataFields()

void SIM_MODEL::ReadDataFields ( const std::vector< SCH_FIELD > *  aFields,
const std::vector< SCH_PIN * > &  aPins 
)

◆ ReadTypeFromFields()

TYPE SIM_MODEL::ReadTypeFromFields ( const std::vector< SCH_FIELD > &  aFields,
REPORTER aReporter 
)
static

◆ requiresSpiceModelLine()

◆ Serializer()

const SIM_MODEL_SERIALIZER & SIM_MODEL::Serializer ( ) const
inline

Definition at line 437 of file sim_model.h.

References m_serializer.

Referenced by MigrateSimModel().

◆ SetBaseModel()

void SIM_MODEL::SetBaseModel ( const SIM_MODEL aBaseModel)
virtual

Reimplemented in SIM_MODEL_KIBIS, and SIM_MODEL_SUBCKT.

Definition at line 730 of file sim_model.cpp.

References GetType(), and m_baseModel.

Referenced by SIM_MODEL_SUBCKT::SetBaseModel().

◆ SetFieldValue()

void SIM_MODEL::SetFieldValue ( std::vector< SCH_FIELD > &  aFields,
const wxString &  aFieldName,
const std::string &  aValue 
)
static

Definition at line 664 of file sim_model.cpp.

Referenced by DIALOG_SIM_MODEL< T >::TransferDataFromWindow(), and WriteFields().

◆ SetIsEnabled()

void SIM_MODEL::SetIsEnabled ( bool  aIsEnabled)
inline

Definition at line 504 of file sim_model.h.

References m_isEnabled.

Referenced by SIM_MODEL_SERIALIZER::ParseEnable().

◆ SetIsStoredInValue()

void SIM_MODEL::SetIsStoredInValue ( bool  aIsStoredInValue)
inline

◆ SetParamValue() [1/2]

void SIM_MODEL::SetParamValue ( const std::string &  aParamName,
const std::string &  aValue,
SIM_VALUE::NOTATION  aNotation = SIM_VALUE::NOTATION::SI 
)

Definition at line 860 of file sim_model.cpp.

References doFindParam(), SetParamValue(), and THROW_IO_ERROR.

◆ SetParamValue() [2/2]

◆ SetPinSymbolPinNumber() [1/2]

void SIM_MODEL::SetPinSymbolPinNumber ( const std::string &  aPinName,
const std::string &  aSymbolPinNumber 
)
virtual

Reimplemented in SIM_MODEL_RAW_SPICE, and SIM_MODEL_SPICE_FALLBACK.

Definition at line 756 of file sim_model.cpp.

References _, m_pins, pin, and THROW_IO_ERROR.

◆ SetPinSymbolPinNumber() [2/2]

void SIM_MODEL::SetPinSymbolPinNumber ( int  aPinIndex,
const std::string &  aSymbolPinNumber 
)

◆ SpiceGenerator()

◆ SpiceInfo()

SIM_MODEL::SPICE_INFO SIM_MODEL::SpiceInfo ( TYPE  aType)
static

◆ SwitchSingleEndedDiff()

virtual void SIM_MODEL::SwitchSingleEndedDiff ( bool  aDiff)
inlinevirtual

Reimplemented in SIM_MODEL_KIBIS.

Definition at line 514 of file sim_model.h.

Referenced by ReadDataFields().

◆ TypeInfo()

◆ WriteFields()

Friends And Related Function Documentation

◆ NETLIST_EXPORTER_SPICE

friend class NETLIST_EXPORTER_SPICE
friend

Definition at line 72 of file sim_model.h.

◆ SPICE_GENERATOR

friend class SPICE_GENERATOR
friend

Definition at line 71 of file sim_model.h.

Member Data Documentation

◆ m_baseModel

◆ m_isEnabled

bool SIM_MODEL::m_isEnabled
private

Definition at line 550 of file sim_model.h.

Referenced by IsEnabled(), and SetIsEnabled().

◆ m_isStoredInValue

bool SIM_MODEL::m_isStoredInValue
private

Definition at line 551 of file sim_model.h.

Referenced by IsStoredInValue(), and SetIsStoredInValue().

◆ m_params

◆ m_pins

◆ m_serializer

std::unique_ptr<SIM_MODEL_SERIALIZER> SIM_MODEL::m_serializer
protected

Definition at line 544 of file sim_model.h.

Referenced by ReadDataFields(), Serializer(), and WriteFields().

◆ m_spiceGenerator

std::unique_ptr<SPICE_GENERATOR> SIM_MODEL::m_spiceGenerator
private

Definition at line 547 of file sim_model.h.

Referenced by SpiceGenerator().

◆ m_type

const TYPE SIM_MODEL::m_type
private

Definition at line 549 of file sim_model.h.

Referenced by GetType(), and requiresSpiceModelLine().


The documentation for this class was generated from the following files: