Updated BSIM4 code to 4.6.5 (source and drain diode currents)
This commit is contained in:
parent
2eba12d518
commit
2ff50ea37d
|
|
@ -1,3 +1,7 @@
|
|||
2009-09-22: Paolo Nenzi
|
||||
* b4ld.c, b4temp.c: Updated BSIM4 code to BSIM 4.6.5
|
||||
according to BSIM 4.6.5 bug report.
|
||||
|
||||
2009-09-20 Holger Vogt
|
||||
* inpmkmod.c: fix bug no. 2859013
|
||||
* INSTALL corrected
|
||||
|
|
|
|||
|
|
@ -660,7 +660,7 @@ for (; model != NULL; model = model->BSIM4nextModel)
|
|||
/* Source/drain junction diode DC model begins */
|
||||
Nvtms = model->BSIM4vtm * model->BSIM4SjctEmissionCoeff;
|
||||
if ((here->BSIM4Aseff <= 0.0) && (here->BSIM4Pseff <= 0.0))
|
||||
{ SourceSatCurrent = 1.0e-14;
|
||||
{ SourceSatCurrent = 0.0;
|
||||
}
|
||||
else
|
||||
{ SourceSatCurrent = here->BSIM4Aseff * model->BSIM4SjctTempSatCurDensity
|
||||
|
|
@ -758,7 +758,7 @@ for (; model != NULL; model = model->BSIM4nextModel)
|
|||
|
||||
Nvtmd = model->BSIM4vtm * model->BSIM4DjctEmissionCoeff;
|
||||
if ((here->BSIM4Adeff <= 0.0) && (here->BSIM4Pdeff <= 0.0))
|
||||
{ DrainSatCurrent = 1.0e-14;
|
||||
{ DrainSatCurrent = 0.0;
|
||||
}
|
||||
else
|
||||
{ DrainSatCurrent = here->BSIM4Adeff * model->BSIM4DjctTempSatCurDensity
|
||||
|
|
|
|||
|
|
@ -1729,12 +1729,19 @@ int Size_Not_Found, i;
|
|||
DMDGeff = model->BSIM4dmdg - model->BSIM4dmcgt;
|
||||
|
||||
if (here->BSIM4sourcePerimeterGiven)
|
||||
{ if(here->BSIM4sourcePerimeter == 0.0)
|
||||
here->BSIM4Pseff = 0.0;
|
||||
else if (here->BSIM4sourcePerimeter < 0.0)
|
||||
{ printf("Warning: Source Perimeter is specified as negative, it is set to zero.\n");
|
||||
here->BSIM4Pseff = 0.0;}
|
||||
else
|
||||
{ if (model->BSIM4perMod == 0)
|
||||
here->BSIM4Pseff = here->BSIM4sourcePerimeter;
|
||||
else
|
||||
here->BSIM4Pseff = here->BSIM4sourcePerimeter
|
||||
- pParam->BSIM4weffCJ * here->BSIM4nf;
|
||||
}
|
||||
}
|
||||
else
|
||||
BSIM4PAeffGeo(here->BSIM4nf, here->BSIM4geoMod, here->BSIM4min,
|
||||
pParam->BSIM4weffCJ, DMCGeff, DMCIeff, DMDGeff,
|
||||
|
|
@ -1745,12 +1752,19 @@ int Size_Not_Found, i;
|
|||
|
||||
|
||||
if (here->BSIM4drainPerimeterGiven)
|
||||
{ if(here->BSIM4drainPerimeter = 0.0)
|
||||
here->BSIM4Pdeff = 0.0;
|
||||
else if(here->BSIM4drainPerimeter < 0.0)
|
||||
{ printf("Warning: Drain Perimeter is specified as negative, it is set to zero\n");
|
||||
here->BSIM4Pdeff = 0.0;}
|
||||
else
|
||||
{ if (model->BSIM4perMod == 0)
|
||||
here->BSIM4Pdeff = here->BSIM4drainPerimeter;
|
||||
else
|
||||
here->BSIM4Pdeff = here->BSIM4drainPerimeter
|
||||
- pParam->BSIM4weffCJ * here->BSIM4nf;
|
||||
}
|
||||
}
|
||||
else
|
||||
BSIM4PAeffGeo(here->BSIM4nf, here->BSIM4geoMod, here->BSIM4min,
|
||||
pParam->BSIM4weffCJ, DMCGeff, DMCIeff, DMDGeff,
|
||||
|
|
@ -1840,7 +1854,7 @@ int Size_Not_Found, i;
|
|||
|
||||
Nvtms = model->BSIM4vtm * model->BSIM4SjctEmissionCoeff;
|
||||
if ((here->BSIM4Aseff <= 0.0) && (here->BSIM4Pseff <= 0.0))
|
||||
{ SourceSatCurrent = 1.0e-14;
|
||||
{ SourceSatCurrent = 0.0;
|
||||
}
|
||||
else
|
||||
{ SourceSatCurrent = here->BSIM4Aseff * model->BSIM4SjctTempSatCurDensity
|
||||
|
|
@ -1899,7 +1913,7 @@ int Size_Not_Found, i;
|
|||
|
||||
Nvtmd = model->BSIM4vtm * model->BSIM4DjctEmissionCoeff;
|
||||
if ((here->BSIM4Adeff <= 0.0) && (here->BSIM4Pdeff <= 0.0))
|
||||
{ DrainSatCurrent = 1.0e-14;
|
||||
{ DrainSatCurrent = 0.0;
|
||||
}
|
||||
else
|
||||
{ DrainSatCurrent = here->BSIM4Adeff * model->BSIM4DjctTempSatCurDensity
|
||||
|
|
|
|||
Loading…
Reference in New Issue