⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bjtdefs.h

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/**********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 + -