📄 bsimdefs.h
字号:
/* * Copyright (c) 1985 Hong June Park, Thomas L. Quarles */#ifndef BSIM#define BSIM "BSIMdefs.h $Revision: 1.1 $ on $Date: 91/04/02 11:25:12 $ "#include "IFsim.h"#include "GENdefs.h"#include "CKTdefs.h"#include "complex.h" /* declarations for BSIM MOSFETs *//* information needed for each instance */typedef struct sBSIMinstance { struct sBSIMmodel *BSIMmodPtr; /* pointer to model */ struct sBSIMinstance *BSIMnextInstance; /* pointer to next instance of *current model*/ IFuid BSIMname; /* pointer to character string naming this instance */ int BSIMdNode; /* number of the gate node of the mosfet */ int BSIMgNode; /* number of the gate node of the mosfet */ int BSIMsNode; /* number of the source node of the mosfet */ int BSIMbNode; /* number of the bulk node of the mosfet */ int BSIMdNodePrime; /* number of the internal drain node of the mosfet */ int BSIMsNodePrime; /* number of the internal source node of the mosfet */ double BSIMl; /* the length of the channel region */ double BSIMw; /* the width of the channel region */ double BSIMdrainArea; /* the area of the drain diffusion */ double BSIMsourceArea; /* the area of the source diffusion */ double BSIMdrainSquares; /* the length of the drain in squares */ double BSIMsourceSquares; /* the length of the source in squares */ double BSIMdrainPerimeter; double BSIMsourcePerimeter; double BSIMsourceConductance; /*conductance of source(or 0):set in setup*/ double BSIMdrainConductance; /*conductance of drain(or 0):set in setup*/ double BSIMicVBS; /* initial condition B-S voltage */ double BSIMicVDS; /* initial condition D-S voltage */ double BSIMicVGS; /* initial condition G-S voltage */ double BSIMvon; double BSIMvdsat; int BSIMoff; /* non-zero to indicate device is off for dc analysis*/ int BSIMmode; /* device mode : 1 = normal, -1 = inverse */ double BSIMvfb; /* flat band voltage at given L and W */ double BSIMphi; /* surface potential at strong inversion */ double BSIMK1; /* bulk effect coefficient 1 */ double BSIMK2; /* bulk effect coefficient 2 */ double BSIMeta; /* drain induced barrier lowering */ double BSIMetaB; /* Vbs dependence of Eta */ double BSIMetaD; /* Vds dependence of Eta */ double BSIMbetaZero; /* Beta at vds = 0 and vgs = Vth */ double BSIMbetaZeroB; /* Vbs dependence of BetaZero */ double BSIMbetaVdd; /* Beta at vds=Vdd and vgs=Vth */ double BSIMbetaVddB; /* Vbs dependence of BetaVdd */ double BSIMbetaVddD; /* Vds dependence of BetaVdd */ double BSIMugs; /* Mobility degradation due to gate field*/ double BSIMugsB; /* Vbs dependence of Ugs */ double BSIMuds; /* Drift Velocity Saturation due to Vds */ double BSIMudsB; /* Vbs dependence of Uds */ double BSIMudsD; /* Vds dependence of Uds */ double BSIMsubthSlope; /* slope of subthreshold current with Vgs*/ double BSIMsubthSlopeB; /* Vbs dependence of Subthreshold Slope */ double BSIMsubthSlopeD; /* Vds dependence of Subthreshold Slope */ double BSIMGDoverlapCap;/* Gate Drain Overlap Capacitance */ double BSIMGSoverlapCap;/* Gate Source Overlap Capacitance */ double BSIMGBoverlapCap;/* Gate Bulk Overlap Capacitance */ double BSIMvt0; double BSIMvdd; /* Supply Voltage */ double BSIMtemp; double BSIMoxideThickness; double BSIMchannelChargePartitionFlag; unsigned BSIMlGiven :1; unsigned BSIMwGiven :1; unsigned BSIMdrainAreaGiven :1; unsigned BSIMsourceAreaGiven :1; unsigned BSIMdrainSquaresGiven :1; unsigned BSIMsourceSquaresGiven :1; unsigned BSIMdrainPerimeterGiven :1; unsigned BSIMsourcePerimeterGiven :1; unsigned BSIMdNodePrimeSet :1; unsigned BSIMsNodePrimeSet :1; unsigned BSIMicVBSGiven :1; unsigned BSIMicVDSGiven :1; unsigned BSIMicVGSGiven :1; unsigned BSIMvonGiven :1; unsigned BSIMvdsatGiven :1; double *BSIMDdPtr; /* pointer to sparse matrix element at * (Drain node,drain node) */ double *BSIMGgPtr; /* pointer to sparse matrix element at * (gate node,gate node) */ double *BSIMSsPtr; /* pointer to sparse matrix element at * (source node,source node) */ double *BSIMBbPtr; /* pointer to sparse matrix element at * (bulk node,bulk node) */ double *BSIMDPdpPtr; /* pointer to sparse matrix element at * (drain prime node,drain prime node) */ double *BSIMSPspPtr; /* pointer to sparse matrix element at * (source prime node,source prime node) */ double *BSIMDdpPtr; /* pointer to sparse matrix element at * (drain node,drain prime node) */ double *BSIMGbPtr; /* pointer to sparse matrix element at * (gate node,bulk node) */ double *BSIMGdpPtr; /* pointer to sparse matrix element at * (gate node,drain prime node) */ double *BSIMGspPtr; /* pointer to sparse matrix element at * (gate node,source prime node) */ double *BSIMSspPtr; /* pointer to sparse matrix element at * (source node,source prime node) */ double *BSIMBdpPtr; /* pointer to sparse matrix element at * (bulk node,drain prime node) */ double *BSIMBspPtr; /* pointer to sparse matrix element at * (bulk node,source prime node) */ double *BSIMDPspPtr; /* pointer to sparse matrix element at * (drain prime node,source prime node) */ double *BSIMDPdPtr; /* pointer to sparse matrix element at * (drain prime node,drain node) */ double *BSIMBgPtr; /* pointer to sparse matrix element at * (bulk node,gate node) */ double *BSIMDPgPtr; /* pointer to sparse matrix element at * (drain prime node,gate node) */ double *BSIMSPgPtr; /* pointer to sparse matrix element at * (source prime node,gate node) */ double *BSIMSPsPtr; /* pointer to sparse matrix element at * (source prime node,source node) */ double *BSIMDPbPtr; /* pointer to sparse matrix element at * (drain prime node,bulk node) */ double *BSIMSPbPtr; /* pointer to sparse matrix element at * (source prime node,bulk node) */ double *BSIMSPdpPtr; /* pointer to sparse matrix element at * (source prime node,drain prime node) */ int BSIMstates; /* index into state table for this device */#define BSIMvbd BSIMstates+ 0#define BSIMvbs BSIMstates+ 1#define BSIMvgs BSIMstates+ 2#define BSIMvds BSIMstates+ 3#define BSIMcd BSIMstates+ 4#define BSIMid BSIMstates+ 4#define BSIMcbs BSIMstates+ 5#define BSIMibs BSIMstates+ 5#define BSIMcbd BSIMstates+ 6#define BSIMibd BSIMstates+ 6#define BSIMgm BSIMstates+ 7#define BSIMgds BSIMstates+ 8#define BSIMgmbs BSIMstates+ 9#define BSIMgbd BSIMstates+ 10#define BSIMgbs BSIMstates+ 11#define BSIMqb BSIMstates+ 12#define BSIMcqb BSIMstates+ 13#define BSIMiqb BSIMstates+ 13#define BSIMqg BSIMstates+ 14#define BSIMcqg BSIMstates+ 15#define BSIMiqg BSIMstates+ 15#define BSIMqd BSIMstates+ 16#define BSIMcqd BSIMstates+ 17#define BSIMiqd BSIMstates+ 17#define BSIMcggb BSIMstates+ 18#define BSIMcgdb BSIMstates+ 19#define BSIMcgsb BSIMstates+ 20#define BSIMcbgb BSIMstates+ 21#define BSIMcbdb BSIMstates+ 22#define BSIMcbsb BSIMstates+ 23#define BSIMcapbd BSIMstates+ 24#define BSIMiqbd BSIMstates+ 25#define BSIMcqbd BSIMstates+ 25#define BSIMcapbs BSIMstates+ 26#define BSIMiqbs BSIMstates+ 27#define BSIMcqbs BSIMstates+ 27#define BSIMcdgb BSIMstates+ 28#define BSIMcddb BSIMstates+ 29#define BSIMcdsb BSIMstates+ 30#define BSIMvono BSIMstates+ 31#define BSIMvdsato BSIMstates+ 32#define BSIMqbs BSIMstates+ 33#define BSIMqbd BSIMstates+ 34#define BSIMnumStates 35 } BSIMinstance ;/* per model data */typedef struct sBSIMmodel { /* model structure for a resistor */ int BSIMmodType; /* type index of this device type */ struct sBSIMmodel *BSIMnextModel; /* pointer to next possible model *in linked list */ BSIMinstance * BSIMinstances; /* pointer to list of instances * that have this model */ IFuid BSIMmodName; /* pointer to character string naming this model */ int BSIMtype; /* device type : 1 = nmos, -1 = pmos */ double BSIMvfb0; double BSIMvfbL; double BSIMvfbW; double BSIMphi0; double BSIMphiL; double BSIMphiW; double BSIMK10; double BSIMK1L; double BSIMK1W; double BSIMK20; double BSIMK2L; double BSIMK2W; double BSIMeta0; double BSIMetaL; double BSIMetaW; double BSIMetaB0; double BSIMetaBl; double BSIMetaBw; double BSIMetaD0; double BSIMetaDl; double BSIMetaDw; double BSIMdeltaL; double BSIMdeltaW; double BSIMmobZero; double BSIMmobZeroB0; double BSIMmobZeroBl; double BSIMmobZeroBw ; double BSIMmobVdd0; double BSIMmobVddl; double BSIMmobVddw; double BSIMmobVddB0; double BSIMmobVddBl; double BSIMmobVddBw; double BSIMmobVddD0; double BSIMmobVddDl; double BSIMmobVddDw; double BSIMugs0; double BSIMugsL; double BSIMugsW; double BSIMugsB0; double BSIMugsBL; double BSIMugsBW; double BSIMuds0; double BSIMudsL; double BSIMudsW; double BSIMudsB0; double BSIMudsBL; double BSIMudsBW; double BSIMudsD0; double BSIMudsDL; double BSIMudsDW; double BSIMsubthSlope0; double BSIMsubthSlopeL; double BSIMsubthSlopeW; double BSIMsubthSlopeB0; double BSIMsubthSlopeBL; double BSIMsubthSlopeBW; double BSIMsubthSlopeD0; double BSIMsubthSlopeDL; double BSIMsubthSlopeDW; double BSIMoxideThickness; /* unit: micron */ double BSIMCox; /* unit: F/cm**2 */ double BSIMtemp; double BSIMvdd; double BSIMgateSourceOverlapCap; double BSIMgateDrainOverlapCap; double BSIMgateBulkOverlapCap; double BSIMchannelChargePartitionFlag; double BSIMsheetResistance; double BSIMjctSatCurDensity; double BSIMbulkJctPotential; double BSIMbulkJctBotGradingCoeff; double BSIMbulkJctSideGradingCoeff; double BSIMsidewallJctPotential; double BSIMunitAreaJctCap; double BSIMunitLengthSidewallJctCap; double BSIMdefaultWidth;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -