📄 mos2defs.h
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1985 Thomas L. Quarles**********/#ifndef MOS2#define MOS2#include "ifsim.h"#include "cktdefs.h"#include "gendefs.h"#include "complex.h"#include "noisedef.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 MOS2owner; /* number of owner process */ int MOS2states; /* index into state table for this device */ 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 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; /* distortion stuff *//* * naming convention: * x = vgs * y = vbs * z = vds * cdr = cdrain */#define MOS2NDCOEFFS 30#ifndef NODISTO double MOS2dCoeffs[MOS2NDCOEFFS];#else /* NODISTO */ double *MOS2dCoeffs;#endif /* NODISTO */#ifndef CONFIG#define capbs2 MOS2dCoeffs[0]#define capbs3 MOS2dCoeffs[1]#define capbd2 MOS2dCoeffs[2]#define capbd3 MOS2dCoeffs[3]#define gbs2 MOS2dCoeffs[4]#define gbs3 MOS2dCoeffs[5]#define gbd2 MOS2dCoeffs[6]#define gbd3 MOS2dCoeffs[7]#define capgb2 MOS2dCoeffs[8]#define capgb3 MOS2dCoeffs[9]#define cdr_x2 MOS2dCoeffs[10]#define cdr_y2 MOS2dCoeffs[11]#define cdr_z2 MOS2dCoeffs[12]#define cdr_xy MOS2dCoeffs[13]#define cdr_yz MOS2dCoeffs[14]#define cdr_xz MOS2dCoeffs[15]#define cdr_x3 MOS2dCoeffs[16]#define cdr_y3 MOS2dCoeffs[17]#define cdr_z3 MOS2dCoeffs[18]#define cdr_x2z MOS2dCoeffs[19]#define cdr_x2y MOS2dCoeffs[20]#define cdr_y2z MOS2dCoeffs[21]#define cdr_xy2 MOS2dCoeffs[22]#define cdr_xz2 MOS2dCoeffs[23]#define cdr_yz2 MOS2dCoeffs[24]#define cdr_xyz MOS2dCoeffs[25]#define capgs2 MOS2dCoeffs[26]#define capgs3 MOS2dCoeffs[27]#define capgd2 MOS2dCoeffs[28]#define capgd3 MOS2dCoeffs[29] /* end distortion coeffs. */#endif/* indices to the array of MOSFET(2) noise sources */#define MOS2RDNOIZ 0#define MOS2RSNOIZ 1#define MOS2IDNOIZ 2#define MOS2FLNOIZ 3#define MOS2TOTNOIZ 4#define MOS2NSRCS 5 /* the number of MOS2FET noise sources */#ifndef NONOISE double MOS2nVar[NSTATVARS][MOS2NSRCS];#else /* NONOISE */ double **MOS2nVar;#endif /* NONOISE */ } MOS2instance ;#define MOS2vbd MOS2states+ 0 /* bulk-drain voltage */#define MOS2vbs MOS2states+ 1 /* bulk-source voltage */#define MOS2vgs MOS2states+ 2 /* gate-source voltage */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -