📄 bjt2defs.h
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1985 Thomas L. QuarlesModified: Alan Gillespie**********/#ifndef BJT2#define BJT2#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 sBJT2instance { struct sBJT2model *BJT2modPtr; /* backpointer to model */ struct sBJT2instance *BJT2nextInstance; /* pointer to next instance of * current model*/ IFuid BJT2name; /* pointer to character string naming this instance */ int BJT2owner; /* number of owner process */ int BJT2state; /* pointer to start of state vector for bjt2 */ int BJT2colNode; /* number of collector node of bjt2 */ int BJT2baseNode; /* number of base node of bjt2 */ int BJT2emitNode; /* number of emitter node of bjt2 */ int BJT2substNode; /* number of substrate node of bjt2 */ int BJT2colPrimeNode; /* number of internal collector node of bjt2 */ int BJT2basePrimeNode; /* number of internal base node of bjt2 */ int BJT2emitPrimeNode; /* number of internal emitter node of bjt2 */ int BJT2substConNode; /* number of node which substrate is connected to */ /* Substrate connection is either base prime * * or collector prime depending on whether * * the device is VERTICAL or LATERAL */ double BJT2area; /* (emitter) area factor for the bjt2 */ double BJT2areab; /* base area factor for the bjt2 */ double BJT2areac; /* collector area factor for the bjt2 */ double BJT2m; /* parallel multiplier */ double BJT2icVBE; /* initial condition voltage B-E*/ double BJT2icVCE; /* initial condition voltage C-E*/ double BJT2temp; /* instance temperature */ double BJT2dtemp; /* instance delta temperature from circuit */ double BJT2tSatCur; /* temperature adjusted saturation current */ double BJT2tSubSatCur; /* temperature adjusted subst. saturation current */ double BJT2tEmitterConduct; /* emitter conductance */ double BJT2tCollectorConduct; /* collector conductance */ double BJT2tBaseResist; /* temperature adjusted base resistance */ double BJT2tMinBaseResist; /* temperature adjusted base resistance */ double BJT2tBetaF; /* temperature adjusted forward beta */ double BJT2tBetaR; /* temperature adjusted reverse beta */ double BJT2tBEleakCur; /* temperature adjusted B-E leakage current */ double BJT2tBCleakCur; /* temperature adjusted B-C leakage current */ double BJT2tBEcap; /* temperature adjusted B-E capacitance */ double BJT2tBEpot; /* temperature adjusted B-E potential */ double BJT2tBCcap; /* temperature adjusted B-C capacitance */ double BJT2tBCpot; /* temperature adjusted B-C potential */ double BJT2tSubcap; /* temperature adjusted Substrate capacitance */ double BJT2tSubpot; /* temperature adjusted Substrate potential */ double BJT2tDepCap; /* temperature adjusted join point in diode curve */ double BJT2tf1; /* temperature adjusted polynomial coefficient */ double BJT2tf4; /* temperature adjusted polynomial coefficient */ double BJT2tf5; /* temperature adjusted polynomial coefficient */ double BJT2tVcrit; /* temperature adjusted critical voltage */ double BJT2tSubVcrit; /* temperature adjusted substrate critical voltage */ double *BJT2colColPrimePtr; /* pointer to sparse matrix at * (collector,collector prime) */ double *BJT2baseBasePrimePtr; /* pointer to sparse matrix at * (base,base prime) */ double *BJT2emitEmitPrimePtr; /* pointer to sparse matrix at * (emitter,emitter prime) */ double *BJT2colPrimeColPtr; /* pointer to sparse matrix at * (collector prime,collector) */ double *BJT2colPrimeBasePrimePtr; /* pointer to sparse matrix at * (collector prime,base prime) */ double *BJT2colPrimeEmitPrimePtr; /* pointer to sparse matrix at * (collector prime,emitter prime) */ double *BJT2basePrimeBasePtr; /* pointer to sparse matrix at * (base prime,base ) */ double *BJT2basePrimeColPrimePtr; /* pointer to sparse matrix at * (base prime,collector prime) */ double *BJT2basePrimeEmitPrimePtr; /* pointer to sparse matrix at * (base primt,emitter prime) */ double *BJT2emitPrimeEmitPtr; /* pointer to sparse matrix at * (emitter prime,emitter) */ double *BJT2emitPrimeColPrimePtr; /* pointer to sparse matrix at * (emitter prime,collector prime) */ double *BJT2emitPrimeBasePrimePtr; /* pointer to sparse matrix at * (emitter prime,base prime) */ double *BJT2colColPtr; /* pointer to sparse matrix at * (collector,collector) */ double *BJT2baseBasePtr; /* pointer to sparse matrix at * (base,base) */ double *BJT2emitEmitPtr; /* pointer to sparse matrix at * (emitter,emitter) */ double *BJT2colPrimeColPrimePtr; /* pointer to sparse matrix at * (collector prime,collector prime) */ double *BJT2basePrimeBasePrimePtr; /* pointer to sparse matrix at * (base prime,base prime) */ double *BJT2emitPrimeEmitPrimePtr; /* pointer to sparse matrix at * (emitter prime,emitter prime) */ double *BJT2substSubstPtr; /* pointer to sparse matrix at * (substrate,substrate) */ double *BJT2substConSubstPtr; /* pointer to sparse matrix at * (Substrate connection, substrate) */ double *BJT2substSubstConPtr; /* pointer to sparse matrix at * (substrate, Substrate connection) */ double *BJT2substConSubstConPtr; /* pointer to sparse matrix at * (Substrate connection, Substrate connection) */ /* Substrate connection is either base prime * * or collector prime depending on whether * * the device is VERTICAL or LATERAL */ double *BJT2baseColPrimePtr; /* pointer to sparse matrix at * (base,collector prime) */ double *BJT2colPrimeBasePtr; /* pointer to sparse matrix at * (collector prime,base) */ unsigned BJT2off :1; /* 'off' flag for bjt2 */ unsigned BJT2tempGiven :1; /* temperature given for bjt2 instance*/ unsigned BJT2dtempGiven :1; /* temperature given for bjt2 instance*/ unsigned BJT2areaGiven :1; /* flag to indicate (emitter) area was specified */ unsigned BJT2areabGiven :1; /* flag to indicate base area was specified */ unsigned BJT2areacGiven :1; /* flag to indicate collector area was specified */ unsigned BJT2mGiven :1; /* flag to indicate m parameter specified */ unsigned BJT2icVBEGiven :1; /* flag to indicate VBE init. cond. given */ unsigned BJT2icVCEGiven :1; /* flag to indicate VCE init. cond. given */ unsigned BJT2senPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ int BJT2senParmNo; /* parameter # for sensitivity use; set equal to 0 if not a design parameter*/ double BJT2capbe; double BJT2capbc; double BJT2capsub; double BJT2capbx; double *BJT2sens;#define BJT2senGpi BJT2sens /* stores the perturbed values of gpi */#define BJT2senGmu BJT2sens+5 /* stores the perturbed values of gmu */#define BJT2senGm BJT2sens+10 /* stores the perturbed values of gm */#define BJT2senGo BJT2sens+15 /* stores the perturbed values of go */#define BJT2senGx BJT2sens+20 /* stores the perturbed values of gx */#define BJT2senCpi BJT2sens+25 /* stores the perturbed values of cpi */#define BJT2senCmu BJT2sens+30 /* stores the perturbed values of cmu */#define BJT2senCbx BJT2sens+35 /* stores the perturbed values of cbx */#define BJT2senCmcb BJT2sens+40 /* stores the perturbed values of cmcb */#define BJT2senCsub BJT2sens+45 /* stores the perturbed values of csub */#define BJT2dphibedp BJT2sens+51#define BJT2dphibcdp BJT2sens+52#define BJT2dphisubdp BJT2sens+53#define BJT2dphibxdp BJT2sens+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 BJT2NDCOEFFS 65#ifndef NODISTO double BJT2dCoeffs[BJT2NDCOEFFS];#else /* NODISTO */ double *BJT2dCoeffs;#endif /* NODISTO */#ifndef CONFIG#define ic_x BJT2dCoeffs[0]#define ic_y BJT2dCoeffs[1]#define ic_xd BJT2dCoeffs[2]#define ic_x2 BJT2dCoeffs[3]#define ic_y2 BJT2dCoeffs[4]#define ic_w2 BJT2dCoeffs[5]#define ic_xy BJT2dCoeffs[6]#define ic_yw BJT2dCoeffs[7]#define ic_xw BJT2dCoeffs[8]#define ic_x3 BJT2dCoeffs[9]#define ic_y3 BJT2dCoeffs[10]#define ic_w3 BJT2dCoeffs[11]#define ic_x2w BJT2dCoeffs[12]#define ic_x2y BJT2dCoeffs[13]#define ic_y2w BJT2dCoeffs[14]#define ic_xy2 BJT2dCoeffs[15]#define ic_xw2 BJT2dCoeffs[16]#define ic_yw2 BJT2dCoeffs[17]#define ic_xyw BJT2dCoeffs[18]#define ib_x BJT2dCoeffs[19]#define ib_y BJT2dCoeffs[20]#define ib_x2 BJT2dCoeffs[21]#define ib_y2 BJT2dCoeffs[22]#define ib_xy BJT2dCoeffs[23]#define ib_x3 BJT2dCoeffs[24]#define ib_y3 BJT2dCoeffs[25]#define ib_x2y BJT2dCoeffs[26]#define ib_xy2 BJT2dCoeffs[27]#define ibb_x BJT2dCoeffs[28]#define ibb_y BJT2dCoeffs[29]#define ibb_z BJT2dCoeffs[30]#define ibb_x2 BJT2dCoeffs[31]#define ibb_y2 BJT2dCoeffs[32]#define ibb_z2 BJT2dCoeffs[33]#define ibb_xy BJT2dCoeffs[34]#define ibb_yz BJT2dCoeffs[35]#define ibb_xz BJT2dCoeffs[36]#define ibb_x3 BJT2dCoeffs[37]#define ibb_y3 BJT2dCoeffs[38]#define ibb_z3 BJT2dCoeffs[39]#define ibb_x2z BJT2dCoeffs[40]#define ibb_x2y BJT2dCoeffs[41]#define ibb_y2z BJT2dCoeffs[42]#define ibb_xy2 BJT2dCoeffs[43]#define ibb_xz2 BJT2dCoeffs[44]#define ibb_yz2 BJT2dCoeffs[45]#define ibb_xyz BJT2dCoeffs[46]#define qbe_x BJT2dCoeffs[47]#define qbe_y BJT2dCoeffs[48]#define qbe_x2 BJT2dCoeffs[49]#define qbe_y2 BJT2dCoeffs[50]#define qbe_xy BJT2dCoeffs[51]#define qbe_x3 BJT2dCoeffs[52]#define qbe_y3 BJT2dCoeffs[53]#define qbe_x2y BJT2dCoeffs[54]#define qbe_xy2 BJT2dCoeffs[55]#define capbc1 BJT2dCoeffs[56]#define capbc2 BJT2dCoeffs[57]#define capbc3 BJT2dCoeffs[58]#define capbx1 BJT2dCoeffs[59]#define capbx2 BJT2dCoeffs[60]#define capbx3 BJT2dCoeffs[61]#define capsc1 BJT2dCoeffs[62]#define capsc2 BJT2dCoeffs[63]#define capsc3 BJT2dCoeffs[64]#endif/* indices to array of BJT2 noise sources */#define BJT2RCNOIZ 0#define BJT2RBNOIZ 1#define BJT2_RE_NOISE 2#define BJT2ICNOIZ 3#define BJT2IBNOIZ 4#define BJT2FLNOIZ 5#define BJT2TOTNOIZ 6#define BJT2NSRCS 7 /* the number of BJT2 noise sources */#ifndef NONOISE double BJT2nVar[NSTATVARS][BJT2NSRCS];#else /*NONOISE*/ double **BJT2nVar;#endif /*NONOISE*//* the above to avoid allocating memory when it is not needed */} BJT2instance ;/* entries in the state vector for bjt2: */#define BJT2vbe BJT2state#define BJT2vbc BJT2state+1#define BJT2cc BJT2state+2#define BJT2cb BJT2state+3#define BJT2gpi BJT2state+4#define BJT2gmu BJT2state+5#define BJT2gm BJT2state+6#define BJT2go BJT2state+7#define BJT2qbe BJT2state+8#define BJT2cqbe BJT2state+9#define BJT2qbc BJT2state+10#define BJT2cqbc BJT2state+11#define BJT2qsub BJT2state+12#define BJT2cqsub BJT2state+13#define BJT2qbx BJT2state+14#define BJT2cqbx BJT2state+15#define BJT2gx BJT2state+16#define BJT2cexbc BJT2state+17#define BJT2geqcb BJT2state+18#define BJT2gcsub BJT2state+19#define BJT2geqbx BJT2state+20#define BJT2vsub BJT2state+21
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -