Correct parameter handling for geometry scaled diode (level=3)

This commit is contained in:
dwarning 2021-04-03 10:23:53 +02:00 committed by Holger Vogt
parent 2a55f50192
commit 56c8a24dd7
2 changed files with 14 additions and 14 deletions

View File

@ -235,11 +235,11 @@ DIOmParam(int param, IFvalue *value, GENmodel *inModel)
model->DIOwidthPolyGiven = TRUE;
break;
case DIO_MOD_XOM:
model->DIOmetalOxideThick = value->rValue;
model->DIOmetalOxideThick = value->rValue * 1e-10; /* m */
model->DIOmetalOxideThickGiven = TRUE;
break;
case DIO_MOD_XOI:
model->DIOpolyOxideThick = value->rValue;
model->DIOpolyOxideThick = value->rValue * 1e-10; /* m */
model->DIOpolyOxideThickGiven = TRUE;
break;
case DIO_MOD_XM:

View File

@ -172,28 +172,28 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
model->DIOrecSatCur = 1e-14;
}
if(!model->DIOlengthMetal) {
if(!model->DIOlengthMetalGiven) {
model->DIOlengthMetal = 0.0;
}
if(!model->DIOlengthPoly) {
if(!model->DIOlengthPolyGiven) {
model->DIOlengthPoly = 0.0;
}
if(!model->DIOwidthMetal) {
if(!model->DIOwidthMetalGiven) {
model->DIOwidthMetal = 0.0;
}
if(!model->DIOwidthPoly) {
if(!model->DIOwidthPolyGiven) {
model->DIOwidthPoly = 0.0;
}
if(!model->DIOmetalOxideThick) {
model->DIOmetalOxideThick = 10e3;
if(!model->DIOmetalOxideThickGiven) {
model->DIOmetalOxideThick = 1e-06; /* m */
}
if(!model->DIOpolyOxideThick) {
model->DIOpolyOxideThick = 10e3;
if(!model->DIOpolyOxideThickGiven) {
model->DIOpolyOxideThick = 1e-06; /* m */
}
if(!model->DIOmetalMaskOffset) {
if(!model->DIOmetalMaskOffsetGiven) {
model->DIOmetalMaskOffset = 0.0;
}
if(!model->DIOpolyMaskOffset) {
if(!model->DIOpolyMaskOffsetGiven) {
model->DIOpolyMaskOffset = 0.0;
}
@ -232,10 +232,10 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
here->DIOjunctionCap = model->DIOjunctionCap * here->DIOarea;
here->DIOjunctionSWCap = model->DIOjunctionSWCap * here->DIOpj;
here->DIOcmetal = 3.9 * 8.854214871e-12 / model->DIOmetalOxideThick
here->DIOcmetal = CONSTepsSiO2 / model->DIOmetalOxideThick
* (model->DIOwidthMetal * scale + model->DIOmetalMaskOffset)
* (model->DIOlengthMetal * scale + model->DIOmetalMaskOffset);
here->DIOcpoly = 3.9 * 8.854214871e-12 / model->DIOpolyOxideThick
here->DIOcpoly = CONSTepsSiO2 / model->DIOpolyOxideThick
* (model->DIOwidthPoly * scale + model->DIOpolyMaskOffset)
* (model->DIOlengthPoly * scale + model->DIOpolyMaskOffset);