Add optional series resistance or junction capacitance, if non
is defined in the .model statement. This may help achieving convergence if subcircut models of opamps etc use simple diodes as voltage limiters. Example call: .options diode_cj0=20p diode_rser=20m
This commit is contained in:
parent
b14420803a
commit
6ec6e1c723
|
|
@ -79,7 +79,20 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
model->DIOtranTimeTemp2 = 0.0;
|
||||
}
|
||||
if(!model->DIOjunctionCapGiven) {
|
||||
model->DIOjunctionCap = 0;
|
||||
if (newcompat.ps || newcompat.lt) {
|
||||
double cdiode = 0.;
|
||||
/* to improve convergence (sometimes) */
|
||||
if (cp_getvar("diode_cj0", CP_REAL, &cdiode, 0) && cdiode > 0) {
|
||||
model->DIOjunctionCap = cdiode;
|
||||
if (ft_ngdebug)
|
||||
fprintf(stderr, "Diode junction capacitance in model %s set to %e F\n", model->gen.GENmodName, cdiode);
|
||||
}
|
||||
else
|
||||
model->DIOjunctionCap = 0.0;
|
||||
}
|
||||
else {
|
||||
model->DIOjunctionCap = 0.0;
|
||||
}
|
||||
}
|
||||
if(!model->DIOjunctionSWCapGiven) {
|
||||
model->DIOjunctionSWCap = 0;
|
||||
|
|
@ -210,10 +223,12 @@ DIOsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *states)
|
|||
if((!model->DIOresistGiven) || (model->DIOresist==0)) {
|
||||
if (newcompat.ps || newcompat.lt) {
|
||||
double rsdiode = 0.;
|
||||
if (cp_getvar("rsdiode", CP_REAL, &rsdiode, 0) && rsdiode > 0) {
|
||||
model->DIOconductance = 1./rsdiode; /* sometimes improves convergence */
|
||||
/* to improve convergence (sometimes) */
|
||||
if (cp_getvar("diode_rser", CP_REAL, &rsdiode, 0) && rsdiode > 0) {
|
||||
model->DIOconductance = 1./rsdiode;
|
||||
model->DIOresist = rsdiode;
|
||||
if (ft_ngdebug)
|
||||
fprintf(stderr, "Diode series resistance in model %s set to 100 microOhm\n", model->gen.GENmodName);
|
||||
fprintf(stderr, "Diode series resistance in model %s set to %e Ohm\n", model->gen.GENmodName, rsdiode);
|
||||
}
|
||||
else
|
||||
model->DIOconductance = 0.0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue