From d610fa070a0aaabd26e25f31352b963cd6e76ecc Mon Sep 17 00:00:00 2001 From: dwarning Date: Fri, 19 Dec 2025 18:20:25 +0100 Subject: [PATCH] Diode sensitivity analysis: Exclude few parameters and add level 3 geometry parameter. --- src/spicelib/devices/dio/dio.c | 18 +++++++++--------- src/spicelib/devices/dio/dioask.c | 12 ++++++++++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/spicelib/devices/dio/dio.c b/src/spicelib/devices/dio/dio.c index 8814c5a1a..2ebeb2e41 100644 --- a/src/spicelib/devices/dio/dio.c +++ b/src/spicelib/devices/dio/dio.c @@ -52,10 +52,10 @@ IFparm DIOmPTable[] = { /* model parameters */ IOP( "jsw", DIO_MOD_JSW, IF_REAL, "Sidewall Saturation current"), IOPR( "isw", DIO_MOD_JSW, IF_REAL, "Sidewall Saturation current"), - IOPU( "tnom",DIO_MOD_TNOM,IF_REAL, "Parameter measurement temperature"), + IOPXU( "tnom",DIO_MOD_TNOM,IF_REAL, "Parameter measurement temperature"), IOPUR("tref",DIO_MOD_TNOM,IF_REAL, "Parameter measurement temperature"), IOP( "rs", DIO_MOD_RS, IF_REAL, "Ohmic resistance"), - IOP( "rsw", DIO_MOD_RSW, IF_REAL, "Ohmic resistance sidewall"), + IOPX( "rsw", DIO_MOD_RSW, IF_REAL, "Ohmic resistance sidewall"), IOP( "trs", DIO_MOD_TRS, IF_REAL, "Ohmic resistance 1st order temp. coeff."), IOPR( "trs1", DIO_MOD_TRS, IF_REAL, "Ohmic resistance 1st order temp. coeff."), IOP( "trs2", DIO_MOD_TRS2, IF_REAL, "Ohmic resistance 2nd order temp. coeff."), @@ -124,15 +124,15 @@ IFparm DIOmPTable[] = { /* model parameters */ IOP( "nr", DIO_MOD_NR, IF_REAL, "Recombination current emission coefficient"), /* SOA parameters */ - IOP( "fv_max", DIO_MOD_FV_MAX, IF_REAL, "maximum voltage in forward direction"), - IOP( "bv_max", DIO_MOD_BV_MAX, IF_REAL, "maximum voltage in reverse direction"), - IOP( "id_max", DIO_MOD_ID_MAX, IF_REAL, "maximum current"), - IOP( "te_max", DIO_MOD_TE_MAX, IF_REAL, "temperature"), - IOP( "pd_max", DIO_MOD_PD_MAX, IF_REAL, "maximum power dissipation"), + IOPX( "fv_max", DIO_MOD_FV_MAX, IF_REAL, "maximum voltage in forward direction"), + IOPX( "bv_max", DIO_MOD_BV_MAX, IF_REAL, "maximum voltage in reverse direction"), + IOPX( "id_max", DIO_MOD_ID_MAX, IF_REAL, "maximum current"), + IOPX( "te_max", DIO_MOD_TE_MAX, IF_REAL, "temperature"), + IOPX( "pd_max", DIO_MOD_PD_MAX, IF_REAL, "maximum power dissipation"), /* self heating */ - IOP("rth0", DIO_MOD_RTH0, IF_REAL, "Self-heating thermal resistance"), - IOP("cth0", DIO_MOD_CTH0, IF_REAL, "Self-heating thermal capacitance"), + IOPX("rth0", DIO_MOD_RTH0, IF_REAL, "Self-heating thermal resistance"), + IOPX("cth0", DIO_MOD_CTH0, IF_REAL, "Self-heating thermal capacitance"), /* scaled parasitic capacitances level 3 model */ IOP( "lm", DIO_MOD_LM, IF_REAL, "Length of metal capacitor (level=3)"), IOP( "lp", DIO_MOD_LP, IF_REAL, "Length of polysilicon capacitor (level=3)"), diff --git a/src/spicelib/devices/dio/dioask.c b/src/spicelib/devices/dio/dioask.c index 5d3a7374b..67009b889 100644 --- a/src/spicelib/devices/dio/dioask.c +++ b/src/spicelib/devices/dio/dioask.c @@ -48,6 +48,18 @@ DIOask (CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value, case DIO_M: value->rValue = here->DIOm; return(OK); + case DIO_LM: + value->rValue = here->DIOlengthMetal; + return(OK); + case DIO_LP: + value->rValue = here->DIOlengthPoly; + return(OK); + case DIO_WM: + value->rValue = here->DIOwidthMetal; + return(OK); + case DIO_WP: + value->rValue = here->DIOwidthPoly; + return(OK); case DIO_THERMAL: value->iValue = here->DIOthermal; return(OK);