From 01dc8e5707ee3d64a8de1160ed294fac4388c1f1 Mon Sep 17 00:00:00 2001 From: pnenzi Date: Thu, 5 Feb 2004 21:25:32 +0000 Subject: [PATCH] Bug Fix: bug in gmin stepping. --- ChangeLog | 6 ++++ src/spicelib/analysis/cktntask.c | 57 ++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index fe5e57d23..47bbe0297 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-02-05 Paolo Nenzi + + * src/spicelib/analysis/cktntask.c: Bug: not all the values + of TSKtask structure were copied and got a correct default + value. The bug showed as an infinite loop in gmin stepping. + 2004-02-10 Paolo Nenzi * src/frontend/inpcom.c: Applied patch from Dietmar Warning diff --git a/src/spicelib/analysis/cktntask.c b/src/spicelib/analysis/cktntask.c index 06c1a74bb..aa654758c 100644 --- a/src/spicelib/analysis/cktntask.c +++ b/src/spicelib/analysis/cktntask.c @@ -33,36 +33,45 @@ CKTnewTask(void *ckt, void **taskPtr, IFuid taskName, void **defPtr) def = *(TSKtask **)defPtr; if ((strcmp(taskName,"special")==0) && def ) { /* create options by copying the circuit's defaults */ - tsk->TSKgmin = def->TSKgmin; - tsk->TSKabstol = def->TSKabstol; - tsk->TSKreltol = def->TSKreltol; - tsk->TSKchgtol = def->TSKchgtol; - tsk->TSKvoltTol = def->TSKvoltTol; -#ifdef NEWTRUNC - tsk->TSKlteReltol = def->TSKlteRelto; - tsk->TSKlteAbstol = def->TSKlteAbstol; -#endif /* NEWTRUNC */ - tsk->TSKtrtol = def->TSKtrtol; - tsk->TSKbypass = def->TSKbypass; - tsk->TSKtranMaxIter = def->TSKtranMaxIter; - tsk->TSKdcMaxIter = def->TSKdcMaxIter; - tsk->TSKdcTrcvMaxIter = def->TSKdcTrcvMaxIter; - tsk->TSKintegrateMethod = def->TSKintegrateMethod; - tsk->TSKmaxOrder = def->TSKmaxOrder; - tsk->TSKnumSrcSteps = def->TSKnumSrcSteps; - tsk->TSKnumGminSteps = def->TSKnumGminSteps; - tsk->TSKpivotAbsTol = def->TSKpivotAbsTol; + tsk->TSKtemp = def->TSKtemp; + tsk->TSKnomTemp = def->TSKnomTemp; + tsk->TSKmaxOrder = def->TSKmaxOrder; + tsk->TSKintegrateMethod = def->TSKintegrateMethod; + tsk->TSKbypass = def->TSKbypass; + tsk->TSKdcMaxIter = def->TSKdcMaxIter; + tsk->TSKdcTrcvMaxIter = def->TSKdcTrcvMaxIter; + tsk->TSKtranMaxIter = def->TSKtranMaxIter; + tsk->TSKnumSrcSteps = def->TSKnumSrcSteps; + tsk->TSKnumGminSteps = def->TSKnumGminSteps; + tsk->TSKgminFactor = def->TSKgminFactor; + /* minBreak */ + tsk->TSKabstol = def->TSKabstol; + tsk->TSKpivotAbsTol = def->TSKpivotAbsTol; tsk->TSKpivotRelTol = def->TSKpivotRelTol; - tsk->TSKtemp = def->TSKtemp; - tsk->TSKnomTemp = def->TSKnomTemp; + tsk->TSKreltol = def->TSKreltol; + tsk->TSKchgtol = def->TSKchgtol; + tsk->TSKvoltTol = def->TSKvoltTol; + tsk->TSKgmin = def->TSKgmin; + tsk->TSKgshunt = def->TSKgshunt; + /* delmin */ + tsk->TSKtrtol = def->TSKtrtol; tsk->TSKdefaultMosL = def->TSKdefaultMosL; tsk->TSKdefaultMosW = def->TSKdefaultMosW; tsk->TSKdefaultMosAD = def->TSKdefaultMosAD; tsk->TSKdefaultMosAS = def->TSKdefaultMosAS; - tsk->TSKnoOpIter= def->TSKnoOpIter; - tsk->TSKtryToCompact = def->TSKtryToCompact; - tsk->TSKbadMos3 = def->TSKbadMos3; + /* fixLimit */ + tsk->TSKnoOpIter= def->TSKnoOpIter; + tsk->TSKtryToCompact = def->TSKtryToCompact; + tsk->TSKbadMos3 = def->TSKbadMos3; tsk->TSKkeepOpInfo = def->TSKkeepOpInfo; + tsk->TSKcopyNodesets = def->TSKcopyNodesets; + tsk->TSKnodeDamping = def->TSKnodeDamping; + tsk->TSKabsDv = def->TSKabsDv; + tsk->TSKrelDv = def->TSKrelDv; +#ifdef NEWTRUNC + tsk->TSKlteReltol = def->TSKlteReltol; + tsk->TSKlteAbstol = def->TSKlteAbstol; +#endif /* NEWTRUNC */ } else { /* use the application defaults */ #endif /*CDHW*/