count level=3 model poly and metal capacitance in charge calculation and correct xoi and xom units to Angstrom

This commit is contained in:
dwarning 2025-09-23 17:33:55 +02:00
parent 5afd1c53c0
commit 6d1a54523f
3 changed files with 5 additions and 9 deletions

View File

@ -461,17 +461,13 @@ next1:
deplcapSW = czof2SW*(here->DIOtF3SW+model->DIOgradingSWCoeff*vd/here->DIOtJctSWPot); deplcapSW = czof2SW*(here->DIOtF3SW+model->DIOgradingSWCoeff*vd/here->DIOtJctSWPot);
} }
/*
Dietmar: should not we also add a term (DIOcmetal+DIOcpoly)*vd to DIOcapCharge?
*/
if (model->DIOsoftRevRecParamGiven) { if (model->DIOsoftRevRecParamGiven) {
/* /*
soft recovery model with VP given and TT!=0 (secured in setup) soft recovery model with VP given and TT!=0 (secured in setup)
add only depletion capacitance. add only depletion capacitance.
*/ */
*(ckt->CKTstate0 + here->DIOcapCharge) = *(ckt->CKTstate0 + here->DIOcapCharge) =
deplcharge + deplchargeSW; deplcharge + deplchargeSW + (here->DIOcmetal + here->DIOcpoly)*vd;
capd = deplcap + deplcapSW + here->DIOcmetal + here->DIOcpoly; capd = deplcap + deplcapSW + here->DIOcmetal + here->DIOcpoly;
here->DIOcap = capd; here->DIOcap = capd;

View File

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

View File

@ -269,10 +269,10 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
model->DIOwidthPoly = 0.0; model->DIOwidthPoly = 0.0;
} }
if(!model->DIOmetalOxideThickGiven) { if(!model->DIOmetalOxideThickGiven) {
model->DIOmetalOxideThick = 1e-06; /* m */ model->DIOmetalOxideThick = 1e4; /* 10k Angstrom */
} }
if(!model->DIOpolyOxideThickGiven) { if(!model->DIOpolyOxideThickGiven) {
model->DIOpolyOxideThick = 1e-06; /* m */ model->DIOpolyOxideThick = 1e4; /* 10k Angstrom */
} }
if(!model->DIOmetalMaskOffsetGiven) { if(!model->DIOmetalMaskOffsetGiven) {
model->DIOmetalMaskOffset = 0.0; model->DIOmetalMaskOffset = 0.0;