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 + -
显示快捷键?