📄 mos1defs.h
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1985 Thomas L. Quarles**********/#ifndef MOS1#define MOS1#include "ifsim.h"#include "cktdefs.h"#include "gendefs.h"#include "complex.h"#include "noisedef.h"/* declarations for level 1 MOSFETs *//* information needed for each instance */typedef struct sMOS1instance { struct sMOS1model *sMOS1modPtr; /* backpointer to model */ struct sMOS1instance *MOS1nextInstance; /* pointer to next instance of *current model*/ IFuid MOS1name; /* pointer to character string naming this instance */ int MOS1owner; /* number of owner process */ int MOS1states; /* index into state table for this device */ int MOS1dNode; /* number of the gate node of the mosfet */ int MOS1gNode; /* number of the gate node of the mosfet */ int MOS1sNode; /* number of the source node of the mosfet */ int MOS1bNode; /* number of the bulk node of the mosfet */ int MOS1dNodePrime; /* number of the internal drain node of the mosfet */ int MOS1sNodePrime; /* number of the internal source node of the mosfet */ double MOS1l; /* the length of the channel region */ double MOS1w; /* the width of the channel region */ double MOS1drainArea; /* the area of the drain diffusion */ double MOS1sourceArea; /* the area of the source diffusion */ double MOS1drainSquares; /* the length of the drain in squares */ double MOS1sourceSquares; /* the length of the source in squares */ double MOS1drainPerimiter; double MOS1sourcePerimiter; double MOS1sourceConductance; /*conductance of source(or 0):set in setup*/ double MOS1drainConductance; /*conductance of drain(or 0):set in setup*/ double MOS1temp; /* operating temperature of this instance */ double MOS1tTransconductance; /* temperature corrected transconductance*/ double MOS1tSurfMob; /* temperature corrected surface mobility */ double MOS1tPhi; /* temperature corrected Phi */ double MOS1tVto; /* temperature corrected Vto */ double MOS1tSatCur; /* temperature corrected saturation Cur. */ double MOS1tSatCurDens; /* temperature corrected saturation Cur. density*/ double MOS1tCbd; /* temperature corrected B-D Capacitance */ double MOS1tCbs; /* temperature corrected B-S Capacitance */ double MOS1tCj; /* temperature corrected Bulk bottom Capacitance */ double MOS1tCjsw; /* temperature corrected Bulk side Capacitance */ double MOS1tBulkPot; /* temperature corrected Bulk potential */ double MOS1tDepCap; /* temperature adjusted transition point in */ /* the cureve matching Fc * Vj */ double MOS1tVbi; /* temperature adjusted Vbi */ double MOS1icVBS; /* initial condition B-S voltage */ double MOS1icVDS; /* initial condition D-S voltage */ double MOS1icVGS; /* initial condition G-S voltage */ double MOS1von; double MOS1vdsat; double MOS1sourceVcrit; /* Vcrit for pos. vds */ double MOS1drainVcrit; /* Vcrit for pos. vds */ double MOS1cd; double MOS1cbs; double MOS1cbd; double MOS1gmbs; double MOS1gm; double MOS1gds; double MOS1gbd; double MOS1gbs; double MOS1capbd; double MOS1capbs; double MOS1Cbd; double MOS1Cbdsw; double MOS1Cbs; double MOS1Cbssw; double MOS1f2d; double MOS1f3d; double MOS1f4d; double MOS1f2s; double MOS1f3s; double MOS1f4s;/* * naming convention: * x = vgs * y = vbs * z = vds * cdr = cdrain */#define MOS1NDCOEFFS 30#ifndef NODISTO double MOS1dCoeffs[MOS1NDCOEFFS];#else /* NODISTO */ double *MOS1dCoeffs;#endif /* NODISTO */#ifndef CONFIG#define capbs2 MOS1dCoeffs[0]#define capbs3 MOS1dCoeffs[1]#define capbd2 MOS1dCoeffs[2]#define capbd3 MOS1dCoeffs[3]#define gbs2 MOS1dCoeffs[4]#define gbs3 MOS1dCoeffs[5]#define gbd2 MOS1dCoeffs[6]#define gbd3 MOS1dCoeffs[7]#define capgb2 MOS1dCoeffs[8]#define capgb3 MOS1dCoeffs[9]#define cdr_x2 MOS1dCoeffs[10]#define cdr_y2 MOS1dCoeffs[11]#define cdr_z2 MOS1dCoeffs[12]#define cdr_xy MOS1dCoeffs[13]#define cdr_yz MOS1dCoeffs[14]#define cdr_xz MOS1dCoeffs[15]#define cdr_x3 MOS1dCoeffs[16]#define cdr_y3 MOS1dCoeffs[17]#define cdr_z3 MOS1dCoeffs[18]#define cdr_x2z MOS1dCoeffs[19]#define cdr_x2y MOS1dCoeffs[20]#define cdr_y2z MOS1dCoeffs[21]#define cdr_xy2 MOS1dCoeffs[22]#define cdr_xz2 MOS1dCoeffs[23]#define cdr_yz2 MOS1dCoeffs[24]#define cdr_xyz MOS1dCoeffs[25]#define capgs2 MOS1dCoeffs[26]#define capgs3 MOS1dCoeffs[27]#define capgd2 MOS1dCoeffs[28]#define capgd3 MOS1dCoeffs[29]#endif#define MOS1RDNOIZ 0#define MOS1RSNOIZ 1#define MOS1IDNOIZ 2#define MOS1FLNOIZ 3#define MOS1TOTNOIZ 4#define MOS1NSRCS 5 /* the number of MOS1FET noise sources*/#ifndef NONOISE double MOS1nVar[NSTATVARS][MOS1NSRCS];#else /* NONOISE */ double **MOS1nVar;#endif /* NONOISE */ int MOS1mode; /* device mode : 1 = normal, -1 = inverse */ unsigned MOS1off:1; /* non-zero to indicate device is off for dc analysis*/ unsigned MOS1tempGiven :1; /* instance temperature specified */ unsigned MOS1lGiven :1; unsigned MOS1wGiven :1; unsigned MOS1drainAreaGiven :1; unsigned MOS1sourceAreaGiven :1; unsigned MOS1drainSquaresGiven :1; unsigned MOS1sourceSquaresGiven :1; unsigned MOS1drainPerimiterGiven :1; unsigned MOS1sourcePerimiterGiven :1; unsigned MOS1dNodePrimeSet :1; unsigned MOS1sNodePrimeSet :1; unsigned MOS1icVBSGiven :1; unsigned MOS1icVDSGiven :1; unsigned MOS1icVGSGiven :1; unsigned MOS1vonGiven :1; unsigned MOS1vdsatGiven :1; unsigned MOS1modeGiven :1; double *MOS1DdPtr; /* pointer to sparse matrix element at * (Drain node,drain node) */ double *MOS1GgPtr; /* pointer to sparse matrix element at * (gate node,gate node) */ double *MOS1SsPtr; /* pointer to sparse matrix element at * (source node,source node) */ double *MOS1BbPtr; /* pointer to sparse matrix element at * (bulk node,bulk node) */ double *MOS1DPdpPtr; /* pointer to sparse matrix element at * (drain prime node,drain prime node) */ double *MOS1SPspPtr; /* pointer to sparse matrix element at * (source prime node,source prime node) */ double *MOS1DdpPtr; /* pointer to sparse matrix element at * (drain node,drain prime node) */ double *MOS1GbPtr; /* pointer to sparse matrix element at * (gate node,bulk node) */ double *MOS1GdpPtr; /* pointer to sparse matrix element at * (gate node,drain prime node) */ double *MOS1GspPtr; /* pointer to sparse matrix element at * (gate node,source prime node) */ double *MOS1SspPtr; /* pointer to sparse matrix element at * (source node,source prime node) */ double *MOS1BdpPtr; /* pointer to sparse matrix element at * (bulk node,drain prime node) */ double *MOS1BspPtr; /* pointer to sparse matrix element at * (bulk node,source prime node) */ double *MOS1DPspPtr; /* pointer to sparse matrix element at * (drain prime node,source prime node) */ double *MOS1DPdPtr; /* pointer to sparse matrix element at * (drain prime node,drain node) */ double *MOS1BgPtr; /* pointer to sparse matrix element at * (bulk node,gate node) */ double *MOS1DPgPtr; /* pointer to sparse matrix element at * (drain prime node,gate node) */ double *MOS1SPgPtr; /* pointer to sparse matrix element at * (source prime node,gate node) */ double *MOS1SPsPtr; /* pointer to sparse matrix element at * (source prime node,source node) */ double *MOS1DPbPtr; /* pointer to sparse matrix element at * (drain prime node,bulk node) */ double *MOS1SPbPtr; /* pointer to sparse matrix element at * (source prime node,bulk node) */ double *MOS1SPdpPtr; /* pointer to sparse matrix element at * (source prime node,drain prime node) */ int MOS1senParmNo; /* parameter # for sensitivity use; set equal to 0 if neither length nor width of the mosfet is a design parameter */ unsigned MOS1sens_l :1; /* field which indicates whether length of the mosfet is a design parameter or not */ unsigned MOS1sens_w :1; /* field which indicates whether width of the mosfet is a design parameter or not */ unsigned MOS1senPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ double MOS1cgs; double MOS1cgd; double MOS1cgb; double *MOS1sens;#define MOS1senCgs MOS1sens /* contains pertured values of cgs */#define MOS1senCgd MOS1sens + 6 /* contains perturbed values of cgd*/#define MOS1senCgb MOS1sens + 12 /* contains perturbed values of cgb*/#define MOS1senCbd MOS1sens + 18 /* contains perturbed values of cbd*/#define MOS1senCbs MOS1sens + 24 /* contains perturbed values of cbs*/#define MOS1senGds MOS1sens + 30 /* contains perturbed values of gds*/#define MOS1senGbs MOS1sens + 36 /* contains perturbed values of gbs*/#define MOS1senGbd MOS1sens + 42 /* contains perturbed values of gbd*/#define MOS1senGm MOS1sens + 48 /* contains perturbed values of gm*/#define MOS1senGmbs MOS1sens + 54 /* contains perturbed values of gmbs*/#define MOS1dphigs_dl MOS1sens + 60#define MOS1dphigd_dl MOS1sens + 61#define MOS1dphigb_dl MOS1sens + 62#define MOS1dphibs_dl MOS1sens + 63#define MOS1dphibd_dl MOS1sens + 64#define MOS1dphigs_dw MOS1sens + 65
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -