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

📄 bsim2def.h

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1988 Min-Chie Jeng, Hong June Park, Thomas L. Quarles**********/#ifndef BSIM2#define BSIM2#include "ifsim.h"#include "gendefs.h"#include "cktdefs.h"#include "complex.h"    /* declarations for B2 MOSFETs *//* information needed for each instance */typedef struct sBSIM2instance {    struct sBSIM2model *B2modPtr;      /* pointer to model */    struct sBSIM2instance *B2nextInstance;  /* pointer to next instance of                                               *current model*/    IFuid B2name; /* pointer to character string naming this instance */    int B2owner;  /* number of owner process */    int B2states;     /* index into state table for this device */    int B2dNode;  /* number of the gate node of the mosfet */    int B2gNode;  /* number of the gate node of the mosfet */    int B2sNode;  /* number of the source node of the mosfet */    int B2bNode;  /* number of the bulk node of the mosfet */    int B2dNodePrime; /* number of the internal drain node of the mosfet */    int B2sNodePrime; /* number of the internal source node of the mosfet */    double B2l;   /* the length of the channel region */    double B2w;   /* the width of the channel region */    double B2drainArea;   /* the area of the drain diffusion */    double B2sourceArea;  /* the area of the source diffusion */    double B2drainSquares;    /* the length of the drain in squares */    double B2sourceSquares;   /* the length of the source in squares */    double B2drainPerimeter;    double B2sourcePerimeter;    double B2sourceConductance;   /* cond. of source (or 0): set in setup */    double B2drainConductance;    /* cond. of drain (or 0): set in setup */    double B2icVBS;   /* initial condition B-S voltage */    double B2icVDS;   /* initial condition D-S voltage */    double B2icVGS;   /* initial condition G-S voltage */    double B2von;    double B2vdsat;    int B2off;        /* non-zero to indicate device is off for dc analysis*/    int B2mode;       /* device mode : 1 = normal, -1 = inverse */    struct bsim2SizeDependParam  *pParam;    unsigned B2lGiven :1;    unsigned B2wGiven :1;    unsigned B2drainAreaGiven :1;    unsigned B2sourceAreaGiven    :1;    unsigned B2drainSquaresGiven  :1;    unsigned B2sourceSquaresGiven :1;    unsigned B2drainPerimeterGiven    :1;    unsigned B2sourcePerimeterGiven   :1;    unsigned B2dNodePrimeSet  :1;    unsigned B2sNodePrimeSet  :1;    unsigned B2icVBSGiven :1;    unsigned B2icVDSGiven :1;    unsigned B2icVGSGiven :1;    unsigned B2vonGiven   :1;    unsigned B2vdsatGiven :1;    double *B2DdPtr;      /* pointer to sparse matrix element at                                     * (Drain node,drain node) */    double *B2GgPtr;      /* pointer to sparse matrix element at                                     * (gate node,gate node) */    double *B2SsPtr;      /* pointer to sparse matrix element at                                     * (source node,source node) */    double *B2BbPtr;      /* pointer to sparse matrix element at                                     * (bulk node,bulk node) */    double *B2DPdpPtr;    /* pointer to sparse matrix element at                                     * (drain prime node,drain prime node) */    double *B2SPspPtr;    /* pointer to sparse matrix element at                                     * (source prime node,source prime node) */    double *B2DdpPtr;     /* pointer to sparse matrix element at                                     * (drain node,drain prime node) */    double *B2GbPtr;      /* pointer to sparse matrix element at                                     * (gate node,bulk node) */    double *B2GdpPtr;     /* pointer to sparse matrix element at                                     * (gate node,drain prime node) */    double *B2GspPtr;     /* pointer to sparse matrix element at                                     * (gate node,source prime node) */    double *B2SspPtr;     /* pointer to sparse matrix element at                                     * (source node,source prime node) */    double *B2BdpPtr;     /* pointer to sparse matrix element at                                     * (bulk node,drain prime node) */    double *B2BspPtr;     /* pointer to sparse matrix element at                                     * (bulk node,source prime node) */    double *B2DPspPtr;    /* pointer to sparse matrix element at                                     * (drain prime node,source prime node) */    double *B2DPdPtr;     /* pointer to sparse matrix element at                                     * (drain prime node,drain node) */    double *B2BgPtr;      /* pointer to sparse matrix element at                                     * (bulk node,gate node) */    double *B2DPgPtr;     /* pointer to sparse matrix element at                                     * (drain prime node,gate node) */    double *B2SPgPtr;     /* pointer to sparse matrix element at                                     * (source prime node,gate node) */    double *B2SPsPtr;     /* pointer to sparse matrix element at                                     * (source prime node,source node) */    double *B2DPbPtr;     /* pointer to sparse matrix element at                                     * (drain prime node,bulk node) */    double *B2SPbPtr;     /* pointer to sparse matrix element at                                     * (source prime node,bulk node) */    double *B2SPdpPtr;    /* pointer to sparse matrix element at                                     * (source prime node,drain prime node) */#define B2vbd B2states+ 0#define B2vbs B2states+ 1#define B2vgs B2states+ 2#define B2vds B2states+ 3#define B2cd B2states+ 4#define B2id B2states+ 4#define B2cbs B2states+ 5#define B2ibs B2states+ 5#define B2cbd B2states+ 6#define B2ibd B2states+ 6#define B2gm B2states+ 7#define B2gds B2states+ 8#define B2gmbs B2states+ 9#define B2gbd B2states+ 10#define B2gbs B2states+ 11#define B2qb B2states+ 12#define B2cqb B2states+ 13#define B2iqb B2states+ 13#define B2qg B2states+ 14#define B2cqg B2states+ 15#define B2iqg B2states+ 15#define B2qd B2states+ 16#define B2cqd B2states+ 17#define B2iqd B2states+ 17#define B2cggb B2states+ 18#define B2cgdb B2states+ 19#define B2cgsb B2states+ 20#define B2cbgb B2states+ 21#define B2cbdb B2states+ 22#define B2cbsb B2states+ 23#define B2capbd B2states+ 24#define B2iqbd B2states+ 25#define B2cqbd B2states+ 25#define B2capbs B2states+ 26#define B2iqbs B2states+ 27#define B2cqbs B2states+ 27#define B2cdgb B2states+ 28#define B2cddb B2states+ 29#define B2cdsb B2states+ 30#define B2vono B2states+ 31#define B2vdsato B2states+ 32#define B2qbs  B2states+ 33#define B2qbd  B2states+ 34#define B2numStates 35           } B2instance ;struct bsim2SizeDependParam{    double Width;    double Length;    double B2vfb;      /* flat band voltage at given L and W */    double B2phi;      /* surface potential at strong inversion */    double B2k1;       /* bulk effect coefficient 1             */    double B2k2;       /* bulk effect coefficient 2             */    double B2eta0;      /* drain induced barrier lowering        */    double B2etaB;     /* Vbs dependence of Eta                 */    double B2beta0;    /* Beta at Vds = 0 and Vgs = Vth         */    double B2beta0B;   /* Vbs dependence of Beta0               */    double B2betas0;    /* Beta at Vds=Vdd and Vgs=Vth           */    double B2betasB;   /* Vbs dependence of Betas               */    double B2beta20;   /* Vds dependence of Beta in tanh term   */    double B2beta2B;   /* Vbs dependence of Beta2               */    double B2beta2G;   /* Vgs dependence of Beta2               */    double B2beta30;   /* Vds dependence of Beta in linear term */    double B2beta3B;   /* Vbs dependence of Beta3               */    double B2beta3G;   /* Vgs dependence of Beta3               */    double B2beta40;   /* Vds dependence of Beta in quadra term */    double B2beta4B;   /* Vbs dependence of Beta4               */    double B2beta4G;   /* Vgs dependence of Beta4               */    double B2ua0;      /* Linear Vgs dependence of Mobility     */    double B2uaB;      /* Vbs dependence of Ua                  */    double B2ub0;      /* Quadratic Vgs dependence of Mobility  */    double B2ubB;      /* Vbs dependence of Ub                  */    double B2u10;      /* Drift Velocity Saturation due to Vds  */    double B2u1B;      /* Vbs dependence of U1                  */    double B2u1D;      /* Vds dependence of U1                  */    double B2n0;       /* Subthreshold slope at Vds=0, Vbs=0    */    double B2nB;       /* Vbs dependence of n                   */    double B2nD;       /* Vds dependence of n                   */    double B2vof0;     /* Vth offset at Vds=0, Vbs=0            */    double B2vofB;     /* Vbs dependence of Vof                 */    double B2vofD;     /* Vds dependence of Vof                 */    double B2ai0;      /* Pre-factor in hot-electron effects    */    double B2aiB;      /* Vbs dependence of Ai                  */    double B2bi0;      /* Exp-factor in hot-electron effects    */    double B2biB;      /* Vbs dependence of Bi                  */    double B2vghigh;   /* Upper bound of cubic spline function  */    double B2vglow;    /* Lower bound of cubic spline function  */    double B2GDoverlapCap;/* Gate Drain Overlap Capacitance     */    double B2GSoverlapCap;/* Gate Source Overlap Capacitance    */    double B2GBoverlapCap;/* Gate Bulk Overlap Capacitance      */    double SqrtPhi;    double Phis3;    double CoxWL;    double One_Third_CoxWL;    double Two_Third_CoxWL;    double Arg;    double B2vt0;    struct bsim2SizeDependParam  *pNext;};/* per model data */typedef struct sBSIM2model {       	/* model structure for a resistor */    int B2modType;    		/* type index of this device type */    struct sBSIM2model *B2nextModel; /* pointer to next possible model                                          *in linked list */    B2instance * B2instances;	/* pointer to list of instances                                    	 * that have this model */    IFuid B2modName;       		/* pointer to the name of this model */    int B2type;       		/* device type: 1 = nmos,  -1 = pmos */    int pad;    double B2vfb0;    double B2vfbL;    double B2vfbW;    double B2phi0;    double B2phiL;    double B2phiW;    double B2k10;    double B2k1L;    double B2k1W;    double B2k20;    double B2k2L;    double B2k2W;    double B2eta00;    double B2eta0L;    double B2eta0W;    double B2etaB0;    double B2etaBL;    double B2etaBW;    double B2deltaL;    double B2deltaW;    double B2mob00;    double B2mob0B0;    double B2mob0BL;    double B2mob0BW ;    double B2mobs00;    double B2mobs0L;    double B2mobs0W;    double B2mobsB0;    double B2mobsBL;    double B2mobsBW;    double B2mob200;    double B2mob20L;    double B2mob20W;    double B2mob2B0;    double B2mob2BL;    double B2mob2BW;    double B2mob2G0;    double B2mob2GL;    double B2mob2GW;    double B2mob300;    double B2mob30L;    double B2mob30W;    double B2mob3B0;    double B2mob3BL;    double B2mob3BW;    double B2mob3G0;    double B2mob3GL;    double B2mob3GW;    double B2mob400;    double B2mob40L;    double B2mob40W;    double B2mob4B0;    double B2mob4BL;    double B2mob4BW;    double B2mob4G0;    double B2mob4GL;    double B2mob4GW;    double B2ua00;    double B2ua0L;    double B2ua0W;    double B2uaB0;    double B2uaBL;    double B2uaBW;    double B2ub00;    double B2ub0L;    double B2ub0W;    double B2ubB0;    double B2ubBL;    double B2ubBW;    double B2u100;    double B2u10L;    double B2u10W;    double B2u1B0;    double B2u1BL;    double B2u1BW;    double B2u1D0;    double B2u1DL;    double B2u1DW;    double B2n00;    double B2n0L;    double B2n0W;    double B2nB0;    double B2nBL;    double B2nBW;    double B2nD0;    double B2nDL;    double B2nDW;    double B2vof00;    double B2vof0L;    double B2vof0W;    double B2vofB0;    double B2vofBL;    double B2vofBW;    double B2vofD0;    double B2vofDL;    double B2vofDW;    double B2ai00;    double B2ai0L;    double B2ai0W;    double B2aiB0;    double B2aiBL;    double B2aiBW;    double B2bi00;    double B2bi0L;    double B2bi0W;    double B2biB0;    double B2biBL;    double B2biBW;    double B2vghigh0;    double B2vghighL;    double B2vghighW;    double B2vglow0;    double B2vglowL;    double B2vglowW;    double B2tox;              /* unit: micron  */    double B2Cox;                         /* unit: F/cm**2 */    double B2temp;    double B2vdd;    double B2vdd2;    double B2vgg;    double B2vgg2;    double B2vbb;    double B2vbb2;    double B2gateSourceOverlapCap;    double B2gateDrainOverlapCap;    double B2gateBulkOverlapCap;    double B2Vtm;    double B2sheetResistance;    double B2jctSatCurDensity;    double B2bulkJctPotential;    double B2bulkJctBotGradingCoeff;

⌨️ 快捷键说明

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