📄 mos3defs.h
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1985 Thomas L. Quarles**********/#ifndef MOS3#define MOS3#include "ifsim.h"#include "cktdefs.h"#include "gendefs.h"#include "complex.h"#include "noisedef.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 MOS3states; /* index into state table for this device */ 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 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 /* distortion stuff *//* * naming convention: * x = vgs * y = vbs * z = vds * cdr = cdrain */#define MOS3NDCOEFFS 30#ifndef NODISTO double MOS3dCoeffs[MOS3NDCOEFFS];#else /* NODISTO */ double *MOS3dCoeffs;#endif /* NODISTO */#ifndef CONFIG#define capbs2 MOS3dCoeffs[0]#define capbs3 MOS3dCoeffs[1]#define capbd2 MOS3dCoeffs[2]#define capbd3 MOS3dCoeffs[3]#define gbs2 MOS3dCoeffs[4]#define gbs3 MOS3dCoeffs[5]#define gbd2 MOS3dCoeffs[6]#define gbd3 MOS3dCoeffs[7]#define capgb2 MOS3dCoeffs[8]#define capgb3 MOS3dCoeffs[9]#define cdr_x2 MOS3dCoeffs[10]#define cdr_y2 MOS3dCoeffs[11]#define cdr_z2 MOS3dCoeffs[12]#define cdr_xy MOS3dCoeffs[13]#define cdr_yz MOS3dCoeffs[14]#define cdr_xz MOS3dCoeffs[15]#define cdr_x3 MOS3dCoeffs[16]#define cdr_y3 MOS3dCoeffs[17]#define cdr_z3 MOS3dCoeffs[18]#define cdr_x2z MOS3dCoeffs[19]#define cdr_x2y MOS3dCoeffs[20]#define cdr_y2z MOS3dCoeffs[21]#define cdr_xy2 MOS3dCoeffs[22]#define cdr_xz2 MOS3dCoeffs[23]#define cdr_yz2 MOS3dCoeffs[24]#define cdr_xyz MOS3dCoeffs[25]#define capgs2 MOS3dCoeffs[26]#define capgs3 MOS3dCoeffs[27]#define capgd2 MOS3dCoeffs[28]#define capgd3 MOS3dCoeffs[29]#endif /* end distortion coeffs. *//* indices to the array of MOSFET(3) noise sources */#define MOS3RDNOIZ 0#define MOS3RSNOIZ 1#define MOS3IDNOIZ 2#define MOS3FLNOIZ 3#define MOS3TOTNOIZ 4#define MOS3NSRCS 5 /* the number of MOSFET(3) noise sources */#ifndef NONOISE double MOS3nVar[NSTATVARS][MOS3NSRCS];#else /* NONOISE */ double **MOS3nVar;#endif /* NONOISE */} MOS3instance ;#define MOS3vbd MOS3states+ 0#define MOS3vbs MOS3states+ 1#define MOS3vgs MOS3states+ 2#define MOS3vds MOS3states+ 3/* meyer capacitances */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -