|
|
@ -16,6 +16,8 @@ VDMOS: 2018 Holger Vogt |
|
|
|
|
|
|
|
|
static double |
|
|
static double |
|
|
cweakinv(double sl, double shift, double vgst, double vds, double lambda, double beta, double vt, double mtr); |
|
|
cweakinv(double sl, double shift, double vgst, double vds, double lambda, double beta, double vt, double mtr); |
|
|
|
|
|
static double |
|
|
|
|
|
cweakinv2(double sl, double shift, double vgst, double vds, double lambda, double beta, double vt, double mtr); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int |
|
|
int |
|
|
@ -391,22 +393,22 @@ VDMOSload(GENmodel *inModel, CKTcircuit *ckt) |
|
|
} |
|
|
} |
|
|
else if (model->VDMOSsubslGiven && (here->VDMOSmode == 1)) { |
|
|
else if (model->VDMOSsubslGiven && (here->VDMOSmode == 1)) { |
|
|
double delta = 0.001; |
|
|
double delta = 0.001; |
|
|
cdrain = cweakinv(model->VDMOSsubsl, model->VDMOSsubshift, vgst, vds, model->VDMOSlambda, |
|
|
|
|
|
|
|
|
cdrain = cweakinv2(model->VDMOSsubsl, model->VDMOSsubshift, vgst, vds, model->VDMOSlambda, |
|
|
Beta, vt, model->VDMOSmtr); |
|
|
Beta, vt, model->VDMOSmtr); |
|
|
/* gd */ |
|
|
/* gd */ |
|
|
double vds1 = vds + delta; |
|
|
double vds1 = vds + delta; |
|
|
double cdrp = cweakinv(model->VDMOSsubsl, model->VDMOSsubshift, vgst, vds1, model->VDMOSlambda, |
|
|
|
|
|
|
|
|
double cdrp = cweakinv2(model->VDMOSsubsl, model->VDMOSsubshift, vgst, vds1, model->VDMOSlambda, |
|
|
Beta, vt, model->VDMOSmtr); |
|
|
Beta, vt, model->VDMOSmtr); |
|
|
vds1 = vds - delta; |
|
|
vds1 = vds - delta; |
|
|
double cdrm = cweakinv(model->VDMOSsubsl, model->VDMOSsubshift, vgst, vds1, model->VDMOSlambda, |
|
|
|
|
|
|
|
|
double cdrm = cweakinv2(model->VDMOSsubsl, model->VDMOSsubshift, vgst, vds1, model->VDMOSlambda, |
|
|
Beta, vt, model->VDMOSmtr); |
|
|
Beta, vt, model->VDMOSmtr); |
|
|
here->VDMOSgds = (cdrp - cdrm) / (2. * delta); |
|
|
here->VDMOSgds = (cdrp - cdrm) / (2. * delta); |
|
|
/* gm */ |
|
|
/* gm */ |
|
|
double vgst1 = vgst + delta; |
|
|
double vgst1 = vgst + delta; |
|
|
cdrp = cweakinv(model->VDMOSsubsl, model->VDMOSsubshift, vgst1, vds, model->VDMOSlambda, |
|
|
|
|
|
|
|
|
cdrp = cweakinv2(model->VDMOSsubsl, model->VDMOSsubshift, vgst1, vds, model->VDMOSlambda, |
|
|
Beta, vt, model->VDMOSmtr); |
|
|
Beta, vt, model->VDMOSmtr); |
|
|
vgst1 = vgst - delta; |
|
|
vgst1 = vgst - delta; |
|
|
cdrm = cweakinv(model->VDMOSsubsl, model->VDMOSsubshift, vgst1, vds, model->VDMOSlambda, |
|
|
|
|
|
|
|
|
cdrm = cweakinv2(model->VDMOSsubsl, model->VDMOSsubshift, vgst1, vds, model->VDMOSlambda, |
|
|
Beta, vt, model->VDMOSmtr); |
|
|
Beta, vt, model->VDMOSmtr); |
|
|
here->VDMOSgm = (cdrp - cdrm) / (2. * delta); |
|
|
here->VDMOSgm = (cdrp - cdrm) / (2. * delta); |
|
|
here->VDMOSgmbs = 0.; |
|
|
here->VDMOSgmbs = 0.; |
|
|
|