From c1effe3b33051e51d7924f6a0f2ac804ab97ff98 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Wed, 27 Dec 2023 12:26:56 +0100 Subject: [PATCH] Just a hack to avoid a crash during sensitivity analysis: Exclude parameter RCO from sens code, if not given, as sens sets mods->BJTintCollResistGiven to TRUE, which fails due to missing memory allocation for the extra nodes. --- src/spicelib/analysis/cktsens.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/spicelib/analysis/cktsens.c b/src/spicelib/analysis/cktsens.c index 763cc57a6..8f70c174c 100644 --- a/src/spicelib/analysis/cktsens.c +++ b/src/spicelib/analysis/cktsens.c @@ -931,7 +931,7 @@ sens_getp(sgen* sg, CKTcircuit* ckt, IFvalue* val) return error; } -/* Get parameter value */ +/* Set parameter value */ int sens_setp(sgen* sg, CKTcircuit* ckt, IFvalue* val) { @@ -954,7 +954,11 @@ sens_setp(sgen* sg, CKTcircuit* ckt, IFvalue* val) int (*fn) (int, IFvalue*, GENmodel*); fn = DEVices[sg->dev]->DEVmodParam; pid = DEVices[sg->dev]->DEVpublic.modelParms[sg->param].id; - if (fn) + + /* FIXME: just a preliminary hack. + * Exclude bipolar parameter RCO, as it crashes ngspice + * during sensitivity analysis due to missing node allocations */ + if (fn && !(sg->dev == 2 && pid == 147)) error = fn(pid, val, sg->model); else return 1;