From 4b0beff839382acd4384628da480b43fb3b303d4 Mon Sep 17 00:00:00 2001 From: Matthias Schweikardt <> Date: Fri, 23 Aug 2024 09:14:31 +0200 Subject: [PATCH] extend bsim4 operating point info list --- src/spicelib/devices/bsim4/b4.c | 7 +++++++ src/spicelib/devices/bsim4/b4ask.c | 24 +++++++++++++++++++++++ src/spicelib/devices/bsim4/bsim4def.h | 8 ++++++++ src/spicelib/devices/bsim4v5/b4v5.c | 7 +++++++ src/spicelib/devices/bsim4v5/b4v5ask.c | 24 +++++++++++++++++++++++ src/spicelib/devices/bsim4v5/bsim4v5def.h | 8 ++++++++ src/spicelib/devices/bsim4v6/b4v6.c | 7 +++++++ src/spicelib/devices/bsim4v6/b4v6ask.c | 24 +++++++++++++++++++++++ src/spicelib/devices/bsim4v6/bsim4v6def.h | 8 ++++++++ src/spicelib/devices/bsim4v7/b4v7.c | 7 +++++++ src/spicelib/devices/bsim4v7/b4v7ask.c | 24 +++++++++++++++++++++++ src/spicelib/devices/bsim4v7/bsim4v7def.h | 9 +++++++++ 12 files changed, 157 insertions(+) diff --git a/src/spicelib/devices/bsim4/b4.c b/src/spicelib/devices/bsim4/b4.c index d99e30ab4..586b68cae 100644 --- a/src/spicelib/devices/bsim4/b4.c +++ b/src/spicelib/devices/bsim4/b4.c @@ -117,6 +117,13 @@ OP( "qinv", BSIM4_QINV, IF_REAL, "Qinversion"), OP( "qdef", BSIM4_QDEF, IF_REAL, "Qdef"), OP( "gcrg", BSIM4_GCRG, IF_REAL, "Gcrg"), OP( "gtau", BSIM4_GTAU, IF_REAL, "Gtau"), +OP( "vgsteff", BSIM4_VGSTEFF, IF_REAL, "Vgsteff"), +OP( "vdseff", BSIM4_VDSEFF, IF_REAL, "Vdseff"), +OP( "cgso", BSIM4_CGSO, IF_REAL, "Cgso"), +OP( "cgdo", BSIM4_CGDO, IF_REAL, "Cgdo"), +OP( "cgbo", BSIM4_CGBO, IF_REAL, "Cgbo"), +OP( "weff", BSIM4_WEFF, IF_REAL, "Weff"), +OP( "leff", BSIM4_LEFF, IF_REAL, "Leff"), }; IFparm BSIM4mPTable[] = { /* model parameters */ diff --git a/src/spicelib/devices/bsim4/b4ask.c b/src/spicelib/devices/bsim4/b4ask.c index 710065714..77dee5693 100644 --- a/src/spicelib/devices/bsim4/b4ask.c +++ b/src/spicelib/devices/bsim4/b4ask.c @@ -415,6 +415,30 @@ BSIM4instance *here = (BSIM4instance*)inst; case BSIM4_QBD: value->rValue = *(ckt->CKTstate0 + here->BSIM4qbd); return(OK); + case BSIM4_VGSTEFF: + value->rValue = here->BSIM4Vgsteff; + return(OK); + case BSIM4_VDSEFF: + value->rValue = here->BSIM4Vdseff; + return(OK); + case BSIM4_CGSO: + value->rValue = here->BSIM4cgso; + value->rValue *= here->BSIM4m; + return(OK); + case BSIM4_CGDO: + value->rValue = here->BSIM4cgdo; + value->rValue *= here->BSIM4m; + return(OK); + case BSIM4_CGBO: + value->rValue = here->pParam->BSIM4cgbo; + value->rValue *= here->BSIM4m; + return(OK); + case BSIM4_WEFF: + value->rValue = here->pParam->BSIM4weff; + return(OK); + case BSIM4_LEFF: + value->rValue = here->pParam->BSIM4leff; + return(OK); default: return(E_BADPARM); } diff --git a/src/spicelib/devices/bsim4/bsim4def.h b/src/spicelib/devices/bsim4/bsim4def.h index a2e78ff9b..42bc477c6 100644 --- a/src/spicelib/devices/bsim4/bsim4def.h +++ b/src/spicelib/devices/bsim4/bsim4def.h @@ -3876,6 +3876,14 @@ typedef struct sBSIM4model #define BSIM4_MOD_VBSR_MAX 1310 #define BSIM4_MOD_VBDR_MAX 1311 +#define BSIM4_VGSTEFF 1400 +#define BSIM4_VDSEFF 1401 +#define BSIM4_CGSO 1402 +#define BSIM4_CGDO 1403 +#define BSIM4_CGBO 1404 +#define BSIM4_WEFF 1405 +#define BSIM4_LEFF 1406 + #include "bsim4ext.h" extern void BSIM4evaluate(double,double,double,BSIM4instance*,BSIM4model*, diff --git a/src/spicelib/devices/bsim4v5/b4v5.c b/src/spicelib/devices/bsim4v5/b4v5.c index 1cb05d6a5..2d920af47 100644 --- a/src/spicelib/devices/bsim4v5/b4v5.c +++ b/src/spicelib/devices/bsim4v5/b4v5.c @@ -105,6 +105,13 @@ OP( "qinv", BSIM4v5_QINV, IF_REAL, "Qinversion"), OP( "qdef", BSIM4v5_QDEF, IF_REAL, "Qdef"), OP( "gcrg", BSIM4v5_GCRG, IF_REAL, "Gcrg"), OP( "gtau", BSIM4v5_GTAU, IF_REAL, "Gtau"), +OP( "vgsteff", BSIM4v5_VGSTEFF, IF_REAL, "Vgsteff"), +OP( "vdseff", BSIM4v5_VDSEFF, IF_REAL, "Vdseff"), +OP( "cgso", BSIM4v5_CGSO, IF_REAL, "Cgso"), +OP( "cgdo", BSIM4v5_CGDO, IF_REAL, "Cgdo"), +OP( "cgbo", BSIM4v5_CGBO, IF_REAL, "Cgbo"), +OP( "weff", BSIM4v5_WEFF, IF_REAL, "Weff"), +OP( "leff", BSIM4v5_LEFF, IF_REAL, "Leff"), }; IFparm BSIM4v5mPTable[] = { /* model parameters */ diff --git a/src/spicelib/devices/bsim4v5/b4v5ask.c b/src/spicelib/devices/bsim4v5/b4v5ask.c index 8a395bdf0..95ae3c800 100644 --- a/src/spicelib/devices/bsim4v5/b4v5ask.c +++ b/src/spicelib/devices/bsim4v5/b4v5ask.c @@ -398,6 +398,30 @@ BSIM4v5instance *here = (BSIM4v5instance*)inst; case BSIM4v5_QBD: value->rValue = *(ckt->CKTstate0 + here->BSIM4v5qbd); return(OK); + case BSIM4v5_VGSTEFF: + value->rValue = here->BSIM4v5Vgsteff; + return(OK); + case BSIM4v5_VDSEFF: + value->rValue = here->BSIM4v5Vdseff; + return(OK); + case BSIM4v5_CGSO: + value->rValue = here->BSIM4v5cgso; + value->rValue *= here->BSIM4v5m; + return(OK); + case BSIM4v5_CGDO: + value->rValue = here->BSIM4v5cgdo; + value->rValue *= here->BSIM4v5m; + return(OK); + case BSIM4v5_CGBO: + value->rValue = here->pParam->BSIM4v5cgbo; + value->rValue *= here->BSIM4v5m; + return(OK); + case BSIM4v5_WEFF: + value->rValue = here->pParam->BSIM4v5weff; + return(OK); + case BSIM4v5_LEFF: + value->rValue = here->pParam->BSIM4v5leff; + return(OK); default: return(E_BADPARM); } diff --git a/src/spicelib/devices/bsim4v5/bsim4v5def.h b/src/spicelib/devices/bsim4v5/bsim4v5def.h index dc31a35bf..2120a59d3 100644 --- a/src/spicelib/devices/bsim4v5/bsim4v5def.h +++ b/src/spicelib/devices/bsim4v5/bsim4v5def.h @@ -3408,6 +3408,14 @@ typedef struct sBSIM4v5model #define BSIM4v5_MOD_VBSR_MAX 1210 #define BSIM4v5_MOD_VBDR_MAX 1211 +#define BSIM4v5_VGSTEFF 1400 +#define BSIM4v5_VDSEFF 1401 +#define BSIM4v5_CGSO 1402 +#define BSIM4v5_CGDO 1403 +#define BSIM4v5_CGBO 1404 +#define BSIM4v5_WEFF 1405 +#define BSIM4v5_LEFF 1406 + #include "bsim4v5ext.h" extern void BSIM4v5evaluate(double,double,double,BSIM4v5instance*,BSIM4v5model*, diff --git a/src/spicelib/devices/bsim4v6/b4v6.c b/src/spicelib/devices/bsim4v6/b4v6.c index 145171ae4..1ecb91625 100644 --- a/src/spicelib/devices/bsim4v6/b4v6.c +++ b/src/spicelib/devices/bsim4v6/b4v6.c @@ -111,6 +111,13 @@ OP( "qinv", BSIM4v6_QINV, IF_REAL, "Qinversion"), OP( "qdef", BSIM4v6_QDEF, IF_REAL, "Qdef"), OP( "gcrg", BSIM4v6_GCRG, IF_REAL, "Gcrg"), OP( "gtau", BSIM4v6_GTAU, IF_REAL, "Gtau"), +OP( "vgsteff", BSIM4v6_VGSTEFF, IF_REAL, "Vgsteff"), +OP( "vdseff", BSIM4v6_VDSEFF, IF_REAL, "Vdseff"), +OP( "cgso", BSIM4v6_CGSO, IF_REAL, "Cgso"), +OP( "cgdo", BSIM4v6_CGDO, IF_REAL, "Cgdo"), +OP( "cgbo", BSIM4v6_CGBO, IF_REAL, "Cgbo"), +OP( "weff", BSIM4v6_WEFF, IF_REAL, "Weff"), +OP( "leff", BSIM4v6_LEFF, IF_REAL, "Leff"), }; IFparm BSIM4v6mPTable[] = { /* model parameters */ diff --git a/src/spicelib/devices/bsim4v6/b4v6ask.c b/src/spicelib/devices/bsim4v6/b4v6ask.c index 500f853b7..64ce8b7bc 100644 --- a/src/spicelib/devices/bsim4v6/b4v6ask.c +++ b/src/spicelib/devices/bsim4v6/b4v6ask.c @@ -399,6 +399,30 @@ BSIM4v6instance *here = (BSIM4v6instance*)inst; case BSIM4v6_QBD: value->rValue = *(ckt->CKTstate0 + here->BSIM4v6qbd); return(OK); + case BSIM4v6_VGSTEFF: + value->rValue = here->BSIM4v6Vgsteff; + return(OK); + case BSIM4v6_VDSEFF: + value->rValue = here->BSIM4v6Vdseff; + return(OK); + case BSIM4v6_CGSO: + value->rValue = here->BSIM4v6cgso; + value->rValue *= here->BSIM4v6m; + return(OK); + case BSIM4v6_CGDO: + value->rValue = here->BSIM4v6cgdo; + value->rValue *= here->BSIM4v6m; + return(OK); + case BSIM4v6_CGBO: + value->rValue = here->pParam->BSIM4v6cgbo; + value->rValue *= here->BSIM4v6m; + return(OK); + case BSIM4v6_WEFF: + value->rValue = here->pParam->BSIM4v6weff; + return(OK); + case BSIM4v6_LEFF: + value->rValue = here->pParam->BSIM4v6leff; + return(OK); default: return(E_BADPARM); } diff --git a/src/spicelib/devices/bsim4v6/bsim4v6def.h b/src/spicelib/devices/bsim4v6/bsim4v6def.h index cc06d074a..94ee3b0c0 100644 --- a/src/spicelib/devices/bsim4v6/bsim4v6def.h +++ b/src/spicelib/devices/bsim4v6/bsim4v6def.h @@ -3666,6 +3666,14 @@ typedef struct sBSIM4v6model #define BSIM4v6_MOD_VBSR_MAX 1310 #define BSIM4v6_MOD_VBDR_MAX 1311 +#define BSIM4v6_VGSTEFF 1400 +#define BSIM4v6_VDSEFF 1401 +#define BSIM4v6_CGSO 1402 +#define BSIM4v6_CGDO 1403 +#define BSIM4v6_CGBO 1404 +#define BSIM4v6_WEFF 1405 +#define BSIM4v6_LEFF 1406 + #include "bsim4v6ext.h" extern void BSIM4v6evaluate(double,double,double,BSIM4v6instance*,BSIM4v6model*, diff --git a/src/spicelib/devices/bsim4v7/b4v7.c b/src/spicelib/devices/bsim4v7/b4v7.c index cb7cd3633..f1d70b209 100644 --- a/src/spicelib/devices/bsim4v7/b4v7.c +++ b/src/spicelib/devices/bsim4v7/b4v7.c @@ -112,6 +112,13 @@ OP( "qinv", BSIM4v7_QINV, IF_REAL, "Qinversion"), OP( "qdef", BSIM4v7_QDEF, IF_REAL, "Qdef"), OP( "gcrg", BSIM4v7_GCRG, IF_REAL, "Gcrg"), OP( "gtau", BSIM4v7_GTAU, IF_REAL, "Gtau"), +OP( "vgsteff", BSIM4v7_VGSTEFF, IF_REAL, "Vgsteff"), +OP( "vdseff", BSIM4v7_VDSEFF, IF_REAL, "Vdseff"), +OP( "cgso", BSIM4v7_CGSO, IF_REAL, "Cgso"), +OP( "cgdo", BSIM4v7_CGDO, IF_REAL, "Cgdo"), +OP( "cgbo", BSIM4v7_CGBO, IF_REAL, "Cgbo"), +OP( "weff", BSIM4v7_WEFF, IF_REAL, "Weff"), +OP( "leff", BSIM4v7_LEFF, IF_REAL, "Leff"), }; IFparm BSIM4v7mPTable[] = { /* model parameters */ diff --git a/src/spicelib/devices/bsim4v7/b4v7ask.c b/src/spicelib/devices/bsim4v7/b4v7ask.c index 78a8e10c1..19690eda9 100644 --- a/src/spicelib/devices/bsim4v7/b4v7ask.c +++ b/src/spicelib/devices/bsim4v7/b4v7ask.c @@ -403,6 +403,30 @@ BSIM4v7instance *here = (BSIM4v7instance*)inst; case BSIM4v7_QBD: value->rValue = *(ckt->CKTstate0 + here->BSIM4v7qbd); return(OK); + case BSIM4v7_VGSTEFF: + value->rValue = here->BSIM4v7Vgsteff; + return(OK); + case BSIM4v7_VDSEFF: + value->rValue = here->BSIM4v7Vdseff; + return(OK); + case BSIM4v7_CGSO: + value->rValue = here->BSIM4v7cgso; + value->rValue *= here->BSIM4v7m; + return(OK); + case BSIM4v7_CGDO: + value->rValue = here->BSIM4v7cgdo; + value->rValue *= here->BSIM4v7m; + return(OK); + case BSIM4v7_CGBO: + value->rValue = here->pParam->BSIM4v7cgbo; + value->rValue *= here->BSIM4v7m; + return(OK); + case BSIM4v7_WEFF: + value->rValue = here->pParam->BSIM4v7weff; + return(OK); + case BSIM4v7_LEFF: + value->rValue = here->pParam->BSIM4v7leff; + return(OK); default: return(E_BADPARM); } diff --git a/src/spicelib/devices/bsim4v7/bsim4v7def.h b/src/spicelib/devices/bsim4v7/bsim4v7def.h index 0573cf620..e4c1f1adc 100644 --- a/src/spicelib/devices/bsim4v7/bsim4v7def.h +++ b/src/spicelib/devices/bsim4v7/bsim4v7def.h @@ -3858,6 +3858,15 @@ typedef struct sBSIM4v7model #define BSIM4v7_MOD_VBSR_MAX 1310 #define BSIM4v7_MOD_VBDR_MAX 1311 +#define BSIM4v7_VGSTEFF 1400 +#define BSIM4v7_VDSEFF 1401 +#define BSIM4v7_CGSO 1402 +#define BSIM4v7_CGDO 1403 +#define BSIM4v7_CGBO 1404 +#define BSIM4v7_WEFF 1405 +#define BSIM4v7_LEFF 1406 + + #include "bsim4v7ext.h" extern void BSIM4v7evaluate(double,double,double,BSIM4v7instance*,BSIM4v7model*,