devices/bsim3v32: reposition DrainSatCurrent block
This commit is contained in:
parent
05a9a8931d
commit
959ee9cfbb
|
|
@ -351,6 +351,15 @@ for (; model != NULL; model = model->BSIM3v32nextModel)
|
||||||
+ here->BSIM3v32sourcePerimeter
|
+ here->BSIM3v32sourcePerimeter
|
||||||
* model->BSIM3v32jctSidewallTempSatCurDensity;
|
* model->BSIM3v32jctSidewallTempSatCurDensity;
|
||||||
}
|
}
|
||||||
|
if ((here->BSIM3v32drainArea <= 0.0) && (here->BSIM3v32drainPerimeter <= 0.0))
|
||||||
|
{ DrainSatCurrent = 1.0e-14;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ DrainSatCurrent = here->BSIM3v32drainArea
|
||||||
|
* model->BSIM3v32jctTempSatCurDensity
|
||||||
|
+ here->BSIM3v32drainPerimeter
|
||||||
|
* model->BSIM3v32jctSidewallTempSatCurDensity;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -366,6 +375,18 @@ for (; model != NULL; model = model->BSIM3v32nextModel)
|
||||||
}
|
}
|
||||||
SourceSatCurrent = SourceSatCurrent + here->BSIM3v32sourcePerimeter * model->BSIM3v32jctSidewallTempSatCurDensity;
|
SourceSatCurrent = SourceSatCurrent + here->BSIM3v32sourcePerimeter * model->BSIM3v32jctSidewallTempSatCurDensity;
|
||||||
if (SourceSatCurrent <= 0.0) SourceSatCurrent = 1.0e-14;
|
if (SourceSatCurrent <= 0.0) SourceSatCurrent = 1.0e-14;
|
||||||
|
DrainSatCurrent = 0.0;
|
||||||
|
if (!here->BSIM3v32drainAreaGiven)
|
||||||
|
{
|
||||||
|
here->BSIM3v32drainArea = 2.0 * model->BSIM3v32hdif * pParam->BSIM3v32weff;
|
||||||
|
}
|
||||||
|
DrainSatCurrent = here->BSIM3v32drainArea * model->BSIM3v32jctTempSatCurDensity;
|
||||||
|
if (!here->BSIM3v32drainPerimeterGiven)
|
||||||
|
{
|
||||||
|
here->BSIM3v32drainPerimeter = 4.0 * model->BSIM3v32hdif + 2.0 * pParam->BSIM3v32weff;
|
||||||
|
}
|
||||||
|
DrainSatCurrent = DrainSatCurrent + here->BSIM3v32drainPerimeter * model->BSIM3v32jctSidewallTempSatCurDensity;
|
||||||
|
if (DrainSatCurrent <= 0.0) DrainSatCurrent = 1.0e-14;
|
||||||
}
|
}
|
||||||
if (SourceSatCurrent <= 0.0)
|
if (SourceSatCurrent <= 0.0)
|
||||||
{ here->BSIM3v32gbs = ckt->CKTgmin;
|
{ here->BSIM3v32gbs = ckt->CKTgmin;
|
||||||
|
|
@ -408,34 +429,6 @@ for (; model != NULL; model = model->BSIM3v32nextModel)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* acm model */
|
|
||||||
if (model->BSIM3v32acmMod == 0)
|
|
||||||
{
|
|
||||||
if ((here->BSIM3v32drainArea <= 0.0) && (here->BSIM3v32drainPerimeter <= 0.0))
|
|
||||||
{ DrainSatCurrent = 1.0e-14;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ DrainSatCurrent = here->BSIM3v32drainArea
|
|
||||||
* model->BSIM3v32jctTempSatCurDensity
|
|
||||||
+ here->BSIM3v32drainPerimeter
|
|
||||||
* model->BSIM3v32jctSidewallTempSatCurDensity;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DrainSatCurrent = 0.0;
|
|
||||||
if (!here->BSIM3v32drainAreaGiven)
|
|
||||||
{
|
|
||||||
here->BSIM3v32drainArea = 2.0 * model->BSIM3v32hdif * pParam->BSIM3v32weff;
|
|
||||||
}
|
|
||||||
DrainSatCurrent = here->BSIM3v32drainArea * model->BSIM3v32jctTempSatCurDensity;
|
|
||||||
if (!here->BSIM3v32drainPerimeterGiven)
|
|
||||||
{
|
|
||||||
here->BSIM3v32drainPerimeter = 4.0 * model->BSIM3v32hdif + 2.0 * pParam->BSIM3v32weff;
|
|
||||||
}
|
|
||||||
DrainSatCurrent = DrainSatCurrent + here->BSIM3v32drainPerimeter * model->BSIM3v32jctSidewallTempSatCurDensity;
|
|
||||||
if (DrainSatCurrent <= 0.0) DrainSatCurrent = 1.0e-14;
|
|
||||||
}
|
|
||||||
if (DrainSatCurrent <= 0.0)
|
if (DrainSatCurrent <= 0.0)
|
||||||
{ here->BSIM3v32gbd = ckt->CKTgmin;
|
{ here->BSIM3v32gbd = ckt->CKTgmin;
|
||||||
here->BSIM3v32cbd = here->BSIM3v32gbd * vbd;
|
here->BSIM3v32cbd = here->BSIM3v32gbd * vbd;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue