📄 mos2defs.h
字号:
/* * Copyright (c) 1985 Thomas L. Quarles */#ifndef MOS2#define MOS2 "MOS2defs.h $Revision: 1.1 $ on $Date: 91/04/02 11:26:28 $"#include "IFsim.h"#include "CKTdefs.h"#include "GENdefs.h"#include "complex.h"/* declarations for level 2 MOSFETs *//* information needed for each instance */typedef struct sMOS2instance { struct sMOS2model *MOS2modPtr; /* backpointer to model */ struct sMOS2instance *MOS2nextInstance; /* pointer to next instance of *current model*/ IFuid MOS2name; /* pointer to character string naming this instance */ int MOS2dNode; /* number of the gate node of the mosfet */ int MOS2gNode; /* number of the gate node of the mosfet */ int MOS2sNode; /* number of the source node of the mosfet */ int MOS2bNode; /* number of the bulk node of the mosfet */ int MOS2dNodePrime; /* number of the internal drain node of the mosfet */ int MOS2sNodePrime; /* number of the internal source node of the mosfet */ int MOS2mode; /* device mode : 1 = normal, -1 = inverse */ unsigned MOS2off :1;/* non-zero to indicate device is off for dc analysis*/ unsigned MOS2lGiven :1; unsigned MOS2wGiven :1; unsigned MOS2drainAreaGiven :1; unsigned MOS2sourceAreaGiven :1; unsigned MOS2drainSquaresGiven :1; unsigned MOS2sourceSquaresGiven :1; unsigned MOS2drainPerimiterGiven :1; unsigned MOS2sourcePerimiterGiven :1; unsigned MOS2dNodePrimeSet :1; unsigned MOS2sNodePrimeSet :1; unsigned MOS2icVBSGiven :1; unsigned MOS2icVDSGiven :1; unsigned MOS2icVGSGiven :1; unsigned MOS2vonGiven :1; unsigned MOS2vdsatGiven :1; unsigned MOS2tempGiven :1; /* per-instance temperature specified? */ unsigned MOS2sens_l :1; /* field which indicates whether length of the mosfet is a design parameter or not */ unsigned MOS2sens_w :1; /* field which indicates whether width of the mosfet is a design parameter or not */ unsigned MOS2senPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ double *MOS2DdPtr; /* pointer to sparse matrix element at * (Drain node,drain node) */ double *MOS2GgPtr; /* pointer to sparse matrix element at * (gate node,gate node) */ double *MOS2SsPtr; /* pointer to sparse matrix element at * (source node,source node) */ double *MOS2BbPtr; /* pointer to sparse matrix element at * (bulk node,bulk node) */ double *MOS2DPdpPtr; /* pointer to sparse matrix element at * (drain prime node,drain prime node) */ double *MOS2SPspPtr; /* pointer to sparse matrix element at * (source prime node,source prime node) */ double *MOS2DdpPtr; /* pointer to sparse matrix element at * (drain node,drain prime node) */ double *MOS2GbPtr; /* pointer to sparse matrix element at * (gate node,bulk node) */ double *MOS2GdpPtr; /* pointer to sparse matrix element at * (gate node,drain prime node) */ double *MOS2GspPtr; /* pointer to sparse matrix element at * (gate node,source prime node) */ double *MOS2SspPtr; /* pointer to sparse matrix element at * (source node,source prime node) */ double *MOS2BdpPtr; /* pointer to sparse matrix element at * (bulk node,drain prime node) */ double *MOS2BspPtr; /* pointer to sparse matrix element at * (bulk node,source prime node) */ double *MOS2DPspPtr; /* pointer to sparse matrix element at * (drain prime node,source prime node) */ double *MOS2DPdPtr; /* pointer to sparse matrix element at * (drain prime node,drain node) */ double *MOS2BgPtr; /* pointer to sparse matrix element at * (bulk node,gate node) */ double *MOS2DPgPtr; /* pointer to sparse matrix element at * (drain prime node,gate node) */ double *MOS2SPgPtr; /* pointer to sparse matrix element at * (source prime node,gate node) */ double *MOS2SPsPtr; /* pointer to sparse matrix element at * (source prime node,source node) */ double *MOS2DPbPtr; /* pointer to sparse matrix element at * (drain prime node,bulk node) */ double *MOS2SPbPtr; /* pointer to sparse matrix element at * (source prime node,bulk node) */ double *MOS2SPdpPtr; /* pointer to sparse matrix element at * (source prime node,drain prime node) */ int MOS2states; /* index into state table for this device */#define MOS2vbd MOS2states+ 0 /* bulk-drain voltage */#define MOS2vbs MOS2states+ 1 /* bulk-source voltage */#define MOS2vgs MOS2states+ 2 /* gate-source voltage */#define MOS2vds MOS2states+ 3 /* drain-source voltage */#define MOS2capgs MOS2states+4 /* gate-source capacitor value */#define MOS2qgs MOS2states+ 5 /* gate-source capacitor charge */#define MOS2cqgs MOS2states+ 6 /* gate-source capacitor current */#define MOS2capgd MOS2states+ 7 /* gate-drain capacitor value */#define MOS2qgd MOS2states+ 8 /* gate-drain capacitor charge */#define MOS2cqgd MOS2states+ 9 /* gate-drain capacitor current */#define MOS2capgb MOS2states+10 /* gate-bulk capacitor value */#define MOS2qgb MOS2states+ 11 /* gate-bulk capacitor charge */#define MOS2cqgb MOS2states+ 12 /* gate-bulk capacitor current */#define MOS2qbd MOS2states+ 13 /* bulk-drain capacitor charge */#define MOS2cqbd MOS2states+ 14 /* bulk-drain capacitor current */#define MOS2qbs MOS2states+ 15 /* bulk-source capacitor charge */#define MOS2cqbs MOS2states+ 16 /* bulk-source capacitor current */#define MOS2numStates 17#define MOS2sensxpgs MOS2states+17 /* charge sensitivities and their derivatives +18 for the derivatives - pointer to the beginning of the array */#define MOS2sensxpgd MOS2states+19#define MOS2sensxpgb MOS2states+21#define MOS2sensxpbs MOS2states+23#define MOS2sensxpbd MOS2states+25#define MOS2numSenStates 10 int MOS2senParmNo; /* parameter # for sensitivity use; set equal to 0 if neither length nor width of the mosfet is a design parameter */ double MOS2cgs; double MOS2cgd; double MOS2cgb; double *MOS2sens;#define MOS2senCgs MOS2sens /* contains pertured values of cgs */#define MOS2senCgd MOS2sens + 6 /* contains perturbed values of cgd*/#define MOS2senCgb MOS2sens + 12 /* contains perturbed values of cgb*/#define MOS2senCbd MOS2sens + 18 /* contains perturbed values of cbd*/#define MOS2senCbs MOS2sens + 24 /* contains perturbed values of cbs*/#define MOS2senGds MOS2sens + 30 /* contains perturbed values of gds*/#define MOS2senGbs MOS2sens + 36 /* contains perturbed values of gbs*/#define MOS2senGbd MOS2sens + 42 /* contains perturbed values of gbd*/#define MOS2senGm MOS2sens + 48 /* contains perturbed values of gm*/#define MOS2senGmbs MOS2sens + 54 /* contains perturbed values of gmbs*/#define MOS2dphigs_dl MOS2sens + 60#define MOS2dphigd_dl MOS2sens + 61#define MOS2dphigb_dl MOS2sens + 62#define MOS2dphibs_dl MOS2sens + 63#define MOS2dphibd_dl MOS2sens + 64#define MOS2dphigs_dw MOS2sens + 65#define MOS2dphigd_dw MOS2sens + 66#define MOS2dphigb_dw MOS2sens + 67#define MOS2dphibs_dw MOS2sens + 68#define MOS2dphibd_dw MOS2sens + 69 double MOS2temp; /* temperature at which this instance operates */ double MOS2tTransconductance; /* temperature corrected transconductance*/ double MOS2tSurfMob; /* temperature corrected surface mobility */ double MOS2tPhi; /* temperature corrected Phi */ double MOS2tVto; /* temperature corrected Vto */ double MOS2tSatCur; /* temperature corrected saturation Cur. */ double MOS2tSatCurDens; /* temperature corrected saturation Cur. density*/ double MOS2tCbd; /* temperature corrected B-D Capacitance */ double MOS2tCbs; /* temperature corrected B-S Capacitance */ double MOS2tCj; /* temperature corrected Bulk bottom Capacitance */ double MOS2tCjsw; /* temperature corrected Bulk side Capacitance */ double MOS2tBulkPot; /* temperature corrected Bulk potential */ double MOS2tDepCap; /* temperature adjusted transition point in */ /* the cureve matching Fc * Vj */ double MOS2tVbi; /* temperature adjusted Vbi */ double MOS2l; /* the length of the channel region */ double MOS2w; /* the width of the channel region */ double MOS2drainArea; /* the area of the drain diffusion */ double MOS2sourceArea; /* the area of the source diffusion */ double MOS2drainSquares; /* the length of the drain in squares */ double MOS2sourceSquares; /* the length of the source in squares */ double MOS2drainPerimiter; double MOS2sourcePerimiter; double MOS2sourceConductance; /*conductance of source(or 0):set in setup*/ double MOS2drainConductance; /*conductance of drain(or 0):set in setup*/ double MOS2icVBS; /* initial condition B-S voltage */ double MOS2icVDS; /* initial condition D-S voltage */ double MOS2icVGS; /* initial condition G-S voltage */ double MOS2von; double MOS2vdsat; double MOS2sourceVcrit; /* Vcrit for pos. vds */ double MOS2drainVcrit; /* Vcrit for pos. vds */ double MOS2cd; double MOS2cbs; double MOS2cbd; double MOS2gmbs; double MOS2gm; double MOS2gds; double MOS2gbd; double MOS2gbs; double MOS2capbd; double MOS2capbs; double MOS2Cbd; double MOS2Cbdsw; double MOS2Cbs; double MOS2Cbssw; double MOS2f2d; double MOS2f3d; double MOS2f4d; double MOS2f2s; double MOS2f3s; double MOS2f4s;} MOS2instance ;/* per model data */ /* NOTE: parameters makred 'input - use xxxx' are parameters for * which a temperature correction is applied in MOS2temp, thus * the MOS3xxxx value in the per-instance structure should be used * instead in all calculations */typedef struct sMOS2model { /* model structure for a resistor */ int MOS2modType; /* type index of this device type */ struct sMOS2model *MOS2nextModel; /* pointer to next possible model *in linked list */ MOS2instance * MOS2instances; /* pointer to list of instances * that have this model */ IFuid MOS2modName; /* pointer to character string naming this model */ int MOS2type; /* device type : 1 = nmos, -1 = pmos */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -