📄 mos9defs.h
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1985 Thomas L. QuarlesModified: Alan Gillespie**********/#ifndef MOS9#define MOS9#include "ifsim.h"#include "cktdefs.h"#include "gendefs.h"#include "complex.h"#include "noisedef.h" /* declarations for level 9 MOSFETs *//* information needed for each instance */typedef struct sMOS9instance { struct sMOS9model *MOS9modPtr; /* backpointer to model */ struct sMOS9instance *MOS9nextInstance; /* pointer to next instance of *current model*/ IFuid MOS9name; /* pointer to character string naming this instance */ int MOS9owner; /* number of owner process */ int MOS9states; /* index into state table for this device */ int MOS9dNode; /* number of the gate node of the mosfet */ int MOS9gNode; /* number of the gate node of the mosfet */ int MOS9sNode; /* number of the source node of the mosfet */ int MOS9bNode; /* number of the bulk node of the mosfet */ int MOS9dNodePrime; /* number of the internal drain node of the mosfet */ int MOS9sNodePrime; /* number of the internal source node of the mosfet */ double MOS9m; /* parallel device multiplier */ double MOS9l; /* the length of the channel region */ double MOS9w; /* the width of the channel region */ double MOS9drainArea; /* the area of the drain diffusion */ double MOS9sourceArea; /* the area of the source diffusion */ double MOS9drainSquares; /* the length of the drain in squares */ double MOS9sourceSquares; /* the length of the source in squares */ double MOS9drainPerimiter; double MOS9sourcePerimiter; double MOS9sourceConductance; /*conductance of source(or 0):set in setup*/ double MOS9drainConductance; /*conductance of drain(or 0):set in setup*/ double MOS9temp; /* operating temperature of this instance */ double MOS9dtemp; /* instance temperature difference */ double MOS9tTransconductance; /* temperature corrected transconductance*/ double MOS9tSurfMob; /* temperature corrected surface mobility */ double MOS9tPhi; /* temperature corrected Phi */ double MOS9tVto; /* temperature corrected Vto */ double MOS9tSatCur; /* temperature corrected saturation Cur. */ double MOS9tSatCurDens; /* temperature corrected saturation Cur. density*/ double MOS9tCbd; /* temperature corrected B-D Capacitance */ double MOS9tCbs; /* temperature corrected B-S Capacitance */ double MOS9tCj; /* temperature corrected Bulk bottom Capacitance */ double MOS9tCjsw; /* temperature corrected Bulk side Capacitance */ double MOS9tBulkPot; /* temperature corrected Bulk potential */ double MOS9tDepCap; /* temperature adjusted transition point in */ /* the cureve matching Fc * Vj */ double MOS9tVbi; /* temperature adjusted Vbi */ double MOS9icVBS; /* initial condition B-S voltage */ double MOS9icVDS; /* initial condition D-S voltage */ double MOS9icVGS; /* initial condition G-S voltage */ double MOS9von; double MOS9vdsat; double MOS9sourceVcrit; /* vcrit for pos. vds */ double MOS9drainVcrit; /* vcrit for neg. vds */ double MOS9cd; double MOS9cbs; double MOS9cbd; double MOS9gmbs; double MOS9gm; double MOS9gds; double MOS9gbd; double MOS9gbs; double MOS9capbd; double MOS9capbs; double MOS9Cbd; double MOS9Cbdsw; double MOS9Cbs; double MOS9Cbssw; double MOS9f2d; double MOS9f3d; double MOS9f4d; double MOS9f2s; double MOS9f3s; double MOS9f4s; int MOS9mode; /* device mode : 1 = normal, -1 = inverse */ unsigned MOS9off :1;/* non-zero to indicate device is off for dc analysis*/ unsigned MOS9tempGiven :1; /* instance temperature specified */ unsigned MOS9dtempGiven :1; /* instance temperature difference specified*/ unsigned MOS9mGiven :1; unsigned MOS9lGiven :1; unsigned MOS9wGiven :1; unsigned MOS9drainAreaGiven :1; unsigned MOS9sourceAreaGiven :1; unsigned MOS9drainSquaresGiven :1; unsigned MOS9sourceSquaresGiven :1; unsigned MOS9drainPerimiterGiven :1; unsigned MOS9sourcePerimiterGiven :1; unsigned MOS9dNodePrimeSet :1; unsigned MOS9sNodePrimeSet :1; unsigned MOS9icVBSGiven :1; unsigned MOS9icVDSGiven :1; unsigned MOS9icVGSGiven :1; unsigned MOS9vonGiven :1; unsigned MOS9vdsatGiven :1; unsigned MOS9modeGiven :1; double *MOS9DdPtr; /* pointer to sparse matrix element at * (Drain node,drain node) */ double *MOS9GgPtr; /* pointer to sparse matrix element at * (gate node,gate node) */ double *MOS9SsPtr; /* pointer to sparse matrix element at * (source node,source node) */ double *MOS9BbPtr; /* pointer to sparse matrix element at * (bulk node,bulk node) */ double *MOS9DPdpPtr; /* pointer to sparse matrix element at * (drain prime node,drain prime node) */ double *MOS9SPspPtr; /* pointer to sparse matrix element at * (source prime node,source prime node) */ double *MOS9DdpPtr; /* pointer to sparse matrix element at * (drain node,drain prime node) */ double *MOS9GbPtr; /* pointer to sparse matrix element at * (gate node,bulk node) */ double *MOS9GdpPtr; /* pointer to sparse matrix element at * (gate node,drain prime node) */ double *MOS9GspPtr; /* pointer to sparse matrix element at * (gate node,source prime node) */ double *MOS9SspPtr; /* pointer to sparse matrix element at * (source node,source prime node) */ double *MOS9BdpPtr; /* pointer to sparse matrix element at * (bulk node,drain prime node) */ double *MOS9BspPtr; /* pointer to sparse matrix element at * (bulk node,source prime node) */ double *MOS9DPspPtr; /* pointer to sparse matrix element at * (drain prime node,source prime node) */ double *MOS9DPdPtr; /* pointer to sparse matrix element at * (drain prime node,drain node) */ double *MOS9BgPtr; /* pointer to sparse matrix element at * (bulk node,gate node) */ double *MOS9DPgPtr; /* pointer to sparse matrix element at * (drain prime node,gate node) */ double *MOS9SPgPtr; /* pointer to sparse matrix element at * (source prime node,gate node) */ double *MOS9SPsPtr; /* pointer to sparse matrix element at * (source prime node,source node) */ double *MOS9DPbPtr; /* pointer to sparse matrix element at * (drain prime node,bulk node) */ double *MOS9SPbPtr; /* pointer to sparse matrix element at * (source prime node,bulk node) */ double *MOS9SPdpPtr; /* pointer to sparse matrix element at * (source prime node,drain prime node) */ int MOS9senParmNo; /* parameter # for sensitivity use; set equal to 0 if neither length nor width of the mosfet is a design parameter */ unsigned MOS9sens_l :1; /* field which indicates whether length of the mosfet is a design parameter or not */ unsigned MOS9sens_w :1; /* field which indicates whether width of the mosfet is a design parameter or not */ unsigned MOS9senPertFlag :1; /* indictes whether the the parameter of the particular instance is to be perturbed */ double MOS9cgs; double MOS9cgd; double MOS9cgb; double *MOS9sens;#define MOS9senGdpr MOS9sens#define MOS9senGspr MOS9sens + 1#define MOS9senCgs MOS9sens + 2 /* contains pertured values of cgs */#define MOS9senCgd MOS9sens + 8 /* contains perturbed values of cgd*/#define MOS9senCgb MOS9sens + 14 /* contains perturbed values of cgb*/#define MOS9senCbd MOS9sens + 20 /* contains perturbed values of cbd*/#define MOS9senCbs MOS9sens + 26 /* contains perturbed values of cbs*/#define MOS9senGds MOS9sens + 32 /* contains perturbed values of gds*/#define MOS9senGbs MOS9sens + 38 /* contains perturbed values of gbs*/#define MOS9senGbd MOS9sens + 44 /* contains perturbed values of gbd*/#define MOS9senGm MOS9sens + 50 /* contains perturbed values of gm*/#define MOS9senGmbs MOS9sens + 56 /* contains perturbed values of gmbs*/#define MOS9dphigs_dl MOS9sens + 62#define MOS9dphigd_dl MOS9sens + 63#define MOS9dphigb_dl MOS9sens + 64#define MOS9dphibs_dl MOS9sens + 65#define MOS9dphibd_dl MOS9sens + 66#define MOS9dphigs_dw MOS9sens + 67#define MOS9dphigd_dw MOS9sens + 68#define MOS9dphigb_dw MOS9sens + 69#define MOS9dphibs_dw MOS9sens + 70#define MOS9dphibd_dw MOS9sens + 71 /* distortion stuff *//* * naming convention: * x = vgs * y = vbs * z = vds * cdr = cdrain */#define MOS9NDCOEFFS 30#ifndef NODISTO double MOS9dCoeffs[MOS9NDCOEFFS];#else /* NODISTO */ double *MOS9dCoeffs;#endif /* NODISTO */#ifndef CONFIG#define capbs2 MOS9dCoeffs[0]#define capbs3 MOS9dCoeffs[1]#define capbd2 MOS9dCoeffs[2]#define capbd3 MOS9dCoeffs[3]#define gbs2 MOS9dCoeffs[4]#define gbs3 MOS9dCoeffs[5]#define gbd2 MOS9dCoeffs[6]#define gbd3 MOS9dCoeffs[7]#define capgb2 MOS9dCoeffs[8]#define capgb3 MOS9dCoeffs[9]#define cdr_x2 MOS9dCoeffs[10]#define cdr_y2 MOS9dCoeffs[11]#define cdr_z2 MOS9dCoeffs[12]#define cdr_xy MOS9dCoeffs[13]#define cdr_yz MOS9dCoeffs[14]#define cdr_xz MOS9dCoeffs[15]#define cdr_x3 MOS9dCoeffs[16]#define cdr_y3 MOS9dCoeffs[17]#define cdr_z3 MOS9dCoeffs[18]#define cdr_x2z MOS9dCoeffs[19]#define cdr_x2y MOS9dCoeffs[20]#define cdr_y2z MOS9dCoeffs[21]#define cdr_xy2 MOS9dCoeffs[22]#define cdr_xz2 MOS9dCoeffs[23]#define cdr_yz2 MOS9dCoeffs[24]#define cdr_xyz MOS9dCoeffs[25]#define capgs2 MOS9dCoeffs[26]#define capgs3 MOS9dCoeffs[27]#define capgd2 MOS9dCoeffs[28]#define capgd3 MOS9dCoeffs[29]#endif /* end distortion coeffs. *//* indices to the array of MOSFET(3) noise sources */#define MOS9RDNOIZ 0#define MOS9RSNOIZ 1#define MOS9IDNOIZ 2#define MOS9FLNOIZ 3#define MOS9TOTNOIZ 4#define MOS9NSRCS 5 /* the number of MOSFET(9) noise sources */#ifndef NONOISE double MOS9nVar[NSTATVARS][MOS9NSRCS];#else /* NONOISE */ double **MOS9nVar;#endif /* NONOISE */} MOS9instance ;#define MOS9vbd MOS9states+ 0#define MOS9vbs MOS9states+ 1#define MOS9vgs MOS9states+ 2#define MOS9vds MOS9states+ 3/* meyer capacitances */#define MOS9capgs MOS9states+ 4 /* gate-source capacitor value */#define MOS9qgs MOS9states+ 5 /* gate-source capacitor charge */#define MOS9cqgs MOS9states+ 6 /* gate-source capacitor current */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -