📄 bjtdefs.h
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1985 Thomas L. Quarles**********/#ifndef BJT#define BJT#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 sBJTinstance { struct sBJTmodel *BJTmodPtr; /* backpointer to model */ struct sBJTinstance *BJTnextInstance; /* pointer to next instance of * current model*/ IFuid BJTname; /* pointer to character string naming this instance */ int BJTowner; /* number of owner process */ int BJTstate; /* pointer to start of state vector for bjt */ int BJTcolNode; /* number of collector node of bjt */ int BJTbaseNode; /* number of base node of bjt */ int BJTemitNode; /* number of emitter node of bjt */ int BJTsubstNode; /* number of substrate node of bjt */ int BJTcolPrimeNode; /* number of internal collector node of bjt */ int BJTbasePrimeNode; /* number of internal base node of bjt */ int BJTemitPrimeNode; /* number of internal emitter node of bjt */ double BJTarea; /* area factor for the bjt */ double BJTicVBE; /* initial condition voltage B-E*/ double BJTicVCE; /* initial condition voltage C-E*/ double BJTtemp; /* instance temperature */ double BJTtSatCur; /* temperature adjusted saturation current */ double BJTtBetaF; /* temperature adjusted forward beta */ double BJTtBetaR; /* temperature adjusted reverse beta */ double BJTtBEleakCur; /* temperature adjusted B-E leakage current */ double BJTtBCleakCur; /* temperature adjusted B-C leakage current */ double BJTtBEcap; /* temperature adjusted B-E capacitance */ double BJTtBEpot; /* temperature adjusted B-E potential */ double BJTtBCcap; /* temperature adjusted B-C capacitance */ double BJTtBCpot; /* temperature adjusted B-C potential */ double BJTtDepCap; /* temperature adjusted join point in diode curve */ double BJTtf1; /* temperature adjusted polynomial coefficient */ double BJTtf4; /* temperature adjusted polynomial coefficient */ double BJTtf5; /* temperature adjusted polynomial coefficient */ double BJTtVcrit; /* temperature adjusted critical voltage */ double *BJTcolColPrimePtr; /* pointer to sparse matrix at * (collector,collector prime) */ double *BJTbaseBasePrimePtr; /* pointer to sparse matrix at * (base,base prime) */ double *BJTemitEmitPrimePtr; /* pointer to sparse matrix at * (emitter,emitter prime) */ double *BJTcolPrimeColPtr; /* pointer to sparse matrix at * (collector prime,collector) */ double *BJTcolPrimeBasePrimePtr; /* pointer to sparse matrix at * (collector prime,base prime) */ double *BJTcolPrimeEmitPrimePtr; /* pointer to sparse matrix at * (collector prime,emitter prime) */ double *BJTbasePrimeBasePtr; /* pointer to sparse matrix at * (base prime,base ) */ double *BJTbasePrimeColPrimePtr; /* pointer to sparse matrix at * (base prime,collector prime) */ double *BJTbasePrimeEmitPrimePtr; /* pointer to sparse matrix at * (base primt,emitter prime) */ double *BJTemitPrimeEmitPtr; /* pointer to sparse matrix at * (emitter prime,emitter) */ double *BJTemitPrimeColPrimePtr; /* pointer to sparse matrix at * (emitter prime,collector prime) */ double *BJTemitPrimeBasePrimePtr; /* pointer to sparse matrix at * (emitter prime,base prime) */ double *BJTcolColPtr; /* pointer to sparse matrix at * (collector,collector) */ double *BJTbaseBasePtr; /* pointer to sparse matrix at * (base,base) */ double *BJTemitEmitPtr; /* pointer to sparse matrix at * (emitter,emitter) */ double *BJTcolPrimeColPrimePtr; /* pointer to sparse matrix at * (collector prime,collector prime) */ double *BJTbasePrimeBasePrimePtr; /* pointer to sparse matrix at * (base prime,base prime) */ double *BJTemitPrimeEmitPrimePtr; /* pointer to sparse matrix at * (emitter prime,emitter prime) */ double *BJTsubstSubstPtr; /* pointer to sparse matrix at * (substrate,substrate) */ double *BJTcolPrimeSubstPtr; /* pointer to sparse matrix at * (collector prime,substrate) */ double *BJTsubstColPrimePtr; /* pointer to sparse matrix at * (substrate,collector prime) */ double *BJTbaseColPrimePtr; /* pointer to sparse matrix at * (base,collector prime) */ double *BJTcolPrimeBasePtr; /* pointer to sparse matrix at * (collector prime,base) */ unsigned BJToff :1; /* 'off' flag for bjt */ unsigned BJTtempGiven :1; /* temperature given for bjt instance*/ unsigned BJTareaGiven :1; /* flag to indicate area was specified */ unsigned BJTicVBEGiven :1; /* flag to indicate VBE init. cond. given */ unsigned BJTicVCEGiven :1; /* flag to indicate VCE init. cond. given */ unsigned BJTsenPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ int BJTsenParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ double BJTcapbe; double BJTcapbc; double BJTcapcs; double BJTcapbx; double *BJTsens;#define BJTsenGpi BJTsens /* stores the perturbed values of gpi */#define BJTsenGmu BJTsens+5 /* stores the perturbed values of gmu */#define BJTsenGm BJTsens+10 /* stores the perturbed values of gm */#define BJTsenGo BJTsens+15 /* stores the perturbed values of go */#define BJTsenGx BJTsens+20 /* stores the perturbed values of gx */#define BJTsenCpi BJTsens+25 /* stores the perturbed values of cpi */#define BJTsenCmu BJTsens+30 /* stores the perturbed values of cmu */#define BJTsenCbx BJTsens+35 /* stores the perturbed values of cbx */#define BJTsenCmcb BJTsens+40 /* stores the perturbed values of cmcb */#define BJTsenCcs BJTsens+45 /* stores the perturbed values of ccs */#define BJTdphibedp BJTsens+51#define BJTdphibcdp BJTsens+52#define BJTdphicsdp BJTsens+53#define BJTdphibxdp BJTsens+54/* * distortion stuff * the following naming convention is used: * x = vbe * y = vbc * z = vbb * w = vbed (vbe delayed for the linear gm delay) * therefore ic_xyz stands for the coefficient of the vbe*vbc*vbb * term in the multidimensional Taylor expansion for ic; and ibb_x2y * for the coeff. of the vbe*vbe*vbc term in the ibb expansion. */#define BJTNDCOEFFS 65#ifndef NODISTO double BJTdCoeffs[BJTNDCOEFFS];#else /* NODISTO */ double *BJTdCoeffs;#endif /* NODISTO */#ifndef CONFIG#define ic_x BJTdCoeffs[0]#define ic_y BJTdCoeffs[1]#define ic_xd BJTdCoeffs[2]#define ic_x2 BJTdCoeffs[3]#define ic_y2 BJTdCoeffs[4]#define ic_w2 BJTdCoeffs[5]#define ic_xy BJTdCoeffs[6]#define ic_yw BJTdCoeffs[7]#define ic_xw BJTdCoeffs[8]#define ic_x3 BJTdCoeffs[9]#define ic_y3 BJTdCoeffs[10]#define ic_w3 BJTdCoeffs[11]#define ic_x2w BJTdCoeffs[12]#define ic_x2y BJTdCoeffs[13]#define ic_y2w BJTdCoeffs[14]#define ic_xy2 BJTdCoeffs[15]#define ic_xw2 BJTdCoeffs[16]#define ic_yw2 BJTdCoeffs[17]#define ic_xyw BJTdCoeffs[18]#define ib_x BJTdCoeffs[19]#define ib_y BJTdCoeffs[20]#define ib_x2 BJTdCoeffs[21]#define ib_y2 BJTdCoeffs[22]#define ib_xy BJTdCoeffs[23]#define ib_x3 BJTdCoeffs[24]#define ib_y3 BJTdCoeffs[25]#define ib_x2y BJTdCoeffs[26]#define ib_xy2 BJTdCoeffs[27]#define ibb_x BJTdCoeffs[28]#define ibb_y BJTdCoeffs[29]#define ibb_z BJTdCoeffs[30]#define ibb_x2 BJTdCoeffs[31]#define ibb_y2 BJTdCoeffs[32]#define ibb_z2 BJTdCoeffs[33]#define ibb_xy BJTdCoeffs[34]#define ibb_yz BJTdCoeffs[35]#define ibb_xz BJTdCoeffs[36]#define ibb_x3 BJTdCoeffs[37]#define ibb_y3 BJTdCoeffs[38]#define ibb_z3 BJTdCoeffs[39]#define ibb_x2z BJTdCoeffs[40]#define ibb_x2y BJTdCoeffs[41]#define ibb_y2z BJTdCoeffs[42]#define ibb_xy2 BJTdCoeffs[43]#define ibb_xz2 BJTdCoeffs[44]#define ibb_yz2 BJTdCoeffs[45]#define ibb_xyz BJTdCoeffs[46]#define qbe_x BJTdCoeffs[47]#define qbe_y BJTdCoeffs[48]#define qbe_x2 BJTdCoeffs[49]#define qbe_y2 BJTdCoeffs[50]#define qbe_xy BJTdCoeffs[51]#define qbe_x3 BJTdCoeffs[52]#define qbe_y3 BJTdCoeffs[53]#define qbe_x2y BJTdCoeffs[54]#define qbe_xy2 BJTdCoeffs[55]#define capbc1 BJTdCoeffs[56]#define capbc2 BJTdCoeffs[57]#define capbc3 BJTdCoeffs[58]#define capbx1 BJTdCoeffs[59]#define capbx2 BJTdCoeffs[60]#define capbx3 BJTdCoeffs[61]#define capsc1 BJTdCoeffs[62]#define capsc2 BJTdCoeffs[63]#define capsc3 BJTdCoeffs[64]#endif/* indices to array of BJT noise sources */#define BJTRCNOIZ 0#define BJTRBNOIZ 1#define BJT_RE_NOISE 2#define BJTICNOIZ 3#define BJTIBNOIZ 4#define BJTFLNOIZ 5#define BJTTOTNOIZ 6#define BJTNSRCS 7 /* the number of BJT noise sources */#ifndef NONOISE double BJTnVar[NSTATVARS][BJTNSRCS];#else /*NONOISE*/ double **BJTnVar;#endif /*NONOISE*//* the above to avoid allocating memory when it is not needed */} BJTinstance ;/* entries in the state vector for bjt: */#define BJTvbe BJTstate#define BJTvbc BJTstate+1#define BJTcc BJTstate+2#define BJTcb BJTstate+3#define BJTgpi BJTstate+4#define BJTgmu BJTstate+5#define BJTgm BJTstate+6#define BJTgo BJTstate+7#define BJTqbe BJTstate+8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -