You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
603 lines
20 KiB
603 lines
20 KiB
/**********
|
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
|
Author: 1985 Thomas L. Quarles
|
|
Modified: 2000 AlanFixes
|
|
**********/
|
|
|
|
#ifndef MOS3
|
|
#define MOS3
|
|
|
|
#include "ngspice/ifsim.h"
|
|
#include "ngspice/cktdefs.h"
|
|
#include "ngspice/gendefs.h"
|
|
#include "ngspice/complex.h"
|
|
#include "ngspice/noisedef.h"
|
|
|
|
/* declarations for level 3 MOSFETs */
|
|
|
|
/* indices to the array of MOSFET(3) noise sources */
|
|
|
|
enum {
|
|
MOS3RDNOIZ = 0,
|
|
MOS3RSNOIZ,
|
|
MOS3IDNOIZ,
|
|
MOS3FLNOIZ,
|
|
MOS3TOTNOIZ,
|
|
/* finally, the number of noise sources */
|
|
MOS3NSRCS
|
|
};
|
|
|
|
/* information needed for each instance */
|
|
|
|
typedef struct sMOS3instance {
|
|
|
|
struct GENinstance gen;
|
|
|
|
#define MOS3modPtr(inst) ((struct sMOS3model *)((inst)->gen.GENmodPtr))
|
|
#define MOS3nextInstance(inst) ((struct sMOS3instance *)((inst)->gen.GENnextInstance))
|
|
#define MOS3name gen.GENname
|
|
#define MOS3states gen.GENstate
|
|
|
|
const int MOS3dNode; /* number of the gate node of the mosfet */
|
|
const int MOS3gNode; /* number of the gate node of the mosfet */
|
|
const int MOS3sNode; /* number of the source node of the mosfet */
|
|
const 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 MOS3m; /* parallel device multiplier */
|
|
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 MOS3dtemp; /* temperature difference for 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 MOS3dtempGiven :1; /* instance temperature difference specified */
|
|
unsigned MOS3mGiven :1;
|
|
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. */
|
|
|
|
#ifndef NONOISE
|
|
double MOS3nVar[NSTATVARS][MOS3NSRCS];
|
|
#else /* NONOISE */
|
|
double **MOS3nVar;
|
|
#endif /* NONOISE */
|
|
|
|
#ifdef KLU
|
|
BindElement *MOS3DdBinding ;
|
|
BindElement *MOS3GgBinding ;
|
|
BindElement *MOS3SsBinding ;
|
|
BindElement *MOS3BbBinding ;
|
|
BindElement *MOS3DPdpBinding ;
|
|
BindElement *MOS3SPspBinding ;
|
|
BindElement *MOS3DdpBinding ;
|
|
BindElement *MOS3GbBinding ;
|
|
BindElement *MOS3GdpBinding ;
|
|
BindElement *MOS3GspBinding ;
|
|
BindElement *MOS3SspBinding ;
|
|
BindElement *MOS3BdpBinding ;
|
|
BindElement *MOS3BspBinding ;
|
|
BindElement *MOS3DPspBinding ;
|
|
BindElement *MOS3DPdBinding ;
|
|
BindElement *MOS3BgBinding ;
|
|
BindElement *MOS3DPgBinding ;
|
|
BindElement *MOS3SPgBinding ;
|
|
BindElement *MOS3SPsBinding ;
|
|
BindElement *MOS3DPbBinding ;
|
|
BindElement *MOS3SPbBinding ;
|
|
BindElement *MOS3SPdpBinding ;
|
|
#endif
|
|
|
|
} MOS3instance ;
|
|
|
|
#define MOS3vbd MOS3states+ 0
|
|
#define MOS3vbs MOS3states+ 1
|
|
#define MOS3vgs MOS3states+ 2
|
|
#define MOS3vds MOS3states+ 3
|
|
|
|
/* meyer capacitances */
|
|
#define MOS3capgs MOS3states+ 4 /* gate-source capacitor value */
|
|
#define MOS3qgs MOS3states+ 5 /* gate-source capacitor charge */
|
|
#define MOS3cqgs MOS3states+ 6 /* gate-source capacitor current */
|
|
|
|
#define MOS3capgd MOS3states+ 7 /* gate-drain capacitor value */
|
|
#define MOS3qgd MOS3states+ 8 /* gate-drain capacitor charge */
|
|
#define MOS3cqgd MOS3states+ 9 /* gate-drain capacitor current */
|
|
|
|
#define MOS3capgb MOS3states+ 10/* gate-bulk capacitor value */
|
|
#define MOS3qgb MOS3states+ 11 /* gate-bulk capacitor charge */
|
|
#define MOS3cqgb MOS3states+ 12 /* gate-bulk capacitor current */
|
|
|
|
/* diode capacitances */
|
|
#define MOS3qbd MOS3states+ 13 /* bulk-drain capacitor charge */
|
|
#define MOS3cqbd MOS3states+ 14 /* bulk-drain capacitor current */
|
|
|
|
#define MOS3qbs MOS3states+ 15 /* bulk-source capacitor charge */
|
|
#define MOS3cqbs MOS3states+ 16 /* bulk-source capacitor current */
|
|
|
|
#define MOS3NUMSTATES 17
|
|
|
|
|
|
#define MOS3sensxpgs MOS3states+17 /* charge sensitivities and their derivatives
|
|
+18 for the derivatives - pointer to the
|
|
beginning of the array */
|
|
#define MOS3sensxpgd MOS3states+19
|
|
#define MOS3sensxpgb MOS3states+21
|
|
#define MOS3sensxpbs MOS3states+23
|
|
#define MOS3sensxpbd MOS3states+25
|
|
|
|
#define MOS3numSenStates 10
|
|
|
|
|
|
/* per model data */
|
|
|
|
/* NOTE: parameters marked 'input - use xxxx' are paramters for
|
|
* which a temperature correction is applied in MOS3temp, thus
|
|
* the MOS3xxxx value in the per-instance structure should be used
|
|
* instead in all calculations
|
|
*/
|
|
|
|
typedef struct sMOS3model { /* model structure for a resistor */
|
|
|
|
struct GENmodel gen;
|
|
|
|
#define MOS3modType gen.GENmodType
|
|
#define MOS3nextModel(inst) ((struct sMOS3model *)((inst)->gen.GENnextModel))
|
|
#define MOS3instances(inst) ((MOS3instance *)((inst)->gen.GENinstances))
|
|
#define MOS3modName gen.GENmodName
|
|
|
|
int MOS3type; /* device type : 1 = nmos, -1 = pmos */
|
|
double MOS3tnom; /* temperature at which parameters measured */
|
|
double MOS3latDiff;
|
|
double MOS3lengthAdjust; /* New parm: mask adjustment to length */
|
|
double MOS3widthNarrow; /* New parm to reduce effective width */
|
|
double MOS3widthAdjust; /* New parm: mask adjustment to width */
|
|
double MOS3delvt0; /* New parm: adjustment calculated vtO */
|
|
double MOS3jctSatCurDensity; /* input - use tSatCurDens*/
|
|
double MOS3jctSatCur; /* input - use tSatCur instead */
|
|
double MOS3drainResistance;
|
|
double MOS3sourceResistance;
|
|
double MOS3sheetResistance;
|
|
double MOS3transconductance; /* input - use tTransconductance */
|
|
double MOS3gateSourceOverlapCapFactor;
|
|
double MOS3gateDrainOverlapCapFactor;
|
|
double MOS3gateBulkOverlapCapFactor;
|
|
double MOS3oxideCapFactor;
|
|
double MOS3vt0; /* input - use tVto */
|
|
double MOS3capBD; /* input - use tCbs */
|
|
double MOS3capBS; /* input - use tCbd */
|
|
double MOS3bulkCapFactor; /* input - use tCj */
|
|
double MOS3sideWallCapFactor; /* input - use tCjsw */
|
|
double MOS3bulkJctPotential; /* input - use tBulkPot */
|
|
double MOS3bulkJctBotGradingCoeff;
|
|
double MOS3bulkJctSideGradingCoeff;
|
|
double MOS3fwdCapDepCoeff;
|
|
double MOS3phi; /* input - use tPhi */
|
|
double MOS3gamma;
|
|
double MOS3substrateDoping;
|
|
int MOS3gateType;
|
|
double MOS3surfaceStateDensity;
|
|
double MOS3oxideThickness;
|
|
double MOS3surfaceMobility; /* input - use tSurfMob */
|
|
double MOS3eta;
|
|
double MOS3junctionDepth;
|
|
double MOS3coeffDepLayWidth; /* xd */
|
|
double MOS3narrowFactor; /* delta */
|
|
double MOS3delta; /* input delta */
|
|
double MOS3fastSurfaceStateDensity; /* nfs */
|
|
double MOS3theta; /* theta */
|
|
double MOS3maxDriftVel; /* vmax */
|
|
double MOS3alpha; /* alpha */
|
|
double MOS3kappa; /* kappa */
|
|
double MOS3fNcoef;
|
|
double MOS3fNexp;
|
|
int MOS3nlev;
|
|
double MOS3gdsnoi;
|
|
|
|
unsigned MOS3typeGiven :1;
|
|
unsigned MOS3latDiffGiven :1;
|
|
unsigned MOS3lengthAdjustGiven :1;
|
|
unsigned MOS3widthNarrowGiven :1;
|
|
unsigned MOS3widthAdjustGiven :1;
|
|
unsigned MOS3delvt0Given :1;
|
|
unsigned MOS3jctSatCurDensityGiven :1;
|
|
unsigned MOS3jctSatCurGiven :1;
|
|
unsigned MOS3drainResistanceGiven :1;
|
|
unsigned MOS3sourceResistanceGiven :1;
|
|
unsigned MOS3sheetResistanceGiven :1;
|
|
unsigned MOS3transconductanceGiven :1;
|
|
unsigned MOS3gateSourceOverlapCapFactorGiven :1;
|
|
unsigned MOS3gateDrainOverlapCapFactorGiven :1;
|
|
unsigned MOS3gateBulkOverlapCapFactorGiven :1;
|
|
unsigned MOS3vt0Given :1;
|
|
unsigned MOS3capBDGiven :1;
|
|
unsigned MOS3capBSGiven :1;
|
|
unsigned MOS3bulkCapFactorGiven :1;
|
|
unsigned MOS3sideWallCapFactorGiven :1;
|
|
unsigned MOS3bulkJctPotentialGiven :1;
|
|
unsigned MOS3bulkJctBotGradingCoeffGiven :1;
|
|
unsigned MOS3bulkJctSideGradingCoeffGiven :1;
|
|
unsigned MOS3fwdCapDepCoeffGiven :1;
|
|
unsigned MOS3phiGiven :1;
|
|
unsigned MOS3gammaGiven :1;
|
|
unsigned MOS3substrateDopingGiven :1;
|
|
unsigned MOS3gateTypeGiven :1;
|
|
unsigned MOS3surfaceStateDensityGiven :1;
|
|
unsigned MOS3oxideThicknessGiven :1;
|
|
unsigned MOS3surfaceMobilityGiven :1;
|
|
unsigned MOS3etaGiven :1;
|
|
unsigned MOS3junctionDepthGiven :1;
|
|
unsigned MOS3deltaGiven :1; /* delta */
|
|
unsigned MOS3fastSurfaceStateDensityGiven :1; /* nfs */
|
|
unsigned MOS3thetaGiven :1; /* theta */
|
|
unsigned MOS3maxDriftVelGiven :1; /* vmax */
|
|
unsigned MOS3kappaGiven :1; /* kappa */
|
|
unsigned MOS3tnomGiven :1; /* Tnom was given? */
|
|
unsigned MOS3fNcoefGiven :1;
|
|
unsigned MOS3fNexpGiven :1;
|
|
unsigned MOS3nlevGiven :1;
|
|
unsigned MOS3gdsnoiGiven :1;
|
|
|
|
} MOS3model;
|
|
|
|
#ifndef NMOS
|
|
#define NMOS 1
|
|
#define PMOS -1
|
|
#endif /*NMOS*/
|
|
|
|
/* device parameters */
|
|
enum {
|
|
MOS3_W = 1,
|
|
MOS3_L,
|
|
MOS3_AS,
|
|
MOS3_AD,
|
|
MOS3_PS,
|
|
MOS3_PD,
|
|
MOS3_NRS,
|
|
MOS3_NRD,
|
|
MOS3_OFF,
|
|
MOS3_IC,
|
|
MOS3_IC_VBS,
|
|
MOS3_IC_VDS,
|
|
MOS3_IC_VGS,
|
|
MOS3_W_SENS,
|
|
MOS3_L_SENS,
|
|
MOS3_CB,
|
|
MOS3_CG,
|
|
MOS3_CS,
|
|
MOS3_POWER,
|
|
MOS3_CGS,
|
|
MOS3_CGD,
|
|
MOS3_DNODE,
|
|
MOS3_GNODE,
|
|
MOS3_SNODE,
|
|
MOS3_BNODE,
|
|
MOS3_DNODEPRIME,
|
|
MOS3_SNODEPRIME,
|
|
MOS3_SOURCECONDUCT,
|
|
MOS3_DRAINCONDUCT,
|
|
MOS3_VON,
|
|
MOS3_VDSAT,
|
|
MOS3_SOURCEVCRIT,
|
|
MOS3_DRAINVCRIT,
|
|
MOS3_CD,
|
|
MOS3_CBS,
|
|
MOS3_CBD,
|
|
MOS3_GMBS,
|
|
MOS3_GM,
|
|
MOS3_GDS,
|
|
MOS3_GBD,
|
|
MOS3_GBS,
|
|
MOS3_CAPBD,
|
|
MOS3_CAPBS,
|
|
MOS3_CAPZEROBIASBD,
|
|
MOS3_CAPZEROBIASBDSW,
|
|
MOS3_CAPZEROBIASBS,
|
|
MOS3_CAPZEROBIASBSSW,
|
|
MOS3_VBD,
|
|
MOS3_VBS,
|
|
MOS3_VGS,
|
|
MOS3_VDS,
|
|
MOS3_CAPGS,
|
|
MOS3_QGS,
|
|
MOS3_CQGS,
|
|
MOS3_CAPGD,
|
|
MOS3_QGD,
|
|
MOS3_CQGD,
|
|
MOS3_CAPGB,
|
|
MOS3_QGB,
|
|
MOS3_CQGB,
|
|
MOS3_QBD,
|
|
MOS3_CQBD,
|
|
MOS3_QBS,
|
|
MOS3_CQBS,
|
|
MOS3_W_SENS_REAL,
|
|
MOS3_W_SENS_IMAG,
|
|
MOS3_W_SENS_MAG,
|
|
MOS3_W_SENS_PH,
|
|
MOS3_W_SENS_CPLX,
|
|
MOS3_L_SENS_REAL,
|
|
MOS3_L_SENS_IMAG,
|
|
MOS3_L_SENS_MAG,
|
|
MOS3_L_SENS_PH,
|
|
MOS3_L_SENS_CPLX,
|
|
MOS3_W_SENS_DC,
|
|
MOS3_L_SENS_DC,
|
|
MOS3_TEMP,
|
|
MOS3_SOURCERESIST,
|
|
MOS3_DRAINRESIST,
|
|
MOS3_M,
|
|
MOS3_DTEMP,
|
|
};
|
|
|
|
/* model parameters */
|
|
enum {
|
|
MOS3_MOD_VTO = 101,
|
|
MOS3_MOD_KP,
|
|
MOS3_MOD_GAMMA,
|
|
MOS3_MOD_PHI,
|
|
MOS3_MOD_RD,
|
|
MOS3_MOD_RS,
|
|
MOS3_MOD_CBD,
|
|
MOS3_MOD_CBS,
|
|
MOS3_MOD_IS,
|
|
MOS3_MOD_PB,
|
|
MOS3_MOD_CGSO,
|
|
MOS3_MOD_CGDO,
|
|
MOS3_MOD_CGBO,
|
|
MOS3_MOD_RSH,
|
|
MOS3_MOD_CJ,
|
|
MOS3_MOD_MJ,
|
|
MOS3_MOD_CJSW,
|
|
MOS3_MOD_MJSW,
|
|
MOS3_MOD_JS,
|
|
MOS3_MOD_TOX,
|
|
MOS3_MOD_LD,
|
|
MOS3_MOD_U0,
|
|
MOS3_MOD_FC,
|
|
MOS3_MOD_NSUB,
|
|
MOS3_MOD_TPG,
|
|
MOS3_MOD_NSS,
|
|
MOS3_MOD_ETA,
|
|
MOS3_MOD_DELTA,
|
|
MOS3_MOD_NFS,
|
|
MOS3_MOD_THETA,
|
|
MOS3_MOD_VMAX,
|
|
MOS3_MOD_KAPPA,
|
|
MOS3_MOD_NMOS,
|
|
MOS3_MOD_PMOS,
|
|
MOS3_MOD_XJ,
|
|
MOS3_MOD_UEXP,
|
|
MOS3_MOD_NEFF,
|
|
MOS3_MOD_XD,
|
|
MOS3_MOD_ALPHA,
|
|
MOS3_DELTA,
|
|
MOS3_MOD_TNOM,
|
|
MOS3_MOD_KF,
|
|
MOS3_MOD_AF,
|
|
MOS3_MOD_NLEV,
|
|
MOS3_MOD_GDSNOI,
|
|
MOS3_MOD_TYPE,
|
|
MOS3_MOD_XL,
|
|
MOS3_MOD_WD,
|
|
MOS3_MOD_XW,
|
|
MOS3_MOD_DELVTO,
|
|
};
|
|
|
|
/* device questions */
|
|
|
|
|
|
/* model questions */
|
|
|
|
#include "mos3ext.h"
|
|
|
|
#endif /*MOS3*/
|