You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
754 lines
24 KiB
754 lines
24 KiB
/**********
|
|
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 "ngspice/ifsim.h"
|
|
#include "ngspice/gendefs.h"
|
|
#include "ngspice/cktdefs.h"
|
|
#include "ngspice/complex.h"
|
|
|
|
/* declarations for B2 MOSFETs */
|
|
|
|
/* information needed for each instance */
|
|
|
|
typedef struct sBSIM2instance {
|
|
|
|
struct GENinstance gen;
|
|
|
|
#define B2modPtr(inst) ((struct sBSIM2model *)((inst)->gen.GENmodPtr))
|
|
#define B2nextInstance(inst) ((struct sBSIM2instance *)((inst)->gen.GENnextInstance))
|
|
#define B2name gen.GENname
|
|
#define B2states gen.GENstate
|
|
|
|
const int B2dNode; /* number of the gate node of the mosfet */
|
|
const int B2gNode; /* number of the gate node of the mosfet */
|
|
const int B2sNode; /* number of the source node of the mosfet */
|
|
const 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 B2m; /* the parallel multiplier */
|
|
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 B2mGiven :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 B2RDNOIZ 0
|
|
#define B2RSNOIZ 1
|
|
#define B2IDNOIZ 2
|
|
#define B2FLNOIZ 3
|
|
#define B2TOTNOIZ 4
|
|
|
|
#define B2NSRCS 5 /* the number of BSIM2 noise sources */
|
|
|
|
#ifndef NONOISE
|
|
double B2nVar[NSTATVARS][B2NSRCS];
|
|
#else /* NONOISE */
|
|
double **B2nVar;
|
|
#endif /* NONOISE */
|
|
|
|
#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 */
|
|
|
|
struct GENmodel gen;
|
|
|
|
#define B2modType gen.GENmodType
|
|
#define B2nextModel(inst) ((struct sBSIM2model *)((inst)->gen.GENnextModel))
|
|
#define B2instances(inst) ((B2instance *)((inst)->gen.GENinstances))
|
|
#define B2modName gen.GENmodName
|
|
|
|
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;
|
|
double B2bulkJctSideGradingCoeff;
|
|
double B2sidewallJctPotential;
|
|
double B2unitAreaJctCap;
|
|
double B2unitLengthSidewallJctCap;
|
|
double B2defaultWidth;
|
|
double B2deltaLength;
|
|
double B2fNcoef;
|
|
double B2fNexp;
|
|
int B2channelChargePartitionFlag;
|
|
|
|
|
|
struct bsim2SizeDependParam *pSizeDependParamKnot;
|
|
|
|
|
|
unsigned B2vfb0Given :1;
|
|
unsigned B2vfbLGiven :1;
|
|
unsigned B2vfbWGiven :1;
|
|
unsigned B2phi0Given :1;
|
|
unsigned B2phiLGiven :1;
|
|
unsigned B2phiWGiven :1;
|
|
unsigned B2k10Given :1;
|
|
unsigned B2k1LGiven :1;
|
|
unsigned B2k1WGiven :1;
|
|
unsigned B2k20Given :1;
|
|
unsigned B2k2LGiven :1;
|
|
unsigned B2k2WGiven :1;
|
|
unsigned B2eta00Given :1;
|
|
unsigned B2eta0LGiven :1;
|
|
unsigned B2eta0WGiven :1;
|
|
unsigned B2etaB0Given :1;
|
|
unsigned B2etaBLGiven :1;
|
|
unsigned B2etaBWGiven :1;
|
|
unsigned B2deltaLGiven :1;
|
|
unsigned B2deltaWGiven :1;
|
|
unsigned B2mob00Given :1;
|
|
unsigned B2mob0B0Given :1;
|
|
unsigned B2mob0BLGiven :1;
|
|
unsigned B2mob0BWGiven :1;
|
|
unsigned B2mobs00Given :1;
|
|
unsigned B2mobs0LGiven :1;
|
|
unsigned B2mobs0WGiven :1;
|
|
unsigned B2mobsB0Given :1;
|
|
unsigned B2mobsBLGiven :1;
|
|
unsigned B2mobsBWGiven :1;
|
|
unsigned B2mob200Given :1;
|
|
unsigned B2mob20LGiven :1;
|
|
unsigned B2mob20WGiven :1;
|
|
unsigned B2mob2B0Given :1;
|
|
unsigned B2mob2BLGiven :1;
|
|
unsigned B2mob2BWGiven :1;
|
|
unsigned B2mob2G0Given :1;
|
|
unsigned B2mob2GLGiven :1;
|
|
unsigned B2mob2GWGiven :1;
|
|
unsigned B2mob300Given :1;
|
|
unsigned B2mob30LGiven :1;
|
|
unsigned B2mob30WGiven :1;
|
|
unsigned B2mob3B0Given :1;
|
|
unsigned B2mob3BLGiven :1;
|
|
unsigned B2mob3BWGiven :1;
|
|
unsigned B2mob3G0Given :1;
|
|
unsigned B2mob3GLGiven :1;
|
|
unsigned B2mob3GWGiven :1;
|
|
unsigned B2mob400Given :1;
|
|
unsigned B2mob40LGiven :1;
|
|
unsigned B2mob40WGiven :1;
|
|
unsigned B2mob4B0Given :1;
|
|
unsigned B2mob4BLGiven :1;
|
|
unsigned B2mob4BWGiven :1;
|
|
unsigned B2mob4G0Given :1;
|
|
unsigned B2mob4GLGiven :1;
|
|
unsigned B2mob4GWGiven :1;
|
|
unsigned B2ua00Given :1;
|
|
unsigned B2ua0LGiven :1;
|
|
unsigned B2ua0WGiven :1;
|
|
unsigned B2uaB0Given :1;
|
|
unsigned B2uaBLGiven :1;
|
|
unsigned B2uaBWGiven :1;
|
|
unsigned B2ub00Given :1;
|
|
unsigned B2ub0LGiven :1;
|
|
unsigned B2ub0WGiven :1;
|
|
unsigned B2ubB0Given :1;
|
|
unsigned B2ubBLGiven :1;
|
|
unsigned B2ubBWGiven :1;
|
|
unsigned B2u100Given :1;
|
|
unsigned B2u10LGiven :1;
|
|
unsigned B2u10WGiven :1;
|
|
unsigned B2u1B0Given :1;
|
|
unsigned B2u1BLGiven :1;
|
|
unsigned B2u1BWGiven :1;
|
|
unsigned B2u1D0Given :1;
|
|
unsigned B2u1DLGiven :1;
|
|
unsigned B2u1DWGiven :1;
|
|
unsigned B2n00Given :1;
|
|
unsigned B2n0LGiven :1;
|
|
unsigned B2n0WGiven :1;
|
|
unsigned B2nB0Given :1;
|
|
unsigned B2nBLGiven :1;
|
|
unsigned B2nBWGiven :1;
|
|
unsigned B2nD0Given :1;
|
|
unsigned B2nDLGiven :1;
|
|
unsigned B2nDWGiven :1;
|
|
unsigned B2vof00Given :1;
|
|
unsigned B2vof0LGiven :1;
|
|
unsigned B2vof0WGiven :1;
|
|
unsigned B2vofB0Given :1;
|
|
unsigned B2vofBLGiven :1;
|
|
unsigned B2vofBWGiven :1;
|
|
unsigned B2vofD0Given :1;
|
|
unsigned B2vofDLGiven :1;
|
|
unsigned B2vofDWGiven :1;
|
|
unsigned B2ai00Given :1;
|
|
unsigned B2ai0LGiven :1;
|
|
unsigned B2ai0WGiven :1;
|
|
unsigned B2aiB0Given :1;
|
|
unsigned B2aiBLGiven :1;
|
|
unsigned B2aiBWGiven :1;
|
|
unsigned B2bi00Given :1;
|
|
unsigned B2bi0LGiven :1;
|
|
unsigned B2bi0WGiven :1;
|
|
unsigned B2biB0Given :1;
|
|
unsigned B2biBLGiven :1;
|
|
unsigned B2biBWGiven :1;
|
|
unsigned B2vghigh0Given :1;
|
|
unsigned B2vghighLGiven :1;
|
|
unsigned B2vghighWGiven :1;
|
|
unsigned B2vglow0Given :1;
|
|
unsigned B2vglowLGiven :1;
|
|
unsigned B2vglowWGiven :1;
|
|
unsigned B2toxGiven :1;
|
|
unsigned B2tempGiven :1;
|
|
unsigned B2vddGiven :1;
|
|
unsigned B2vggGiven :1;
|
|
unsigned B2vbbGiven :1;
|
|
unsigned B2gateSourceOverlapCapGiven :1;
|
|
unsigned B2gateDrainOverlapCapGiven :1;
|
|
unsigned B2gateBulkOverlapCapGiven :1;
|
|
unsigned B2channelChargePartitionFlagGiven :1;
|
|
unsigned B2sheetResistanceGiven :1;
|
|
unsigned B2jctSatCurDensityGiven :1;
|
|
unsigned B2bulkJctPotentialGiven :1;
|
|
unsigned B2bulkJctBotGradingCoeffGiven :1;
|
|
unsigned B2sidewallJctPotentialGiven :1;
|
|
unsigned B2bulkJctSideGradingCoeffGiven :1;
|
|
unsigned B2unitAreaJctCapGiven :1;
|
|
unsigned B2unitLengthSidewallJctCapGiven :1;
|
|
unsigned B2defaultWidthGiven :1;
|
|
unsigned B2deltaLengthGiven :1;
|
|
unsigned B2fNcoefGiven :1;
|
|
unsigned B2fNexpGiven :1;
|
|
unsigned B2typeGiven :1;
|
|
|
|
} B2model;
|
|
|
|
|
|
#ifndef NMOS
|
|
#define NMOS 1
|
|
#define PMOS -1
|
|
#endif /*NMOS*/
|
|
|
|
|
|
/* device parameters */
|
|
#define BSIM2_W 1
|
|
#define BSIM2_L 2
|
|
#define BSIM2_AS 3
|
|
#define BSIM2_AD 4
|
|
#define BSIM2_PS 5
|
|
#define BSIM2_PD 6
|
|
#define BSIM2_NRS 7
|
|
#define BSIM2_NRD 8
|
|
#define BSIM2_OFF 9
|
|
#define BSIM2_IC_VBS 10
|
|
#define BSIM2_IC_VDS 11
|
|
#define BSIM2_IC_VGS 12
|
|
#define BSIM2_IC 13
|
|
#define BSIM2_M 14
|
|
|
|
/* model parameters */
|
|
#define BSIM2_MOD_VFB0 101
|
|
#define BSIM2_MOD_VFBL 102
|
|
#define BSIM2_MOD_VFBW 103
|
|
#define BSIM2_MOD_PHI0 104
|
|
#define BSIM2_MOD_PHIL 105
|
|
#define BSIM2_MOD_PHIW 106
|
|
#define BSIM2_MOD_K10 107
|
|
#define BSIM2_MOD_K1L 108
|
|
#define BSIM2_MOD_K1W 109
|
|
#define BSIM2_MOD_K20 110
|
|
#define BSIM2_MOD_K2L 111
|
|
#define BSIM2_MOD_K2W 112
|
|
#define BSIM2_MOD_ETA00 113
|
|
#define BSIM2_MOD_ETA0L 114
|
|
#define BSIM2_MOD_ETA0W 115
|
|
#define BSIM2_MOD_ETAB0 116
|
|
#define BSIM2_MOD_ETABL 117
|
|
#define BSIM2_MOD_ETABW 118
|
|
#define BSIM2_MOD_DELTAL 119
|
|
#define BSIM2_MOD_DELTAW 120
|
|
#define BSIM2_MOD_MOB00 121
|
|
#define BSIM2_MOD_MOB0B0 122
|
|
#define BSIM2_MOD_MOB0BL 123
|
|
#define BSIM2_MOD_MOB0BW 124
|
|
#define BSIM2_MOD_MOBS00 125
|
|
#define BSIM2_MOD_MOBS0L 126
|
|
#define BSIM2_MOD_MOBS0W 127
|
|
#define BSIM2_MOD_MOBSB0 128
|
|
#define BSIM2_MOD_MOBSBL 129
|
|
#define BSIM2_MOD_MOBSBW 130
|
|
#define BSIM2_MOD_MOB200 131
|
|
#define BSIM2_MOD_MOB20L 132
|
|
#define BSIM2_MOD_MOB20W 133
|
|
#define BSIM2_MOD_MOB2B0 134
|
|
#define BSIM2_MOD_MOB2BL 135
|
|
#define BSIM2_MOD_MOB2BW 136
|
|
#define BSIM2_MOD_MOB2G0 137
|
|
#define BSIM2_MOD_MOB2GL 138
|
|
#define BSIM2_MOD_MOB2GW 139
|
|
#define BSIM2_MOD_MOB300 140
|
|
#define BSIM2_MOD_MOB30L 141
|
|
#define BSIM2_MOD_MOB30W 142
|
|
#define BSIM2_MOD_MOB3B0 143
|
|
#define BSIM2_MOD_MOB3BL 144
|
|
#define BSIM2_MOD_MOB3BW 145
|
|
#define BSIM2_MOD_MOB3G0 146
|
|
#define BSIM2_MOD_MOB3GL 147
|
|
#define BSIM2_MOD_MOB3GW 148
|
|
#define BSIM2_MOD_MOB400 149
|
|
#define BSIM2_MOD_MOB40L 150
|
|
#define BSIM2_MOD_MOB40W 151
|
|
#define BSIM2_MOD_MOB4B0 152
|
|
#define BSIM2_MOD_MOB4BL 153
|
|
#define BSIM2_MOD_MOB4BW 154
|
|
#define BSIM2_MOD_MOB4G0 155
|
|
#define BSIM2_MOD_MOB4GL 156
|
|
#define BSIM2_MOD_MOB4GW 157
|
|
#define BSIM2_MOD_UA00 158
|
|
#define BSIM2_MOD_UA0L 159
|
|
#define BSIM2_MOD_UA0W 160
|
|
#define BSIM2_MOD_UAB0 161
|
|
#define BSIM2_MOD_UABL 162
|
|
#define BSIM2_MOD_UABW 163
|
|
#define BSIM2_MOD_UB00 164
|
|
#define BSIM2_MOD_UB0L 165
|
|
#define BSIM2_MOD_UB0W 166
|
|
#define BSIM2_MOD_UBB0 167
|
|
#define BSIM2_MOD_UBBL 168
|
|
#define BSIM2_MOD_UBBW 169
|
|
#define BSIM2_MOD_U100 170
|
|
#define BSIM2_MOD_U10L 171
|
|
#define BSIM2_MOD_U10W 172
|
|
#define BSIM2_MOD_U1B0 173
|
|
#define BSIM2_MOD_U1BL 174
|
|
#define BSIM2_MOD_U1BW 175
|
|
#define BSIM2_MOD_U1D0 176
|
|
#define BSIM2_MOD_U1DL 177
|
|
#define BSIM2_MOD_U1DW 178
|
|
#define BSIM2_MOD_N00 179
|
|
#define BSIM2_MOD_N0L 180
|
|
#define BSIM2_MOD_N0W 181
|
|
#define BSIM2_MOD_NB0 182
|
|
#define BSIM2_MOD_NBL 183
|
|
#define BSIM2_MOD_NBW 184
|
|
#define BSIM2_MOD_ND0 185
|
|
#define BSIM2_MOD_NDL 186
|
|
#define BSIM2_MOD_NDW 187
|
|
#define BSIM2_MOD_VOF00 188
|
|
#define BSIM2_MOD_VOF0L 189
|
|
#define BSIM2_MOD_VOF0W 190
|
|
#define BSIM2_MOD_VOFB0 191
|
|
#define BSIM2_MOD_VOFBL 192
|
|
#define BSIM2_MOD_VOFBW 193
|
|
#define BSIM2_MOD_VOFD0 194
|
|
#define BSIM2_MOD_VOFDL 195
|
|
#define BSIM2_MOD_VOFDW 196
|
|
#define BSIM2_MOD_AI00 197
|
|
#define BSIM2_MOD_AI0L 198
|
|
#define BSIM2_MOD_AI0W 199
|
|
#define BSIM2_MOD_AIB0 200
|
|
#define BSIM2_MOD_AIBL 201
|
|
#define BSIM2_MOD_AIBW 202
|
|
#define BSIM2_MOD_BI00 203
|
|
#define BSIM2_MOD_BI0L 204
|
|
#define BSIM2_MOD_BI0W 205
|
|
#define BSIM2_MOD_BIB0 206
|
|
#define BSIM2_MOD_BIBL 207
|
|
#define BSIM2_MOD_BIBW 208
|
|
#define BSIM2_MOD_VGHIGH0 209
|
|
#define BSIM2_MOD_VGHIGHL 210
|
|
#define BSIM2_MOD_VGHIGHW 211
|
|
#define BSIM2_MOD_VGLOW0 212
|
|
#define BSIM2_MOD_VGLOWL 213
|
|
#define BSIM2_MOD_VGLOWW 214
|
|
#define BSIM2_MOD_TOX 215
|
|
#define BSIM2_MOD_TEMP 216
|
|
#define BSIM2_MOD_VDD 217
|
|
#define BSIM2_MOD_VGG 218
|
|
#define BSIM2_MOD_VBB 219
|
|
#define BSIM2_MOD_CGSO 220
|
|
#define BSIM2_MOD_CGDO 221
|
|
#define BSIM2_MOD_CGBO 222
|
|
#define BSIM2_MOD_XPART 223
|
|
#define BSIM2_MOD_RSH 224
|
|
#define BSIM2_MOD_JS 225
|
|
#define BSIM2_MOD_PB 226
|
|
#define BSIM2_MOD_MJ 227
|
|
#define BSIM2_MOD_PBSW 228
|
|
#define BSIM2_MOD_MJSW 229
|
|
#define BSIM2_MOD_CJ 230
|
|
#define BSIM2_MOD_CJSW 231
|
|
#define BSIM2_MOD_DEFWIDTH 232
|
|
#define BSIM2_MOD_DELLENGTH 233
|
|
#define BSIM2_MOD_NMOS 234
|
|
#define BSIM2_MOD_PMOS 235
|
|
|
|
#define BSIM2_MOD_KF 236
|
|
#define BSIM2_MOD_AF 237
|
|
|
|
/* device questions */
|
|
#define BSIM2_DNODE 241
|
|
#define BSIM2_GNODE 242
|
|
#define BSIM2_SNODE 243
|
|
#define BSIM2_BNODE 244
|
|
#define BSIM2_DNODEPRIME 245
|
|
#define BSIM2_SNODEPRIME 246
|
|
#define BSIM2_VBD 247
|
|
#define BSIM2_VBS 248
|
|
#define BSIM2_VGS 249
|
|
#define BSIM2_VDS 250
|
|
#define BSIM2_CD 251
|
|
#define BSIM2_CBS 252
|
|
#define BSIM2_CBD 253
|
|
#define BSIM2_GM 254
|
|
#define BSIM2_GDS 255
|
|
#define BSIM2_GMBS 256
|
|
#define BSIM2_GBD 257
|
|
#define BSIM2_GBS 258
|
|
#define BSIM2_QB 259
|
|
#define BSIM2_CQB 260
|
|
#define BSIM2_QG 261
|
|
#define BSIM2_CQG 262
|
|
#define BSIM2_QD 263
|
|
#define BSIM2_CQD 264
|
|
#define BSIM2_CGG 265
|
|
#define BSIM2_CGD 266
|
|
#define BSIM2_CGS 267
|
|
#define BSIM2_CBG 268
|
|
#define BSIM2_CAPBD 269
|
|
#define BSIM2_CQBD 270
|
|
#define BSIM2_CAPBS 271
|
|
#define BSIM2_CQBS 272
|
|
#define BSIM2_CDG 273
|
|
#define BSIM2_CDD 274
|
|
#define BSIM2_CDS 275
|
|
#define BSIM2_VON 276
|
|
#define BSIM2_QBS 277
|
|
#define BSIM2_QBD 278
|
|
#define BSIM2_SOURCECONDUCT 279
|
|
#define BSIM2_DRAINCONDUCT 280
|
|
|
|
/* model questions */
|
|
|
|
#include "bsim2ext.h"
|
|
|
|
extern void B2evaluate(double,double,double,B2instance*,B2model*,
|
|
double*,double*,double*, double*, double*, double*, double*,
|
|
double*, double*, double*, double*, double*, double*, double*,
|
|
double*, double*, double*, double*, CKTcircuit*);
|
|
|
|
|
|
#endif /*B2*/
|
|
|