📄 mos1defs.h
字号:
/* * Copyright (c) 1985 Thomas L. Quarles */#ifndef MOS1#define MOS1 "MOS1defs.h $Revision: 1.1 $ on $Date: 91/04/02 11:26:25 $"#include "IFsim.h"#include "CKTdefs.h"#include "GENdefs.h"#include "complex.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 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; 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 MOS1states; /* index into state table for this device */#define MOS1vbd MOS1states+ 0 /* bulk-drain voltage */#define MOS1vbs MOS1states+ 1 /* bulk-source voltage */#define MOS1vgs MOS1states+ 2 /* gate-source voltage */#define MOS1vds MOS1states+ 3 /* drain-source voltage */#define MOS1capgs MOS1states+4 /* gate-source capacitor value */#define MOS1qgs MOS1states+ 5 /* gate-source capacitor charge */#define MOS1cqgs MOS1states+ 6 /* gate-source capacitor current */#define MOS1capgd MOS1states+ 7 /* gate-drain capacitor value */#define MOS1qgd MOS1states+ 8 /* gate-drain capacitor charge */#define MOS1cqgd MOS1states+ 9 /* gate-drain capacitor current */#define MOS1capgb MOS1states+10 /* gate-bulk capacitor value */#define MOS1qgb MOS1states+ 11 /* gate-bulk capacitor charge */#define MOS1cqgb MOS1states+ 12 /* gate-bulk capacitor current */#define MOS1qbd MOS1states+ 13 /* bulk-drain capacitor charge */#define MOS1cqbd MOS1states+ 14 /* bulk-drain capacitor current */#define MOS1qbs MOS1states+ 15 /* bulk-source capacitor charge */#define MOS1cqbs MOS1states+ 16 /* bulk-source capacitor current */#define MOS1numStates 17#define MOS1sensxpgs MOS1states+17 /* charge sensitivities and their derivatives. +18 for the derivatives: pointer to the beginning of the array */#define MOS1sensxpgd MOS1states+19#define MOS1sensxpgb MOS1states+21#define MOS1sensxpbs MOS1states+23#define MOS1sensxpbd MOS1states+25#define MOS1numSenStates 10 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#define MOS1dphigd_dw MOS1sens + 66#define MOS1dphigb_dw MOS1sens + 67#define MOS1dphibs_dw MOS1sens + 68#define MOS1dphibd_dw MOS1sens + 69} MOS1instance ;/* per model data */ /* NOTE: parameters marked 'input - use xxxx' are paramters for * which a temperature correction is applied in MOS1temp, thus * the MOS1xxxx value in the per-instance structure should be used * instead in all calculations */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -