vbicdefs.h

来自「ngspice又一个电子CAD仿真软件代码.功能更全」· C头文件 代码 · 共 770 行 · 第 1/2 页

H
770
字号
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1985 Thomas L. QuarlesModel Author: 1995 Colin McAndrew MotorolaSpice3 Implementation: 2003 Dietmar Warning DAnalyse GmbH**********/#ifndef VBIC#define VBIC#include "cktdefs.h"#include "ifsim.h"#include "gendefs.h"#include "complex.h"#include "noisedef.h"/* structures to describe Bipolar Junction Transistors *//* data needed to describe a single instance */typedef struct sVBICinstance {    struct sVBICmodel *VBICmodPtr;    /* backpointer to model */    struct sVBICinstance *VBICnextInstance;   /* pointer to next instance of                                                 current model*/    IFuid VBICname;  /* pointer to character string naming this instance */    int VBICowner;   /* number of owner process */    int VBICstate;   /* pointer to start of state vector for vbic */    int VBICcollNode;   /* number of collector node of vbic */    int VBICbaseNode;   /* number of base node of vbic */    int VBICemitNode;   /* number of emitter node of vbic */    int VBICsubsNode;   /* number of substrate node of vbic */    int VBICcollCXNode; /* number of internal collector node of vbic */    int VBICcollCINode; /* number of internal collector node of vbic */    int VBICbaseBXNode; /* number of internal base node of vbic */    int VBICbaseBINode; /* number of internal base node of vbic */    int VBICemitEINode; /* number of internal emitter node of vbic */    int VBICbaseBPNode; /* number of internal base node of vbic */    int VBICsubsSINode; /* number of internal substrate node */    double VBICarea;     /* area factor for the vbic */    double VBICicVBE;    /* initial condition voltage B-E*/    double VBICicVCE;    /* initial condition voltage C-E*/    double VBICtemp;     /* instance temperature */    double VBICdtemp;    /* instance delta temperature */    double VBICm;        /* multiply factor for the vbic */    double VBICtVcrit;    double VBICttnom;    /* temperature adjusted model parameters per instance */    double VBICtextCollResist;    double VBICtintCollResist;    double VBICtepiSatVoltage;    double VBICtepiDoping;    double VBICtextBaseResist;    double VBICtintBaseResist;    double VBICtemitterResist;    double VBICtsubstrateResist;    double VBICtparBaseResist;    double VBICtsatCur;    double VBICtemissionCoeffF;    double VBICtemissionCoeffR;    double VBICtdepletionCapBE;    double VBICtpotentialBE;    double VBICtdepletionCapBC;    double VBICtextCapBC;    double VBICtpotentialBC;    double VBICtextCapSC;    double VBICtpotentialSC;    double VBICtidealSatCurBE;    double VBICtnidealSatCurBE;    double VBICtidealSatCurBC;    double VBICtnidealSatCurBC;    double VBICtavalanchePar2BC;    double VBICtparasitSatCur;    double VBICtidealParasitSatCurBE;    double VBICtnidealParasitSatCurBE;    double VBICtidealParasitSatCurBC;    double VBICtnidealParasitSatCurBC;    double VBICtrollOffF;    double VBICtsepISRR;    double VBICtvbbe;    double VBICtnbbe;    double *VBICcollCollPtr;  /* pointer to sparse matrix at                             * (collector,collector) */    double *VBICbaseBasePtr; /* pointer to sparse matrix at                             * (base,base) */    double *VBICemitEmitPtr; /* pointer to sparse matrix at                             * (emitter,emitter) */    double *VBICsubsSubsPtr;   /* pointer to sparse matrix at                             * (substrate,substrate) */    double *VBICcollCXCollCXPtr; /* pointer to sparse matrix at                             * (collector prime,collector prime) */    double *VBICcollCICollCIPtr; /* pointer to sparse matrix at                             * (collector prime,collector prime) */    double *VBICbaseBXBaseBXPtr;   /* pointer to sparse matrix at                             * (base prime,base prime) */    double *VBICbaseBIBaseBIPtr; /* pointer to sparse matrix at                             * (collector prime,collector prime) */    double *VBICbaseBPBaseBPPtr; /* pointer to sparse matrix at                             * (collector prime,collector prime) */    double *VBICemitEIEmitEIPtr;   /* pointer to sparse matrix at                             * (emitter prime,emitter prime) */    double *VBICsubsSISubsSIPtr;    /* pointer to sparse matrix at                             * (substrate prime, substrate prime) */    double *VBICbaseEmitPtr; /* pointer to sparse matrix at                             * (base,emit) */    double *VBICemitBasePtr; /* pointer to sparse matrix at                             * (emit,base) */    double *VBICbaseCollPtr; /* pointer to sparse matrix at                             * (base,coll) */    double *VBICcollBasePtr; /* pointer to sparse matrix at                             * (coll,base) */    double *VBICcollCollCXPtr;    /* pointer to sparse matrix at                             * (collector,collector prime) */    double *VBICbaseBaseBXPtr;    /* pointer to sparse matrix at                             * (base,base prime) */    double *VBICemitEmitEIPtr;    /* pointer to sparse matrix at                             * (emitter,emitter prime) */    double *VBICsubsSubsSIPtr;    /* pointer to sparse matrix at                             * (substrate, Substrate connection) */    double *VBICcollCXCollCIPtr;    /* pointer to sparse matrix at                             * (collector prime,base prime) */    double *VBICcollCXBaseBXPtr;    /* pointer to sparse matrix at                             * (collector prime,collector prime) */    double *VBICcollCXBaseBIPtr;    /* pointer to sparse matrix at                             * (collector prime,collector prime) */    double *VBICcollCXBaseBPPtr;    /* pointer to sparse matrix at                             * (collector prime,base prime) */    double *VBICcollCIBaseBIPtr; /* pointer to sparse matrix at                             * (collector prime,base) */    double *VBICcollCIEmitEIPtr;    /* pointer to sparse matrix at                             * (collector prime,emitter prime) */    double *VBICbaseBXBaseBIPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICbaseBXEmitEIPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICbaseBXBaseBPPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICbaseBXSubsSIPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICbaseBIEmitEIPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICbaseBPSubsSIPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICcollCXCollPtr;  /* pointer to sparse matrix at                             * (collector prime,collector) */    double *VBICbaseBXBasePtr;    /* pointer to sparse matrix at                             * (base prime,base ) */    double *VBICemitEIEmitPtr;    /* pointer to sparse matrix at                             * (emitter prime,emitter) */    double *VBICsubsSISubsPtr;    /* pointer to sparse matrix at                             * (Substrate connection, substrate) */    double *VBICcollCICollCXPtr;    /* pointer to sparse matrix at                             * (collector prime,base prime) */    double *VBICbaseBICollCXPtr;    /* pointer to sparse matrix at                             * (base prime,collector prime) */    double *VBICbaseBPCollCXPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICbaseBXCollCIPtr; /* pointer to sparse matrix at                             * (base,collector prime) */    double *VBICbaseBICollCIPtr; /* pointer to sparse matrix at                             * (base,collector prime) */    double *VBICemitEICollCIPtr;    /* pointer to sparse matrix at                             * (emitter prime,collector prime) */    double *VBICbaseBPCollCIPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICsubsSICollCIPtr;   /* pointer to sparse matrix at                             * (substrate,collector prime) */    double *VBICbaseBIBaseBXPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICemitEIBaseBXPtr;   /* pointer to sparse matrix at                             * (emitter prime,base prime) */    double *VBICbaseBPBaseBXPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICsubsSIBaseBXPtr;   /* pointer to sparse matrix at                             * (substrate,substrate) */    double *VBICemitEIBaseBIPtr;   /* pointer to sparse matrix at                             * (emitter prime,base prime) */    double *VBICbaseBPBaseBIPtr;   /* pointer to sparse matrix at                             * (base primt,emitter prime) */    double *VBICsubsSIBaseBIPtr;   /* pointer to sparse matrix at                             * (substrate,base prime) */    double *VBICsubsSIBaseBPPtr;   /* pointer to sparse matrix at                             * (substrate,substrate) */    unsigned VBICareaGiven   :1; /* flag to indicate area was specified */    unsigned VBICoff         :1; /* 'off' flag for vbic */    unsigned VBICicVBEGiven  :1; /* flag to indicate VBE init. cond. given */    unsigned VBICicVCEGiven  :1; /* flag to indicate VCE init. cond. given */    unsigned VBICtempGiven   :1; /* temperature given for vbic instance*/    unsigned VBICdtempGiven  :1; /* delta temperature given for vbic instance*/    unsigned VBICmGiven      :1; /* flag to indicate multiplier was specified */    unsigned VBICsenPertFlag :1; /* indictes whether the the parameter of                                    the particular instance is to be perturbed */    int  VBICsenParmNo;   /* parameter # for sensitivity use;                             set equal to  0 if not a design parameter */    double VBICcapbe;    double VBICcapbex;    double VBICcapbc;    double VBICcapbcx;    double VBICcapbep;    double VBICcapbcp;    double *VBICsens;#define VBICsenGpi VBICsens /* stores the perturbed values of gpi */#define VBICsenGmu VBICsens+5 /* stores the perturbed values of gmu */#define VBICsenGm VBICsens+10 /* stores the perturbed values of gm */#define VBICsenGo VBICsens+15 /* stores the perturbed values of go */#define VBICsenGx VBICsens+20 /* stores the perturbed values of gx */#define VBICsenCpi VBICsens+25 /* stores the perturbed values of cpi */#define VBICsenCmu VBICsens+30 /* stores the perturbed values of cmu */#define VBICsenCbx VBICsens+35 /* stores the perturbed values of cbx */#define VBICsenCmcb VBICsens+40 /* stores the perturbed values of cmcb */#define VBICsenCsub VBICsens+45 /* stores the perturbed values of csub *//* indices to array of VBIC noise sources */#define VBICRCNOIZ       0#define VBICRCINOIZ      1#define VBICRBNOIZ       2#define VBICRBINOIZ      3#define VBICRENOIZ       4#define VBICRBPNOIZ      5#define VBICICNOIZ       6#define VBICIBNOIZ       7#define VBICIBEPNOIZ     8#define VBICFLBENOIZ     9#define VBICFLBEPNOIZ   10#define VBICRSNOIZ      11#define VBICICCPNOIZ    12#define VBICTOTNOIZ     13#define VBICNSRCS       14     /* the number of VBIC noise sources */#ifndef NONOISE      double VBICnVar[NSTATVARS][VBICNSRCS];#else /*NONOISE*/      double **VBICnVar;#endif /*NONOISE*//* the above to avoid allocating memory when it is not needed */} VBICinstance ;/* entries in the state vector for vbic: */#define VBICvbei VBICstate#define VBICvbex VBICstate+1#define VBICvbci VBICstate+2#define VBICvbcx VBICstate+3#define VBICvbep VBICstate+4#define VBICvrci VBICstate+5#define VBICvrbi VBICstate+6#define VBICvrbp VBICstate+7#define VBICvbcp VBICstate+8#define VBICibe VBICstate+9#define VBICibe_Vbei VBICstate+10#define VBICibex VBICstate+11#define VBICibex_Vbex VBICstate+12#define VBICitzf VBICstate+13#define VBICitzf_Vbei VBICstate+14#define VBICitzf_Vbci VBICstate+15#define VBICitzr VBICstate+16#define VBICitzr_Vbci VBICstate+17#define VBICitzr_Vbei VBICstate+18#define VBICibc VBICstate+19#define VBICibc_Vbci VBICstate+20#define VBICibc_Vbei VBICstate+21#define VBICibep VBICstate+22#define VBICibep_Vbep VBICstate+23#define VBICirci VBICstate+24#define VBICirci_Vrci VBICstate+25#define VBICirci_Vbci VBICstate+26#define VBICirci_Vbcx VBICstate+27#define VBICirbi VBICstate+28#define VBICirbi_Vrbi VBICstate+29#define VBICirbi_Vbei VBICstate+30#define VBICirbi_Vbci VBICstate+31#define VBICirbp VBICstate+32#define VBICirbp_Vrbp VBICstate+33#define VBICirbp_Vbep VBICstate+34#define VBICirbp_Vbci VBICstate+35#define VBICqbe VBICstate+36#define VBICcqbe VBICstate+37#define VBICcqbeci VBICstate+38#define VBICqbex VBICstate+39#define VBICcqbex VBICstate+40#define VBICqbc VBICstate+41#define VBICcqbc VBICstate+42#define VBICqbcx VBICstate+43#define VBICcqbcx VBICstate+44#define VBICqbep VBICstate+45#define VBICcqbep VBICstate+46#define VBICcqbepci VBICstate+47#define VBICqbeo VBICstate+48#define VBICcqbeo VBICstate+49#define VBICgqbeo VBICstate+50#define VBICqbco VBICstate+51#define VBICcqbco VBICstate+52#define VBICgqbco VBICstate+53#define VBICibcp VBICstate+54#define VBICibcp_Vbcp VBICstate+55#define VBICiccp VBICstate+56#define VBICiccp_Vbep VBICstate+57#define VBICiccp_Vbci VBICstate+58#define VBICiccp_Vbcp VBICstate+59#define VBICqbcp VBICstate+60#define VBICcqbcp VBICstate+61#define VBICnumStates 62#define VBICsensxpbe VBICstate+64 /* charge sensitivities and their                   derivatives. +65 for the derivatives -                   pointer to the beginning of the array */#define VBICsensxpbex VBICstate+66#define VBICsensxpbc VBICstate+68#define VBICsensxpbcx VBICstate+70#define VBICsensxpbep VBICstate+72#define VBICnumSenStates 10/* per model data */typedef struct sVBICmodel {           /* model structure for a vbic */    int VBICmodType;                  /* type index of this device type */    struct sVBICmodel *VBICnextModel; /* pointer to next possible model in                                          linked list */    VBICinstance * VBICinstances;     /* pointer to list of instances that have                                         this model */    IFuid VBICmodName;                /* pointer to character string naming                                          this model */    int VBICtype;    double VBICtnom;    double VBICextCollResist;    double VBICintCollResist;    double VBICepiSatVoltage;    double VBICepiDoping;    double VBIChighCurFac;    double VBICextBaseResist;    double VBICintBaseResist;    double VBICemitterResist;    double VBICsubstrateResist;    double VBICparBaseResist;    double VBICsatCur;    double VBICemissionCoeffF;    double VBICemissionCoeffR;    double VBICdeplCapLimitF;    double VBICextOverlapCapBE;    double VBICdepletionCapBE;    double VBICpotentialBE;    double VBICjunctionExpBE;    double VBICsmoothCapBE;    double VBICextOverlapCapBC;    double VBICdepletionCapBC;    double VBICepiCharge;    double VBICextCapBC;    double VBICpotentialBC;    double VBICjunctionExpBC;    double VBICsmoothCapBC;    double VBICextCapSC;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?