|
|
@ -18,147 +18,147 @@ Modified: 2000 AlansFixes |
|
|
|
|
|
|
|
|
/*ARGSUSED*/ |
|
|
/*ARGSUSED*/ |
|
|
int |
|
|
int |
|
|
MOS3mAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value) |
|
|
|
|
|
|
|
|
MOS3mAsk(CKTcircuit *ckt, GENmodel *inModel, int which, IFvalue *value) |
|
|
{ |
|
|
{ |
|
|
MOS3model *here = (MOS3model *)inst; |
|
|
|
|
|
|
|
|
MOS3model *model = (MOS3model *)inModel; |
|
|
|
|
|
|
|
|
NG_IGNORE(ckt); |
|
|
NG_IGNORE(ckt); |
|
|
|
|
|
|
|
|
switch(which) { |
|
|
switch(which) { |
|
|
case MOS3_MOD_TNOM: |
|
|
case MOS3_MOD_TNOM: |
|
|
value->rValue = here->MOS3tnom-CONSTCtoK; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3tnom-CONSTCtoK; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_VTO: |
|
|
case MOS3_MOD_VTO: |
|
|
value->rValue = here->MOS3vt0; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3vt0; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_KP: |
|
|
case MOS3_MOD_KP: |
|
|
value->rValue = here->MOS3transconductance; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3transconductance; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_GAMMA: |
|
|
case MOS3_MOD_GAMMA: |
|
|
value->rValue = here->MOS3gamma; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3gamma; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_PHI: |
|
|
case MOS3_MOD_PHI: |
|
|
value->rValue = here->MOS3phi; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3phi; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_RD: |
|
|
case MOS3_MOD_RD: |
|
|
value->rValue = here->MOS3drainResistance; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3drainResistance; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_RS: |
|
|
case MOS3_MOD_RS: |
|
|
value->rValue = here->MOS3sourceResistance; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3sourceResistance; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_CBD: |
|
|
case MOS3_MOD_CBD: |
|
|
value->rValue = here->MOS3capBD; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3capBD; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_CBS: |
|
|
case MOS3_MOD_CBS: |
|
|
value->rValue = here->MOS3capBS; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3capBS; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_IS: |
|
|
case MOS3_MOD_IS: |
|
|
value->rValue = here->MOS3jctSatCur; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3jctSatCur; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_PB: |
|
|
case MOS3_MOD_PB: |
|
|
value->rValue = here->MOS3bulkJctPotential; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3bulkJctPotential; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_CGSO: |
|
|
case MOS3_MOD_CGSO: |
|
|
value->rValue = here->MOS3gateSourceOverlapCapFactor; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3gateSourceOverlapCapFactor; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_CGDO: |
|
|
case MOS3_MOD_CGDO: |
|
|
value->rValue = here->MOS3gateDrainOverlapCapFactor; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3gateDrainOverlapCapFactor; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_CGBO: |
|
|
case MOS3_MOD_CGBO: |
|
|
value->rValue = here->MOS3gateBulkOverlapCapFactor; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3gateBulkOverlapCapFactor; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_CJ: |
|
|
case MOS3_MOD_CJ: |
|
|
value->rValue = here->MOS3bulkCapFactor; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3bulkCapFactor; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_MJ: |
|
|
case MOS3_MOD_MJ: |
|
|
value->rValue = here->MOS3bulkJctBotGradingCoeff; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3bulkJctBotGradingCoeff; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_CJSW: |
|
|
case MOS3_MOD_CJSW: |
|
|
value->rValue = here->MOS3sideWallCapFactor; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3sideWallCapFactor; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_MJSW: |
|
|
case MOS3_MOD_MJSW: |
|
|
value->rValue = here->MOS3bulkJctSideGradingCoeff; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3bulkJctSideGradingCoeff; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_JS: |
|
|
case MOS3_MOD_JS: |
|
|
value->rValue = here->MOS3jctSatCurDensity; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3jctSatCurDensity; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_TOX: |
|
|
case MOS3_MOD_TOX: |
|
|
value->rValue = here->MOS3oxideThickness; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3oxideThickness; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_LD: |
|
|
case MOS3_MOD_LD: |
|
|
value->rValue = here->MOS3latDiff; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3latDiff; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_XL: |
|
|
case MOS3_MOD_XL: |
|
|
value->rValue = here->MOS3lengthAdjust; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3lengthAdjust; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_WD: |
|
|
case MOS3_MOD_WD: |
|
|
value->rValue = here->MOS3widthNarrow; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3widthNarrow; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_XW: |
|
|
case MOS3_MOD_XW: |
|
|
value->rValue = here->MOS3widthAdjust; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3widthAdjust; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_DELVTO: |
|
|
case MOS3_MOD_DELVTO: |
|
|
value->rValue = here->MOS3delvt0; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3delvt0; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_RSH: |
|
|
case MOS3_MOD_RSH: |
|
|
value->rValue = here->MOS3sheetResistance; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3sheetResistance; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_U0: |
|
|
case MOS3_MOD_U0: |
|
|
value->rValue = here->MOS3surfaceMobility; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3surfaceMobility; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_FC: |
|
|
case MOS3_MOD_FC: |
|
|
value->rValue = here->MOS3fwdCapDepCoeff; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3fwdCapDepCoeff; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_NSUB: |
|
|
case MOS3_MOD_NSUB: |
|
|
value->rValue = here->MOS3substrateDoping; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3substrateDoping; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_TPG: |
|
|
case MOS3_MOD_TPG: |
|
|
value->iValue = here->MOS3gateType; |
|
|
|
|
|
|
|
|
value->iValue = model->MOS3gateType; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_NSS: |
|
|
case MOS3_MOD_NSS: |
|
|
value->rValue = here->MOS3surfaceStateDensity; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3surfaceStateDensity; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_NFS: |
|
|
case MOS3_MOD_NFS: |
|
|
value->rValue = here->MOS3fastSurfaceStateDensity; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3fastSurfaceStateDensity; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_DELTA: |
|
|
case MOS3_MOD_DELTA: |
|
|
value->rValue = here->MOS3narrowFactor; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3narrowFactor; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_VMAX: |
|
|
case MOS3_MOD_VMAX: |
|
|
value->rValue = here->MOS3maxDriftVel; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3maxDriftVel; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_XJ: |
|
|
case MOS3_MOD_XJ: |
|
|
value->rValue = here->MOS3junctionDepth; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3junctionDepth; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_ETA: |
|
|
case MOS3_MOD_ETA: |
|
|
value->rValue = here->MOS3eta; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3eta; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_XD: |
|
|
case MOS3_MOD_XD: |
|
|
value->rValue = here->MOS3coeffDepLayWidth; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3coeffDepLayWidth; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_DELTA: |
|
|
case MOS3_DELTA: |
|
|
value->rValue = here->MOS3delta; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3delta; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_THETA: |
|
|
case MOS3_MOD_THETA: |
|
|
value->rValue = here->MOS3theta; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3theta; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_ALPHA: |
|
|
case MOS3_MOD_ALPHA: |
|
|
value->rValue = here->MOS3alpha; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3alpha; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_KAPPA: |
|
|
case MOS3_MOD_KAPPA: |
|
|
value->rValue = here->MOS3kappa; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3kappa; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_KF: |
|
|
case MOS3_MOD_KF: |
|
|
value->rValue = here->MOS3fNcoef; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3fNcoef; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_AF: |
|
|
case MOS3_MOD_AF: |
|
|
value->rValue = here->MOS3fNexp; |
|
|
|
|
|
|
|
|
value->rValue = model->MOS3fNexp; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_NLEV: |
|
|
case MOS3_MOD_NLEV: |
|
|
value->iValue = here->MOS3nlev; |
|
|
|
|
|
|
|
|
value->iValue = model->MOS3nlev; |
|
|
return(OK); |
|
|
return(OK); |
|
|
case MOS3_MOD_TYPE: |
|
|
case MOS3_MOD_TYPE: |
|
|
if (here->MOS3type > 0) |
|
|
|
|
|
|
|
|
if (model->MOS3type > 0) |
|
|
value->sValue = "nmos"; |
|
|
value->sValue = "nmos"; |
|
|
else |
|
|
else |
|
|
value->sValue = "pmos"; |
|
|
value->sValue = "pmos"; |
|
|
|