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.
 
 
 
 
 
 

174 lines
5.4 KiB

/**********
Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1987 Thomas L. Quarles
Modified: 2000 AlansFixes
**********/
/*
*/
#include "ngspice/ngspice.h"
#include "ngspice/const.h"
#include "ngspice/ifsim.h"
#include "ngspice/cktdefs.h"
#include "ngspice/devdefs.h"
#include "mos3defs.h"
#include "ngspice/sperror.h"
#include "ngspice/suffix.h"
/*ARGSUSED*/
int
MOS3mAsk(CKTcircuit *ckt, GENmodel *inModel, int which, IFvalue *value)
{
MOS3model *model = (MOS3model *)inModel;
NG_IGNORE(ckt);
switch(which) {
case MOS3_MOD_TNOM:
value->rValue = model->MOS3tnom-CONSTCtoK;
return(OK);
case MOS3_MOD_VTO:
value->rValue = model->MOS3vt0;
return(OK);
case MOS3_MOD_KP:
value->rValue = model->MOS3transconductance;
return(OK);
case MOS3_MOD_GAMMA:
value->rValue = model->MOS3gamma;
return(OK);
case MOS3_MOD_PHI:
value->rValue = model->MOS3phi;
return(OK);
case MOS3_MOD_RD:
value->rValue = model->MOS3drainResistance;
return(OK);
case MOS3_MOD_RS:
value->rValue = model->MOS3sourceResistance;
return(OK);
case MOS3_MOD_CBD:
value->rValue = model->MOS3capBD;
return(OK);
case MOS3_MOD_CBS:
value->rValue = model->MOS3capBS;
return(OK);
case MOS3_MOD_IS:
value->rValue = model->MOS3jctSatCur;
return(OK);
case MOS3_MOD_PB:
value->rValue = model->MOS3bulkJctPotential;
return(OK);
case MOS3_MOD_CGSO:
value->rValue = model->MOS3gateSourceOverlapCapFactor;
return(OK);
case MOS3_MOD_CGDO:
value->rValue = model->MOS3gateDrainOverlapCapFactor;
return(OK);
case MOS3_MOD_CGBO:
value->rValue = model->MOS3gateBulkOverlapCapFactor;
return(OK);
case MOS3_MOD_CJ:
value->rValue = model->MOS3bulkCapFactor;
return(OK);
case MOS3_MOD_MJ:
value->rValue = model->MOS3bulkJctBotGradingCoeff;
return(OK);
case MOS3_MOD_CJSW:
value->rValue = model->MOS3sideWallCapFactor;
return(OK);
case MOS3_MOD_MJSW:
value->rValue = model->MOS3bulkJctSideGradingCoeff;
return(OK);
case MOS3_MOD_JS:
value->rValue = model->MOS3jctSatCurDensity;
return(OK);
case MOS3_MOD_TOX:
value->rValue = model->MOS3oxideThickness;
return(OK);
case MOS3_MOD_LD:
value->rValue = model->MOS3latDiff;
return(OK);
case MOS3_MOD_XL:
value->rValue = model->MOS3lengthAdjust;
return(OK);
case MOS3_MOD_WD:
value->rValue = model->MOS3widthNarrow;
return(OK);
case MOS3_MOD_XW:
value->rValue = model->MOS3widthAdjust;
return(OK);
case MOS3_MOD_DELVTO:
value->rValue = model->MOS3delvt0;
return(OK);
case MOS3_MOD_RSH:
value->rValue = model->MOS3sheetResistance;
return(OK);
case MOS3_MOD_U0:
value->rValue = model->MOS3surfaceMobility;
return(OK);
case MOS3_MOD_FC:
value->rValue = model->MOS3fwdCapDepCoeff;
return(OK);
case MOS3_MOD_NSUB:
value->rValue = model->MOS3substrateDoping;
return(OK);
case MOS3_MOD_TPG:
value->iValue = model->MOS3gateType;
return(OK);
case MOS3_MOD_NSS:
value->rValue = model->MOS3surfaceStateDensity;
return(OK);
case MOS3_MOD_NFS:
value->rValue = model->MOS3fastSurfaceStateDensity;
return(OK);
case MOS3_MOD_DELTA:
value->rValue = model->MOS3narrowFactor;
return(OK);
case MOS3_MOD_VMAX:
value->rValue = model->MOS3maxDriftVel;
return(OK);
case MOS3_MOD_XJ:
value->rValue = model->MOS3junctionDepth;
return(OK);
case MOS3_MOD_ETA:
value->rValue = model->MOS3eta;
return(OK);
case MOS3_MOD_XD:
value->rValue = model->MOS3coeffDepLayWidth;
return(OK);
case MOS3_DELTA:
value->rValue = model->MOS3delta;
return(OK);
case MOS3_MOD_THETA:
value->rValue = model->MOS3theta;
return(OK);
case MOS3_MOD_ALPHA:
value->rValue = model->MOS3alpha;
return(OK);
case MOS3_MOD_KAPPA:
value->rValue = model->MOS3kappa;
return(OK);
case MOS3_MOD_KF:
value->rValue = model->MOS3fNcoef;
return(OK);
case MOS3_MOD_AF:
value->rValue = model->MOS3fNexp;
return(OK);
case MOS3_MOD_NLEV:
value->iValue = model->MOS3nlev;
return(OK);
case MOS3_MOD_GDSNOI:
value->rValue = model->MOS3gdsnoi;
return(OK);
case MOS3_MOD_TYPE:
if (model->MOS3type > 0)
value->sValue = "nmos";
else
value->sValue = "pmos";
return(OK);
default:
return(E_BADPARM);
}
/* NOTREACHED */
}