diff --git a/src/spicelib/devices/vdmos/vdmos.c b/src/spicelib/devices/vdmos/vdmos.c index 9b0c5dd84..7a7adedfd 100644 --- a/src/spicelib/devices/vdmos/vdmos.c +++ b/src/spicelib/devices/vdmos/vdmos.c @@ -115,19 +115,6 @@ IFparm VDMOSmPTable[] = { /* model parameters */ IP("vdmosn", VDMOS_MOD_NMOS, IF_FLAG, "N type DMOSfet model"), IP("vdmosp", VDMOS_MOD_PMOS, IF_FLAG, "P type DMOSfet model"), IP("vdmos", VDMOS_MOD_DMOS, IF_REAL, "DMOS transistor"), - -/* MOS1 */ - IOP("gamma", VDMOS_MOD_GAMMA, IF_REAL, "Bulk threshold parameter"), - IOPA("cbd", VDMOS_MOD_CBD, IF_REAL, "B-D junction capacitance"), - IOPA("cbs", VDMOS_MOD_CBS, IF_REAL, "B-S junction capacitance"), - IOPA("cj", VDMOS_MOD_CJ, IF_REAL, "Bottom junction cap per area"), - IOP("js", VDMOS_MOD_JS, IF_REAL, "Bulk jct. sat. current density"), - IOP("tox", VDMOS_MOD_TOX, IF_REAL, "Oxide thickness"), - IOP("u0", VDMOS_MOD_U0, IF_REAL, "Surface mobility"), - IOPR("uo", VDMOS_MOD_U0, IF_REAL, "Surface mobility"), - IOP("nsub", VDMOS_MOD_NSUB, IF_REAL, "Substrate doping"), - IOP("tpg", VDMOS_MOD_TPG, IF_INTEGER,"Gate type"), - IOP("nss", VDMOS_MOD_NSS, IF_REAL, "Surface state density") }; char *VDMOSnames[] = { diff --git a/src/spicelib/devices/vdmos/vdmosdefs.h b/src/spicelib/devices/vdmos/vdmosdefs.h index ce89c5723..c495a6d0d 100644 --- a/src/spicelib/devices/vdmos/vdmosdefs.h +++ b/src/spicelib/devices/vdmos/vdmosdefs.h @@ -57,18 +57,11 @@ typedef struct sVDMOSinstance { double VDMOSdtemp; /* operating temperature of the instance relative to circuit temperature*/ double VDMOStTransconductance; /* temperature corrected transconductance*/ - double VDMOStSurfMob; /* temperature corrected surface mobility */ - double VDMOStPhi; /* temperature corrected Phi */ double VDMOStVto; /* temperature corrected Vto */ double VDMOStSatCur; /* temperature corrected saturation Cur. */ - double VDMOStSatCurDens; /* temperature corrected saturation Cur. density*/ - double VDMOStCbd; /* temperature corrected B-D Capacitance */ - double VDMOStCbs; /* temperature corrected B-S Capacitance */ - double VDMOStCj; /* temperature corrected Bulk bottom Capacitance */ double VDMOStBulkPot; /* temperature corrected Bulk potential */ double VDMOStDepCap; /* temperature adjusted transition point in */ /* the cureve matching Fc * Vj */ - double VDMOStVbi; /* temperature adjusted Vbi */ double VDMOSicVBS; /* initial condition B-S voltage */ double VDMOSicVDS; /* initial condition D-S voltage */ @@ -285,7 +278,6 @@ typedef struct sVDMOSmodel { /* model structure for a resistor */ int VDMOStype; /* device type : 1 = nmos, -1 = pmos */ double VDMOStnom; /* temperature at which parameters measured */ - double VDMOSjctSatCurDensity; /* input - use tSatCurDens */ double VDMOSjctSatCur; /* input - use tSatCur */ double VDMOSdrainResistance; double VDMOSsourceResistance; @@ -294,20 +286,11 @@ typedef struct sVDMOSmodel { /* model structure for a resistor */ double VDMOStransconductance; /* input - use tTransconductance */ double VDMOSoxideCapFactor; double VDMOSvt0; /* input - use tVto */ - double VDMOScapBD; /* input - use tCbd */ - double VDMOScapBS; /* input - use tCbs */ - double VDMOSbulkCapFactor; /* input - use tCj */ double VDMOSbulkJctPotential; /* input - use tBulkPot */ double VDMOSbulkJctBotGradingCoeff; double VDMOSfwdCapDepCoeff; double VDMOSphi; /* input - use tPhi */ - double VDMOSgamma; double VDMOSlambda; - double VDMOSsubstrateDoping; - int VDMOSgateType; - double VDMOSsurfaceStateDensity; - double VDMOSoxideThickness; - double VDMOSsurfaceMobility; /* input - use tSurfMob */ double VDMOSfNcoef; double VDMOSfNexp; double VDMOScgdmin; @@ -316,27 +299,17 @@ typedef struct sVDMOSmodel { /* model structure for a resistor */ double VDMOScgs; unsigned VDMOStypeGiven :1; - unsigned VDMOSjctSatCurDensityGiven :1; unsigned VDMOSjctSatCurGiven :1; unsigned VDMOSdrainResistanceGiven :1; unsigned VDMOSsourceResistanceGiven :1; unsigned VDMOSgateResistanceGiven :1; unsigned VDMOStransconductanceGiven :1; unsigned VDMOSvt0Given :1; - unsigned VDMOScapBDGiven :1; - unsigned VDMOScapBSGiven :1; - unsigned VDMOSbulkCapFactorGiven :1; unsigned VDMOSbulkJctPotentialGiven :1; unsigned VDMOSbulkJctBotGradingCoeffGiven :1; unsigned VDMOSfwdCapDepCoeffGiven :1; unsigned VDMOSphiGiven :1; - unsigned VDMOSgammaGiven :1; unsigned VDMOSlambdaGiven :1; - unsigned VDMOSsubstrateDopingGiven :1; - unsigned VDMOSgateTypeGiven :1; - unsigned VDMOSsurfaceStateDensityGiven :1; - unsigned VDMOSoxideThicknessGiven :1; - unsigned VDMOSsurfaceMobilityGiven :1; unsigned VDMOStnomGiven :1; unsigned VDMOSfNcoefGiven :1; unsigned VDMOSfNexpGiven :1; @@ -375,25 +348,15 @@ enum { enum { VDMOS_MOD_VTO = 101, VDMOS_MOD_KP, - VDMOS_MOD_GAMMA, VDMOS_MOD_PHI, VDMOS_MOD_LAMBDA, VDMOS_MOD_RD, VDMOS_MOD_RS, VDMOS_MOD_RG, - VDMOS_MOD_CBD, - VDMOS_MOD_CBS, VDMOS_MOD_IS, VDMOS_MOD_VJ, - VDMOS_MOD_CJ, VDMOS_MOD_MJ, - VDMOS_MOD_JS, - VDMOS_MOD_TOX, - VDMOS_MOD_U0, VDMOS_MOD_FC, - VDMOS_MOD_NSUB, - VDMOS_MOD_TPG, - VDMOS_MOD_NSS, VDMOS_MOD_NMOS, VDMOS_MOD_PMOS, VDMOS_MOD_TNOM, diff --git a/src/spicelib/devices/vdmos/vdmosdset.c b/src/spicelib/devices/vdmos/vdmosdset.c index f69b32768..3dbac23d9 100644 --- a/src/spicelib/devices/vdmos/vdmosdset.c +++ b/src/spicelib/devices/vdmos/vdmosdset.c @@ -29,16 +29,12 @@ VDMOSdSetup(GENmodel *inModel, CKTcircuit *ckt) double ebd; double vgst; double evbs; - double sargsw; double vbd; double vbs; double vds; - double arg; - double sarg; double vdsat; double vgd; double vgs; - double von; double vt; double lgbs; double lgbs2; @@ -67,10 +63,10 @@ VDMOSdSetup(GENmodel *inModel, CKTcircuit *ckt) double lcapgs3; double lcapgd2; double lcapgd3; - double lcapbs2; - double lcapbs3; - double lcapbd2; - double lcapbd3; + double lcapbs2 = 0; + double lcapbs3 = 0; + double lcapbd2 = 0; + double lcapbd3 = 0; double gmbds = 0.0; @@ -158,37 +154,9 @@ VDMOSdSetup(GENmodel *inModel, CKTcircuit *ckt) double d2vondvbs2; double d3vondvbs3; - if ((here->VDMOSmode==1?vbs:vbd) <= 0 ) { - sarg=sqrt(here->VDMOStPhi-(here->VDMOSmode==1?vbs:vbd)); - if (-model->VDMOSgamma != 0.0) { - dvondvbs = -model->VDMOSgamma*0.5/sarg; - d2vondvbs2 = - dvondvbs*0.5/(sarg*sarg); - d3vondvbs3 = 1.5*d2vondvbs2/(sarg*sarg); - } - else { dvondvbs = d2vondvbs2 = d3vondvbs3 = 0.0; - } - } else { - sarg=sqrt(here->VDMOStPhi); - if (model->VDMOSgamma != 0.0) { - dvondvbs = -model->VDMOSgamma/(sarg+sarg); - } - else { - dvondvbs = 0.0; - } - d2vondvbs2 = d3vondvbs3 = 0; - sarg=sarg-(here->VDMOSmode==1?vbs:vbd)/(sarg+sarg); - sarg=MAX(0,sarg); - dvondvbs = (sarg<=0?0:dvondvbs); - } - von=(here->VDMOStVbi*model->VDMOStype)+model->VDMOSgamma*sarg; - vgst=(here->VDMOSmode==1?vgs:vgd)-von; + vgst=(here->VDMOSmode==1?vgs:vgd); vdsat=MAX(vgst,0); -/* if (sarg <= 0) { - arg=0; - } else { - arg=model->VDMOSgamma/(sarg+sarg); - } */ if (vgst <= 0) { /* * cutoff region @@ -314,7 +282,7 @@ VDMOSdSetup(GENmodel *inModel, CKTcircuit *ckt) - phi = here->VDMOStPhi; + phi = 0.6; cox = 0;/*FIXME: can we do disto without knowing the oxide thickness?*/ if (vgst <= -phi) { lcapgb2=lcapgb3=lcapgs2=lcapgs3=lcapgd2=lcapgd3=0; diff --git a/src/spicelib/devices/vdmos/vdmosload.c b/src/spicelib/devices/vdmos/vdmosload.c index 34c272135..3799746e5 100644 --- a/src/spicelib/devices/vdmos/vdmosload.c +++ b/src/spicelib/devices/vdmos/vdmosload.c @@ -394,26 +394,12 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt) */ double arg; double betap; - double sarg; double vgst; - if ((here->VDMOSmode == 1 ? vbs : vbd) <= 0) { - sarg = sqrt(here->VDMOStPhi - (here->VDMOSmode == 1 ? vbs : vbd)); - } - else { - sarg = sqrt(here->VDMOStPhi); - sarg = sarg - (here->VDMOSmode == 1 ? vbs : vbd) / (sarg + sarg); - sarg = MAX(0, sarg); - } - von = (here->VDMOStVbi*model->VDMOStype) + model->VDMOSgamma*sarg; + von = (model->VDMOSvt0*model->VDMOStype); vgst = (here->VDMOSmode == 1 ? vgs : vgd) - von; vdsat = MAX(vgst, 0); - if (sarg <= 0) { - arg = 0; - } - else { - arg = model->VDMOSgamma / (sarg + sarg); - } + arg = 0; if (vgst <= 0) { /* * cutoff region diff --git a/src/spicelib/devices/vdmos/vdmosmask.c b/src/spicelib/devices/vdmos/vdmosmask.c index 2bfe5c92e..50da90b3b 100644 --- a/src/spicelib/devices/vdmos/vdmosmask.c +++ b/src/spicelib/devices/vdmos/vdmosmask.c @@ -30,9 +30,6 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value) case VDMOS_MOD_KP: value->rValue = model->VDMOStransconductance; return(OK); - case VDMOS_MOD_GAMMA: - value->rValue = model->VDMOSgamma; - return(OK); case VDMOS_MOD_PHI: value->rValue = model->VDMOSphi; return(OK); @@ -48,9 +45,6 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value) case VDMOS_MOD_RG: value->rValue = model->VDMOSgateResistance; return(OK); - case VDMOS_MOD_CBD: - value->rValue = model->VDMOScapBD; - return(OK); case VDMOS_MOD_TYPE: if (model->VDMOStype > 0) value->sValue = "vdmosn"; @@ -60,9 +54,6 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value) case VDMOS_MOD_CGDMIN: value->rValue = model->VDMOScgdmin; return(OK); - case VDMOS_MOD_CBS: - value->rValue = model->VDMOScapBS; - return(OK); case VDMOS_MOD_CGDMAX: value->rValue = model->VDMOScgdmax; return(OK); @@ -78,33 +69,12 @@ VDMOSmAsk(CKTcircuit *ckt, GENmodel *inst, int which, IFvalue *value) case VDMOS_MOD_VJ: value->rValue = model->VDMOSbulkJctPotential; return(OK); - case VDMOS_MOD_CJ: - value->rValue = model->VDMOSbulkCapFactor; - return(OK); case VDMOS_MOD_MJ: value->rValue = model->VDMOSbulkJctBotGradingCoeff; return(OK); - case VDMOS_MOD_JS: - value->rValue = model->VDMOSjctSatCurDensity; - return(OK); - case VDMOS_MOD_TOX: - value->rValue = model->VDMOSoxideThickness; - return(OK); - case VDMOS_MOD_U0: - value->rValue = model->VDMOSsurfaceMobility; - return(OK); case VDMOS_MOD_FC: value->rValue = model->VDMOSfwdCapDepCoeff; return(OK); - case VDMOS_MOD_NSUB: - value->rValue = model->VDMOSsubstrateDoping; - return(OK); - case VDMOS_MOD_TPG: - value->iValue = model->VDMOSgateType; - return(OK); - case VDMOS_MOD_NSS: - value->rValue = model->VDMOSsurfaceStateDensity; - return(OK); default: return(E_BADPARM); } diff --git a/src/spicelib/devices/vdmos/vdmosmpar.c b/src/spicelib/devices/vdmos/vdmosmpar.c index 9b68bde0c..ca979acd8 100644 --- a/src/spicelib/devices/vdmos/vdmosmpar.c +++ b/src/spicelib/devices/vdmos/vdmosmpar.c @@ -27,10 +27,6 @@ VDMOSmParam(int param, IFvalue *value, GENmodel *inModel) model->VDMOStransconductance = value->rValue; model->VDMOStransconductanceGiven = TRUE; break; - case VDMOS_MOD_GAMMA: - model->VDMOSgamma = value->rValue; - model->VDMOSgammaGiven = TRUE; - break; case VDMOS_MOD_PHI: model->VDMOSphi = value->rValue; model->VDMOSphiGiven = TRUE; @@ -51,14 +47,6 @@ VDMOSmParam(int param, IFvalue *value, GENmodel *inModel) model->VDMOSgateResistance = value->rValue; model->VDMOSgateResistanceGiven = TRUE; break; - case VDMOS_MOD_CBD: - model->VDMOScapBD = value->rValue; - model->VDMOScapBDGiven = TRUE; - break; - case VDMOS_MOD_CBS: - model->VDMOScapBS = value->rValue; - model->VDMOScapBSGiven = TRUE; - break; case VDMOS_MOD_IS: model->VDMOSjctSatCur = value->rValue; model->VDMOSjctSatCurGiven = TRUE; @@ -67,42 +55,14 @@ VDMOSmParam(int param, IFvalue *value, GENmodel *inModel) model->VDMOSbulkJctPotential = value->rValue; model->VDMOSbulkJctPotentialGiven = TRUE; break; - case VDMOS_MOD_CJ: - model->VDMOSbulkCapFactor = value->rValue; - model->VDMOSbulkCapFactorGiven = TRUE; - break; case VDMOS_MOD_MJ: model->VDMOSbulkJctBotGradingCoeff = value->rValue; model->VDMOSbulkJctBotGradingCoeffGiven = TRUE; break; - case VDMOS_MOD_JS: - model->VDMOSjctSatCurDensity = value->rValue; - model->VDMOSjctSatCurDensityGiven = TRUE; - break; - case VDMOS_MOD_TOX: - model->VDMOSoxideThickness = value->rValue; - model->VDMOSoxideThicknessGiven = TRUE; - break; - case VDMOS_MOD_U0: - model->VDMOSsurfaceMobility = value->rValue; - model->VDMOSsurfaceMobilityGiven = TRUE; - break; case VDMOS_MOD_FC: model->VDMOSfwdCapDepCoeff = value->rValue; model->VDMOSfwdCapDepCoeffGiven = TRUE; break; - case VDMOS_MOD_NSS: - model->VDMOSsurfaceStateDensity = value->rValue; - model->VDMOSsurfaceStateDensityGiven = TRUE; - break; - case VDMOS_MOD_NSUB: - model->VDMOSsubstrateDoping = value->rValue; - model->VDMOSsubstrateDopingGiven = TRUE; - break; - case VDMOS_MOD_TPG: - model->VDMOSgateType = value->iValue; - model->VDMOSgateTypeGiven = TRUE; - break; case VDMOS_MOD_NMOS: if(value->iValue) { model->VDMOStype = 1; diff --git a/src/spicelib/devices/vdmos/vdmosset.c b/src/spicelib/devices/vdmos/vdmosset.c index ee7307075..cd66c5b8b 100644 --- a/src/spicelib/devices/vdmos/vdmosset.c +++ b/src/spicelib/devices/vdmos/vdmosset.c @@ -30,9 +30,6 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, if (!model->VDMOStypeGiven) { model->VDMOStype = NMOS; } - if (!model->VDMOSjctSatCurDensityGiven) { - model->VDMOSjctSatCurDensity = 0; - } if (!model->VDMOSjctSatCurGiven) { model->VDMOSjctSatCur = 1e-14; } @@ -42,9 +39,6 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, if (!model->VDMOSvt0Given) { model->VDMOSvt0 = 0; } - if (!model->VDMOSbulkCapFactorGiven) { - model->VDMOSbulkCapFactor = 0; - } if (!model->VDMOSbulkJctPotentialGiven) { model->VDMOSbulkJctPotential = .8; } @@ -60,9 +54,6 @@ VDMOSsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, if (!model->VDMOSlambdaGiven) { model->VDMOSlambda = 0; } - if (!model->VDMOSgammaGiven) { - model->VDMOSgamma = 0; - } if (!model->VDMOSfNcoefGiven) { model->VDMOSfNcoef = 0; } diff --git a/src/spicelib/devices/vdmos/vdmostemp.c b/src/spicelib/devices/vdmos/vdmostemp.c index a2d633f04..c4d218928 100644 --- a/src/spicelib/devices/vdmos/vdmostemp.c +++ b/src/spicelib/devices/vdmos/vdmostemp.c @@ -22,17 +22,8 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt) double kt,kt1; double arg1; double ratio,ratio4; - double phio; - double pbo; - double gmanew,gmaold; - double capfact; double pbfact1,pbfact; double vt,vtnom; - double wkfngs; - double wkfng; - double fermig; - double fermis; - double vfb; /* loop through all the resistor models */ for( ; model != NULL; model = VDMOSnextModel(model)) { @@ -52,65 +43,7 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt) /* now model parameter preprocessing */ - if (model->VDMOSphi <= 0.0) { - SPfrontEnd->IFerrorf (ERR_FATAL, - "%s: Phi is not positive.", model->VDMOSmodName); - return(E_BADPARM); - } - - if(!model->VDMOSoxideThicknessGiven || model->VDMOSoxideThickness == 0) { - model->VDMOSoxideCapFactor = 0; - } else { - model->VDMOSoxideCapFactor = 3.9 * 8.854214871e-12/ - model->VDMOSoxideThickness; - if(!model->VDMOStransconductanceGiven) { - if(!model->VDMOSsurfaceMobilityGiven) { - model->VDMOSsurfaceMobility=600; - } - model->VDMOStransconductance = model->VDMOSsurfaceMobility * - model->VDMOSoxideCapFactor * 1e-4 /*(m**2/cm**2)*/; - } - if(model->VDMOSsubstrateDopingGiven) { - if(model->VDMOSsubstrateDoping*1e6 /*(cm**3/m**3)*/ >1.45e16) { - if(!model->VDMOSphiGiven) { - model->VDMOSphi = 2*vtnom* - log(model->VDMOSsubstrateDoping* - 1e6/*(cm**3/m**3)*//1.45e16); - model->VDMOSphi = MAX(.1,model->VDMOSphi); - } - fermis = model->VDMOStype * .5 * model->VDMOSphi; - wkfng = 3.2; - if(!model->VDMOSgateTypeGiven) model->VDMOSgateType=1; - if(model->VDMOSgateType != 0) { - fermig = model->VDMOStype *model->VDMOSgateType*.5*egfet1; - wkfng = 3.25 + .5 * egfet1 - fermig; - } - wkfngs = wkfng - (3.25 + .5 * egfet1 +fermis); - if(!model->VDMOSgammaGiven) { - model->VDMOSgamma = sqrt(2 * 11.70 * 8.854214871e-12 * - CHARGE * model->VDMOSsubstrateDoping* - 1e6/*(cm**3/m**3)*/)/ - model->VDMOSoxideCapFactor; - } - if(!model->VDMOSvt0Given) { - if(!model->VDMOSsurfaceStateDensityGiven) - model->VDMOSsurfaceStateDensity=0; - vfb = wkfngs - - model->VDMOSsurfaceStateDensity * - 1e4 /*(cm**2/m**2)*/ * - CHARGE/model->VDMOSoxideCapFactor; - model->VDMOSvt0 = vfb + model->VDMOStype * - (model->VDMOSgamma * sqrt(model->VDMOSphi)+ - model->VDMOSphi); - } - } else { - model->VDMOSsubstrateDoping = 0; - SPfrontEnd->IFerrorf (ERR_FATAL, - "%s: Nsub < Ni", model->VDMOSmodName); - return(E_BADPARM); - } - } - } + model->VDMOSoxideCapFactor = 0; /* loop through all instances of the model */ @@ -147,39 +80,7 @@ VDMOStemp(GENmodel *inModel, CKTcircuit *ckt) ratio4 = ratio * sqrt(ratio); here->VDMOStTransconductance = model->VDMOStransconductance / ratio4; - here->VDMOStSurfMob = model->VDMOSsurfaceMobility/ratio4; - phio= (model->VDMOSphi-pbfact1)/fact1; - here->VDMOStPhi = fact2 * phio + pbfact; - here->VDMOStVbi = - model->VDMOSvt0 - model->VDMOStype * - (model->VDMOSgamma* sqrt(model->VDMOSphi)) - +.5*(egfet1-egfet) - + model->VDMOStype*.5* (here->VDMOStPhi-model->VDMOSphi); - here->VDMOStVto = here->VDMOStVbi + model->VDMOStype * - model->VDMOSgamma * sqrt(here->VDMOStPhi); - here->VDMOStSatCur = model->VDMOSjctSatCur* - exp(-egfet/vt+egfet1/vtnom); - here->VDMOStSatCurDens = model->VDMOSjctSatCurDensity * - exp(-egfet/vt+egfet1/vtnom); - pbo = (model->VDMOSbulkJctPotential - pbfact1)/fact1; - gmaold = (model->VDMOSbulkJctPotential-pbo)/pbo; - capfact = 1/(1+model->VDMOSbulkJctBotGradingCoeff* - (4e-4*(model->VDMOStnom-REFTEMP)-gmaold)); - here->VDMOStCbd = model->VDMOScapBD * capfact; - here->VDMOStCbs = model->VDMOScapBS * capfact; - here->VDMOStCj = model->VDMOSbulkCapFactor * capfact; - here->VDMOStBulkPot = fact2 * pbo+pbfact; - gmanew = (here->VDMOStBulkPot-pbo)/pbo; - capfact = (1+model->VDMOSbulkJctBotGradingCoeff* - (4e-4*(here->VDMOStemp-REFTEMP)-gmanew)); - here->VDMOStCbd *= capfact; - here->VDMOStCbs *= capfact; - here->VDMOStCj *= capfact; - here->VDMOStDepCap = model->VDMOSfwdCapDepCoeff * here->VDMOStBulkPot; - if (here->VDMOStSatCurDens == 0) { - here->VDMOSsourceVcrit = here->VDMOSdrainVcrit = - vt*log(vt/(CONSTroot2*here->VDMOSm*here->VDMOStSatCur)); - } + here->VDMOStVto = model->VDMOSvt0; here->VDMOSCbd = 0; here->VDMOSf2d = 0;