📄 mos3defs.h
字号:
/* * Copyright (c) 1985 Thomas L. Quarles */#ifndef MOS3#define MOS3 "MOS3defs.h $Revision: 1.1 $ on $Date: 91/04/02 11:26:30 $ "#include "IFsim.h"#include "CKTdefs.h"#include "GENdefs.h"#include "complex.h" /* declarations for level 3 MOSFETs *//* information needed for each instance */typedef struct sMOS3instance { struct sMOS3model *MOS3modPtr; /* backpointer to model */ struct sMOS3instance *MOS3nextInstance; /* pointer to next instance of *current model*/ IFuid MOS3name; /* pointer to character string naming this instance */ int MOS3dNode; /* number of the gate node of the mosfet */ int MOS3gNode; /* number of the gate node of the mosfet */ int MOS3sNode; /* number of the source node of the mosfet */ int MOS3bNode; /* number of the bulk node of the mosfet */ int MOS3dNodePrime; /* number of the internal drain node of the mosfet */ int MOS3sNodePrime; /* number of the internal source node of the mosfet */ double MOS3l; /* the length of the channel region */ double MOS3w; /* the width of the channel region */ double MOS3drainArea; /* the area of the drain diffusion */ double MOS3sourceArea; /* the area of the source diffusion */ double MOS3drainSquares; /* the length of the drain in squares */ double MOS3sourceSquares; /* the length of the source in squares */ double MOS3drainPerimiter; double MOS3sourcePerimiter; double MOS3sourceConductance; /*conductance of source(or 0):set in setup*/ double MOS3drainConductance; /*conductance of drain(or 0):set in setup*/ double MOS3temp; /* operating temperature of this instance */ double MOS3tTransconductance; /* temperature corrected transconductance*/ double MOS3tSurfMob; /* temperature corrected surface mobility */ double MOS3tPhi; /* temperature corrected Phi */ double MOS3tVto; /* temperature corrected Vto */ double MOS3tSatCur; /* temperature corrected saturation Cur. */ double MOS3tSatCurDens; /* temperature corrected saturation Cur. density*/ double MOS3tCbd; /* temperature corrected B-D Capacitance */ double MOS3tCbs; /* temperature corrected B-S Capacitance */ double MOS3tCj; /* temperature corrected Bulk bottom Capacitance */ double MOS3tCjsw; /* temperature corrected Bulk side Capacitance */ double MOS3tBulkPot; /* temperature corrected Bulk potential */ double MOS3tDepCap; /* temperature adjusted transition point in */ /* the cureve matching Fc * Vj */ double MOS3tVbi; /* temperature adjusted Vbi */ double MOS3icVBS; /* initial condition B-S voltage */ double MOS3icVDS; /* initial condition D-S voltage */ double MOS3icVGS; /* initial condition G-S voltage */ double MOS3von; double MOS3vdsat; double MOS3sourceVcrit; /* vcrit for pos. vds */ double MOS3drainVcrit; /* vcrit for neg. vds */ double MOS3cd; double MOS3cbs; double MOS3cbd; double MOS3gmbs; double MOS3gm; double MOS3gds; double MOS3gbd; double MOS3gbs; double MOS3capbd; double MOS3capbs; double MOS3Cbd; double MOS3Cbdsw; double MOS3Cbs; double MOS3Cbssw; double MOS3f2d; double MOS3f3d; double MOS3f4d; double MOS3f2s; double MOS3f3s; double MOS3f4s; int MOS3mode; /* device mode : 1 = normal, -1 = inverse */ unsigned MOS3off :1;/* non-zero to indicate device is off for dc analysis*/ unsigned MOS3tempGiven :1; /* instance temperature specified */ unsigned MOS3lGiven :1; unsigned MOS3wGiven :1; unsigned MOS3drainAreaGiven :1; unsigned MOS3sourceAreaGiven :1; unsigned MOS3drainSquaresGiven :1; unsigned MOS3sourceSquaresGiven :1; unsigned MOS3drainPerimiterGiven :1; unsigned MOS3sourcePerimiterGiven :1; unsigned MOS3dNodePrimeSet :1; unsigned MOS3sNodePrimeSet :1; unsigned MOS3icVBSGiven :1; unsigned MOS3icVDSGiven :1; unsigned MOS3icVGSGiven :1; unsigned MOS3vonGiven :1; unsigned MOS3vdsatGiven :1; unsigned MOS3modeGiven :1; double *MOS3DdPtr; /* pointer to sparse matrix element at * (Drain node,drain node) */ double *MOS3GgPtr; /* pointer to sparse matrix element at * (gate node,gate node) */ double *MOS3SsPtr; /* pointer to sparse matrix element at * (source node,source node) */ double *MOS3BbPtr; /* pointer to sparse matrix element at * (bulk node,bulk node) */ double *MOS3DPdpPtr; /* pointer to sparse matrix element at * (drain prime node,drain prime node) */ double *MOS3SPspPtr; /* pointer to sparse matrix element at * (source prime node,source prime node) */ double *MOS3DdpPtr; /* pointer to sparse matrix element at * (drain node,drain prime node) */ double *MOS3GbPtr; /* pointer to sparse matrix element at * (gate node,bulk node) */ double *MOS3GdpPtr; /* pointer to sparse matrix element at * (gate node,drain prime node) */ double *MOS3GspPtr; /* pointer to sparse matrix element at * (gate node,source prime node) */ double *MOS3SspPtr; /* pointer to sparse matrix element at * (source node,source prime node) */ double *MOS3BdpPtr; /* pointer to sparse matrix element at * (bulk node,drain prime node) */ double *MOS3BspPtr; /* pointer to sparse matrix element at * (bulk node,source prime node) */ double *MOS3DPspPtr; /* pointer to sparse matrix element at * (drain prime node,source prime node) */ double *MOS3DPdPtr; /* pointer to sparse matrix element at * (drain prime node,drain node) */ double *MOS3BgPtr; /* pointer to sparse matrix element at * (bulk node,gate node) */ double *MOS3DPgPtr; /* pointer to sparse matrix element at * (drain prime node,gate node) */ double *MOS3SPgPtr; /* pointer to sparse matrix element at * (source prime node,gate node) */ double *MOS3SPsPtr; /* pointer to sparse matrix element at * (source prime node,source node) */ double *MOS3DPbPtr; /* pointer to sparse matrix element at * (drain prime node,bulk node) */ double *MOS3SPbPtr; /* pointer to sparse matrix element at * (source prime node,bulk node) */ double *MOS3SPdpPtr; /* pointer to sparse matrix element at * (source prime node,drain prime node) */ int MOS3states; /* index into state table for this device */#define MOS3vbd MOS3states+ 0#define MOS3vbs MOS3states+ 1#define MOS3vgs MOS3states+ 2#define MOS3vds MOS3states+ 3/* meyer capacitances */#define MOS3capgs MOS3states+ 4 /* gate-source capacitor value */#define MOS3qgs MOS3states+ 5 /* gate-source capacitor charge */#define MOS3cqgs MOS3states+ 6 /* gate-source capacitor current */#define MOS3capgd MOS3states+ 7 /* gate-drain capacitor value */#define MOS3qgd MOS3states+ 8 /* gate-drain capacitor charge */#define MOS3cqgd MOS3states+ 9 /* gate-drain capacitor current */#define MOS3capgb MOS3states+ 10/* gate-bulk capacitor value */#define MOS3qgb MOS3states+ 11 /* gate-bulk capacitor charge */#define MOS3cqgb MOS3states+ 12 /* gate-bulk capacitor current *//* diode capacitances */#define MOS3qbd MOS3states+ 13 /* bulk-drain capacitor charge */#define MOS3cqbd MOS3states+ 14 /* bulk-drain capacitor current */#define MOS3qbs MOS3states+ 15 /* bulk-source capacitor charge */#define MOS3cqbs MOS3states+ 16 /* bulk-source capacitor current */ #define MOS3NUMSTATES 17#define MOS3sensxpgs MOS3states+17 /* charge sensitivities and their derivatives +18 for the derivatives - pointer to the beginning of the array */#define MOS3sensxpgd MOS3states+19#define MOS3sensxpgb MOS3states+21#define MOS3sensxpbs MOS3states+23#define MOS3sensxpbd MOS3states+25#define MOS3numSenStates 10 int MOS3senParmNo; /* parameter # for sensitivity use; set equal to 0 if neither length nor width of the mosfet is a design parameter */ unsigned MOS3sens_l :1; /* field which indicates whether length of the mosfet is a design parameter or not */ unsigned MOS3sens_w :1; /* field which indicates whether width of the mosfet is a design parameter or not */ unsigned MOS3senPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ double MOS3cgs; double MOS3cgd; double MOS3cgb; double *MOS3sens;#define MOS3senGdpr MOS3sens#define MOS3senGspr MOS3sens + 1#define MOS3senCgs MOS3sens + 2 /* contains pertured values of cgs */#define MOS3senCgd MOS3sens + 8 /* contains perturbed values of cgd*/#define MOS3senCgb MOS3sens + 14 /* contains perturbed values of cgb*/#define MOS3senCbd MOS3sens + 20 /* contains perturbed values of cbd*/#define MOS3senCbs MOS3sens + 26 /* contains perturbed values of cbs*/#define MOS3senGds MOS3sens + 32 /* contains perturbed values of gds*/#define MOS3senGbs MOS3sens + 38 /* contains perturbed values of gbs*/#define MOS3senGbd MOS3sens + 44 /* contains perturbed values of gbd*/#define MOS3senGm MOS3sens + 50 /* contains perturbed values of gm*/#define MOS3senGmbs MOS3sens + 56 /* contains perturbed values of gmbs*/#define MOS3dphigs_dl MOS3sens + 62#define MOS3dphigd_dl MOS3sens + 63#define MOS3dphigb_dl MOS3sens + 64#define MOS3dphibs_dl MOS3sens + 65#define MOS3dphibd_dl MOS3sens + 66#define MOS3dphigs_dw MOS3sens + 67#define MOS3dphigd_dw MOS3sens + 68#define MOS3dphigb_dw MOS3sens + 69#define MOS3dphibs_dw MOS3sens + 70#define MOS3dphibd_dw MOS3sens + 71} MOS3instance ;/* per model data */ /* NOTE: parameters marked 'input - use xxxx' are paramters for * which a temperature correction is applied in MOS3temp, thus * the MOS3xxxx value in the per-instance structure should be used * instead in all calculations */typedef struct sMOS3model { /* model structure for a resistor */ int MOS3modType; /* type index of this device type */ struct sMOS3model *MOS3nextModel; /* pointer to next possible model *in linked list */ MOS3instance * MOS3instances; /* pointer to list of instances * that have this model */ IFuid MOS3modName; /* pointer to character string naming this model */ int MOS3type; /* device type : 1 = nmos, -1 = pmos */ double MOS3tnom; /* temperature at which parameters measured */ double MOS3latDiff; double MOS3jctSatCurDensity; /* input - use tSatCurDens*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -