From d0b925901810bc0840f39b57ec4f2df419805675 Mon Sep 17 00:00:00 2001 From: dwarning Date: Thu, 10 Aug 2017 22:14:04 +0200 Subject: [PATCH] catch noise sweeps with 1 point and handle erronous 0 points --- src/spicelib/analysis/noisean.c | 5 ++++- src/spicelib/analysis/nsetparm.c | 10 +++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/spicelib/analysis/noisean.c b/src/spicelib/analysis/noisean.c index 22b1abc3a..8374691d4 100644 --- a/src/spicelib/analysis/noisean.c +++ b/src/spicelib/analysis/noisean.c @@ -284,7 +284,10 @@ NOISEan (CKTcircuit *ckt, int restart) break; case LINEAR: - data->freq += job->NfreqDelta; + if (job->NfreqDelta > 1e-6) + data->freq += job->NfreqDelta; + else + data->freq += (job->NfreqDelta+job->NstartFreq*ckt->CKTreltol); break; default: diff --git a/src/spicelib/analysis/nsetparm.c b/src/spicelib/analysis/nsetparm.c index 264f22649..46fe33c1c 100644 --- a/src/spicelib/analysis/nsetparm.c +++ b/src/spicelib/analysis/nsetparm.c @@ -45,7 +45,15 @@ NsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value) break; case N_STEPS: - job->NnumSteps = value->iValue; + if ((job->NstpType == LINEAR) && (value->iValue < 1)) { + errMsg = copy("Linear sweep at least 1 points"); + return(E_PARMVAL); + } + if ((job->NstpType == LINEAR) && (value->iValue == 1)) { + job->NnumSteps = 2; + } else { + job->NnumSteps = value->iValue; + } break; case N_START: