diff --git a/src/spicelib/devices/bsim3/b3check.c b/src/spicelib/devices/bsim3/b3check.c index 123f63b9c..ec31958d0 100644 --- a/src/spicelib/devices/bsim3/b3check.c +++ b/src/spicelib/devices/bsim3/b3check.c @@ -33,12 +33,12 @@ FILE *fplog; if ((fplog = fopen("b3v3check.log", "w")) != NULL) { pParam = here->pParam; - fprintf(fplog, "BSIM3v3.3.0 Parameter Checking.\n"); - if ((strcmp(model->BSIM3version, "3.3.0")) && (strcmp(model->BSIM3version, "3.30"))) + fprintf(fplog, "BSIM3v3.3.0 Parameter Checking.\n"); + if ((strcmp(model->BSIM3version, "3.3.0")) && (strcmp(model->BSIM3version, "3.30")) && (strcmp(model->BSIM3version, "3.3"))) { fprintf(fplog, "Warning: This model is BSIM3v3.3.0; you specified a wrong version number.\n"); printf("Warning: This model is BSIM3v3.3.0; you specified a wrong version number.\n"); } - fprintf(fplog, "Model = %s\n", model->BSIM3modName); + fprintf(fplog, "Model = %s\n", model->BSIM3modName); if (pParam->BSIM3nlx < -pParam->BSIM3leff) { fprintf(fplog, "Fatal: Nlx = %g is less than -Leff.\n", diff --git a/src/spicelib/devices/bsim3/b3set.c b/src/spicelib/devices/bsim3/b3set.c index 3dc91802f..8bb4c0694 100644 --- a/src/spicelib/devices/bsim3/b3set.c +++ b/src/spicelib/devices/bsim3/b3set.c @@ -58,16 +58,16 @@ int nthreads; { /* Default value Processing for BSIM3 MOSFET Models */ if (!model->BSIM3typeGiven) - model->BSIM3type = NMOS; - if (!model->BSIM3mobModGiven) + model->BSIM3type = NMOS; + if (!model->BSIM3mobModGiven) model->BSIM3mobMod = 1; - if (!model->BSIM3binUnitGiven) + if (!model->BSIM3binUnitGiven) model->BSIM3binUnit = 1; - if (!model->BSIM3paramChkGiven) + if (!model->BSIM3paramChkGiven) model->BSIM3paramChk = 0; - if (!model->BSIM3capModGiven) + if (!model->BSIM3capModGiven) model->BSIM3capMod = 3; - if (!model->BSIM3noiModGiven) + if (!model->BSIM3noiModGiven) model->BSIM3noiMod = 1; if (!model->BSIM3acnqsModGiven) model->BSIM3acnqsMod = 0; @@ -75,7 +75,7 @@ int nthreads; { model->BSIM3acnqsMod = 0; printf("Warning: acnqsMod has been set to its default value: 0.\n"); } - if (!model->BSIM3versionGiven) + if (!model->BSIM3versionGiven) model->BSIM3version = "3.3.0"; if (!model->BSIM3toxGiven) model->BSIM3tox = 150.0e-10; @@ -84,23 +84,23 @@ int nthreads; model->BSIM3toxm = model->BSIM3tox; if (!model->BSIM3cdscGiven) - model->BSIM3cdsc = 2.4e-4; /* unit Q/V/m^2 */ + model->BSIM3cdsc = 2.4e-4; /* unit Q/V/m^2 */ if (!model->BSIM3cdscbGiven) - model->BSIM3cdscb = 0.0; /* unit Q/V/m^2 */ - if (!model->BSIM3cdscdGiven) - model->BSIM3cdscd = 0.0; /* unit Q/V/m^2 */ + model->BSIM3cdscb = 0.0; /* unit Q/V/m^2 */ + if (!model->BSIM3cdscdGiven) + model->BSIM3cdscd = 0.0; /* unit Q/V/m^2 */ if (!model->BSIM3citGiven) - model->BSIM3cit = 0.0; /* unit Q/V/m^2 */ + model->BSIM3cit = 0.0; /* unit Q/V/m^2 */ if (!model->BSIM3nfactorGiven) - model->BSIM3nfactor = 1; + model->BSIM3nfactor = 1; if (!model->BSIM3xjGiven) model->BSIM3xj = .15e-6; if (!model->BSIM3vsatGiven) - model->BSIM3vsat = 8.0e4; /* unit m/s */ + model->BSIM3vsat = 8.0e4; /* unit m/s */ if (!model->BSIM3atGiven) - model->BSIM3at = 3.3e4; /* unit m/s */ + model->BSIM3at = 3.3e4; /* unit m/s */ if (!model->BSIM3a0Given) - model->BSIM3a0 = 1.0; + model->BSIM3a0 = 1.0; if (!model->BSIM3agsGiven) model->BSIM3ags = 0.0; if (!model->BSIM3a1Given) @@ -116,9 +116,9 @@ int nthreads; if (!model->BSIM3ngateGiven) model->BSIM3ngate = 0; /* unit 1/cm3 */ if (!model->BSIM3vbmGiven) - model->BSIM3vbm = -3.0; + model->BSIM3vbm = -3.0; if (!model->BSIM3xtGiven) - model->BSIM3xt = 1.55e-7; + model->BSIM3xt = 1.55e-7; if (!model->BSIM3kt1Given) model->BSIM3kt1 = -0.11; /* unit V */ if (!model->BSIM3kt1lGiven) @@ -126,31 +126,31 @@ int nthreads; if (!model->BSIM3kt2Given) model->BSIM3kt2 = 0.022; /* No unit */ if (!model->BSIM3k3Given) - model->BSIM3k3 = 80.0; + model->BSIM3k3 = 80.0; if (!model->BSIM3k3bGiven) - model->BSIM3k3b = 0.0; + model->BSIM3k3b = 0.0; if (!model->BSIM3w0Given) - model->BSIM3w0 = 2.5e-6; + model->BSIM3w0 = 2.5e-6; if (!model->BSIM3nlxGiven) - model->BSIM3nlx = 1.74e-7; + model->BSIM3nlx = 1.74e-7; if (!model->BSIM3dvt0Given) - model->BSIM3dvt0 = 2.2; + model->BSIM3dvt0 = 2.2; if (!model->BSIM3dvt1Given) - model->BSIM3dvt1 = 0.53; + model->BSIM3dvt1 = 0.53; if (!model->BSIM3dvt2Given) - model->BSIM3dvt2 = -0.032; /* unit 1 / V */ + model->BSIM3dvt2 = -0.032; /* unit 1 / V */ if (!model->BSIM3dvt0wGiven) - model->BSIM3dvt0w = 0.0; + model->BSIM3dvt0w = 0.0; if (!model->BSIM3dvt1wGiven) - model->BSIM3dvt1w = 5.3e6; + model->BSIM3dvt1w = 5.3e6; if (!model->BSIM3dvt2wGiven) - model->BSIM3dvt2w = -0.032; + model->BSIM3dvt2w = -0.032; if (!model->BSIM3droutGiven) - model->BSIM3drout = 0.56; + model->BSIM3drout = 0.56; if (!model->BSIM3dsubGiven) - model->BSIM3dsub = model->BSIM3drout; + model->BSIM3dsub = model->BSIM3drout; if (!model->BSIM3vth0Given) model->BSIM3vth0 = (model->BSIM3type == NMOS) ? 0.7 : -0.7; if (!model->BSIM3uaGiven) @@ -162,76 +162,75 @@ int nthreads; if (!model->BSIM3ub1Given) model->BSIM3ub1 = -7.61e-18; /* unit (m/V)**2 */ if (!model->BSIM3ucGiven) - model->BSIM3uc = (model->BSIM3mobMod == 3) ? -0.0465 : -0.0465e-9; + model->BSIM3uc = (model->BSIM3mobMod == 3) ? -0.0465 : -0.0465e-9; if (!model->BSIM3uc1Given) - model->BSIM3uc1 = (model->BSIM3mobMod == 3) ? -0.056 : -0.056e-9; + model->BSIM3uc1 = (model->BSIM3mobMod == 3) ? -0.056 : -0.056e-9; if (!model->BSIM3u0Given) model->BSIM3u0 = (model->BSIM3type == NMOS) ? 0.067 : 0.025; if (!model->BSIM3uteGiven) - model->BSIM3ute = -1.5; + model->BSIM3ute = -1.5; if (!model->BSIM3voffGiven) - model->BSIM3voff = -0.08; - if (!model->BSIM3deltaGiven) + model->BSIM3voff = -0.08; + if (!model->BSIM3deltaGiven) model->BSIM3delta = 0.01; if (!model->BSIM3rdswGiven) - model->BSIM3rdsw = 0; + model->BSIM3rdsw = 0; if (!model->BSIM3prwgGiven) model->BSIM3prwg = 0.0; /* unit 1/V */ if (!model->BSIM3prwbGiven) - model->BSIM3prwb = 0.0; + model->BSIM3prwb = 0.0; if (!model->BSIM3prtGiven) - if (!model->BSIM3prtGiven) - model->BSIM3prt = 0.0; + model->BSIM3prt = 0.0; if (!model->BSIM3eta0Given) - model->BSIM3eta0 = 0.08; /* no unit */ + model->BSIM3eta0 = 0.08; /* no unit */ if (!model->BSIM3etabGiven) - model->BSIM3etab = -0.07; /* unit 1/V */ + model->BSIM3etab = -0.07; /* unit 1/V */ if (!model->BSIM3pclmGiven) - model->BSIM3pclm = 1.3; /* no unit */ + model->BSIM3pclm = 1.3; /* no unit */ if (!model->BSIM3pdibl1Given) model->BSIM3pdibl1 = .39; /* no unit */ if (!model->BSIM3pdibl2Given) - model->BSIM3pdibl2 = 0.0086; /* no unit */ + model->BSIM3pdibl2 = 0.0086; /* no unit */ if (!model->BSIM3pdiblbGiven) - model->BSIM3pdiblb = 0.0; /* 1/V */ + model->BSIM3pdiblb = 0.0; /* 1/V */ if (!model->BSIM3pscbe1Given) - model->BSIM3pscbe1 = 4.24e8; + model->BSIM3pscbe1 = 4.24e8; if (!model->BSIM3pscbe2Given) - model->BSIM3pscbe2 = 1.0e-5; + model->BSIM3pscbe2 = 1.0e-5; if (!model->BSIM3pvagGiven) - model->BSIM3pvag = 0.0; - if (!model->BSIM3wrGiven) + model->BSIM3pvag = 0.0; + if (!model->BSIM3wrGiven) model->BSIM3wr = 1.0; - if (!model->BSIM3dwgGiven) + if (!model->BSIM3dwgGiven) model->BSIM3dwg = 0.0; - if (!model->BSIM3dwbGiven) + if (!model->BSIM3dwbGiven) model->BSIM3dwb = 0.0; if (!model->BSIM3b0Given) model->BSIM3b0 = 0.0; - if (!model->BSIM3b1Given) + if (!model->BSIM3b1Given) model->BSIM3b1 = 0.0; - if (!model->BSIM3alpha0Given) + if (!model->BSIM3alpha0Given) model->BSIM3alpha0 = 0.0; if (!model->BSIM3alpha1Given) model->BSIM3alpha1 = 0.0; - if (!model->BSIM3beta0Given) + if (!model->BSIM3beta0Given) model->BSIM3beta0 = 30.0; if (!model->BSIM3ijthGiven) model->BSIM3ijth = 0.1; /* unit A */ - if (!model->BSIM3elmGiven) + if (!model->BSIM3elmGiven) model->BSIM3elm = 5.0; - if (!model->BSIM3cgslGiven) + if (!model->BSIM3cgslGiven) model->BSIM3cgsl = 0.0; - if (!model->BSIM3cgdlGiven) + if (!model->BSIM3cgdlGiven) model->BSIM3cgdl = 0.0; - if (!model->BSIM3ckappaGiven) + if (!model->BSIM3ckappaGiven) model->BSIM3ckappa = 0.6; - if (!model->BSIM3clcGiven) + if (!model->BSIM3clcGiven) model->BSIM3clc = 0.1e-6; - if (!model->BSIM3cleGiven) + if (!model->BSIM3cleGiven) model->BSIM3cle = 0.6; - if (!model->BSIM3vfbcvGiven) + if (!model->BSIM3vfbcvGiven) model->BSIM3vfbcv = -1.0; if (!model->BSIM3acdeGiven) model->BSIM3acde = 1.0; @@ -254,17 +253,17 @@ int nthreads; if (!model->BSIM3tpbswgGiven) model->BSIM3tpbswg = 0.0; - /* Length dependence */ + /* Length dependence */ if (!model->BSIM3lcdscGiven) - model->BSIM3lcdsc = 0.0; + model->BSIM3lcdsc = 0.0; if (!model->BSIM3lcdscbGiven) - model->BSIM3lcdscb = 0.0; - if (!model->BSIM3lcdscdGiven) - model->BSIM3lcdscd = 0.0; + model->BSIM3lcdscb = 0.0; + if (!model->BSIM3lcdscdGiven) + model->BSIM3lcdscd = 0.0; if (!model->BSIM3lcitGiven) - model->BSIM3lcit = 0.0; + model->BSIM3lcit = 0.0; if (!model->BSIM3lnfactorGiven) - model->BSIM3lnfactor = 0.0; + model->BSIM3lnfactor = 0.0; if (!model->BSIM3lxjGiven) model->BSIM3lxj = 0.0; if (!model->BSIM3lvsatGiven) @@ -272,7 +271,7 @@ int nthreads; if (!model->BSIM3latGiven) model->BSIM3lat = 0.0; if (!model->BSIM3la0Given) - model->BSIM3la0 = 0.0; + model->BSIM3la0 = 0.0; if (!model->BSIM3lagsGiven) model->BSIM3lags = 0.0; if (!model->BSIM3la1Given) @@ -288,37 +287,37 @@ int nthreads; if (!model->BSIM3lngateGiven) model->BSIM3lngate = 0.0; if (!model->BSIM3lvbmGiven) - model->BSIM3lvbm = 0.0; + model->BSIM3lvbm = 0.0; if (!model->BSIM3lxtGiven) - model->BSIM3lxt = 0.0; + model->BSIM3lxt = 0.0; if (!model->BSIM3lkt1Given) - model->BSIM3lkt1 = 0.0; + model->BSIM3lkt1 = 0.0; if (!model->BSIM3lkt1lGiven) model->BSIM3lkt1l = 0.0; if (!model->BSIM3lkt2Given) model->BSIM3lkt2 = 0.0; if (!model->BSIM3lk3Given) - model->BSIM3lk3 = 0.0; + model->BSIM3lk3 = 0.0; if (!model->BSIM3lk3bGiven) - model->BSIM3lk3b = 0.0; + model->BSIM3lk3b = 0.0; if (!model->BSIM3lw0Given) - model->BSIM3lw0 = 0.0; + model->BSIM3lw0 = 0.0; if (!model->BSIM3lnlxGiven) - model->BSIM3lnlx = 0.0; + model->BSIM3lnlx = 0.0; if (!model->BSIM3ldvt0Given) - model->BSIM3ldvt0 = 0.0; + model->BSIM3ldvt0 = 0.0; if (!model->BSIM3ldvt1Given) - model->BSIM3ldvt1 = 0.0; + model->BSIM3ldvt1 = 0.0; if (!model->BSIM3ldvt2Given) model->BSIM3ldvt2 = 0.0; if (!model->BSIM3ldvt0wGiven) - model->BSIM3ldvt0w = 0.0; + model->BSIM3ldvt0w = 0.0; if (!model->BSIM3ldvt1wGiven) - model->BSIM3ldvt1w = 0.0; + model->BSIM3ldvt1w = 0.0; if (!model->BSIM3ldvt2wGiven) model->BSIM3ldvt2w = 0.0; if (!model->BSIM3ldroutGiven) - model->BSIM3ldrout = 0.0; + model->BSIM3ldrout = 0.0; if (!model->BSIM3ldsubGiven) model->BSIM3ldsub = 0.0; if (!model->BSIM3lvth0Given) @@ -338,10 +337,10 @@ int nthreads; if (!model->BSIM3lu0Given) model->BSIM3lu0 = 0.0; if (!model->BSIM3luteGiven) - model->BSIM3lute = 0.0; + model->BSIM3lute = 0.0; if (!model->BSIM3lvoffGiven) - model->BSIM3lvoff = 0.0; - if (!model->BSIM3ldeltaGiven) + model->BSIM3lvoff = 0.0; + if (!model->BSIM3ldeltaGiven) model->BSIM3ldelta = 0.0; if (!model->BSIM3lrdswGiven) model->BSIM3lrdsw = 0.0; @@ -356,7 +355,7 @@ int nthreads; if (!model->BSIM3letabGiven) model->BSIM3letab = -0.0; if (!model->BSIM3lpclmGiven) - model->BSIM3lpclm = 0.0; + model->BSIM3lpclm = 0.0; if (!model->BSIM3lpdibl1Given) model->BSIM3lpdibl1 = 0.0; if (!model->BSIM3lpdibl2Given) @@ -368,41 +367,41 @@ int nthreads; if (!model->BSIM3lpscbe2Given) model->BSIM3lpscbe2 = 0.0; if (!model->BSIM3lpvagGiven) - model->BSIM3lpvag = 0.0; - if (!model->BSIM3lwrGiven) + model->BSIM3lpvag = 0.0; + if (!model->BSIM3lwrGiven) model->BSIM3lwr = 0.0; - if (!model->BSIM3ldwgGiven) + if (!model->BSIM3ldwgGiven) model->BSIM3ldwg = 0.0; - if (!model->BSIM3ldwbGiven) + if (!model->BSIM3ldwbGiven) model->BSIM3ldwb = 0.0; if (!model->BSIM3lb0Given) model->BSIM3lb0 = 0.0; - if (!model->BSIM3lb1Given) + if (!model->BSIM3lb1Given) model->BSIM3lb1 = 0.0; - if (!model->BSIM3lalpha0Given) + if (!model->BSIM3lalpha0Given) model->BSIM3lalpha0 = 0.0; if (!model->BSIM3lalpha1Given) model->BSIM3lalpha1 = 0.0; - if (!model->BSIM3lbeta0Given) + if (!model->BSIM3lbeta0Given) model->BSIM3lbeta0 = 0.0; if (!model->BSIM3lvfbGiven) model->BSIM3lvfb = 0.0; - if (!model->BSIM3lelmGiven) + if (!model->BSIM3lelmGiven) model->BSIM3lelm = 0.0; - if (!model->BSIM3lcgslGiven) + if (!model->BSIM3lcgslGiven) model->BSIM3lcgsl = 0.0; - if (!model->BSIM3lcgdlGiven) + if (!model->BSIM3lcgdlGiven) model->BSIM3lcgdl = 0.0; - if (!model->BSIM3lckappaGiven) + if (!model->BSIM3lckappaGiven) model->BSIM3lckappa = 0.0; - if (!model->BSIM3lclcGiven) + if (!model->BSIM3lclcGiven) model->BSIM3lclc = 0.0; - if (!model->BSIM3lcleGiven) + if (!model->BSIM3lcleGiven) model->BSIM3lcle = 0.0; - if (!model->BSIM3lcfGiven) + if (!model->BSIM3lcfGiven) model->BSIM3lcf = 0.0; - if (!model->BSIM3lvfbcvGiven) + if (!model->BSIM3lvfbcvGiven) model->BSIM3lvfbcv = 0.0; if (!model->BSIM3lacdeGiven) model->BSIM3lacde = 0.0; @@ -413,17 +412,17 @@ int nthreads; if (!model->BSIM3lvoffcvGiven) model->BSIM3lvoffcv = 0.0; - /* Width dependence */ + /* Width dependence */ if (!model->BSIM3wcdscGiven) - model->BSIM3wcdsc = 0.0; + model->BSIM3wcdsc = 0.0; if (!model->BSIM3wcdscbGiven) - model->BSIM3wcdscb = 0.0; - if (!model->BSIM3wcdscdGiven) - model->BSIM3wcdscd = 0.0; + model->BSIM3wcdscb = 0.0; + if (!model->BSIM3wcdscdGiven) + model->BSIM3wcdscd = 0.0; if (!model->BSIM3wcitGiven) - model->BSIM3wcit = 0.0; + model->BSIM3wcit = 0.0; if (!model->BSIM3wnfactorGiven) - model->BSIM3wnfactor = 0.0; + model->BSIM3wnfactor = 0.0; if (!model->BSIM3wxjGiven) model->BSIM3wxj = 0.0; if (!model->BSIM3wvsatGiven) @@ -431,7 +430,7 @@ int nthreads; if (!model->BSIM3watGiven) model->BSIM3wat = 0.0; if (!model->BSIM3wa0Given) - model->BSIM3wa0 = 0.0; + model->BSIM3wa0 = 0.0; if (!model->BSIM3wagsGiven) model->BSIM3wags = 0.0; if (!model->BSIM3wa1Given) @@ -447,37 +446,37 @@ int nthreads; if (!model->BSIM3wngateGiven) model->BSIM3wngate = 0.0; if (!model->BSIM3wvbmGiven) - model->BSIM3wvbm = 0.0; + model->BSIM3wvbm = 0.0; if (!model->BSIM3wxtGiven) - model->BSIM3wxt = 0.0; + model->BSIM3wxt = 0.0; if (!model->BSIM3wkt1Given) - model->BSIM3wkt1 = 0.0; + model->BSIM3wkt1 = 0.0; if (!model->BSIM3wkt1lGiven) model->BSIM3wkt1l = 0.0; if (!model->BSIM3wkt2Given) model->BSIM3wkt2 = 0.0; if (!model->BSIM3wk3Given) - model->BSIM3wk3 = 0.0; + model->BSIM3wk3 = 0.0; if (!model->BSIM3wk3bGiven) - model->BSIM3wk3b = 0.0; + model->BSIM3wk3b = 0.0; if (!model->BSIM3ww0Given) - model->BSIM3ww0 = 0.0; + model->BSIM3ww0 = 0.0; if (!model->BSIM3wnlxGiven) - model->BSIM3wnlx = 0.0; + model->BSIM3wnlx = 0.0; if (!model->BSIM3wdvt0Given) - model->BSIM3wdvt0 = 0.0; + model->BSIM3wdvt0 = 0.0; if (!model->BSIM3wdvt1Given) - model->BSIM3wdvt1 = 0.0; + model->BSIM3wdvt1 = 0.0; if (!model->BSIM3wdvt2Given) model->BSIM3wdvt2 = 0.0; if (!model->BSIM3wdvt0wGiven) - model->BSIM3wdvt0w = 0.0; + model->BSIM3wdvt0w = 0.0; if (!model->BSIM3wdvt1wGiven) - model->BSIM3wdvt1w = 0.0; + model->BSIM3wdvt1w = 0.0; if (!model->BSIM3wdvt2wGiven) model->BSIM3wdvt2w = 0.0; if (!model->BSIM3wdroutGiven) - model->BSIM3wdrout = 0.0; + model->BSIM3wdrout = 0.0; if (!model->BSIM3wdsubGiven) model->BSIM3wdsub = 0.0; if (!model->BSIM3wvth0Given) @@ -497,10 +496,10 @@ int nthreads; if (!model->BSIM3wu0Given) model->BSIM3wu0 = 0.0; if (!model->BSIM3wuteGiven) - model->BSIM3wute = 0.0; + model->BSIM3wute = 0.0; if (!model->BSIM3wvoffGiven) - model->BSIM3wvoff = 0.0; - if (!model->BSIM3wdeltaGiven) + model->BSIM3wvoff = 0.0; + if (!model->BSIM3wdeltaGiven) model->BSIM3wdelta = 0.0; if (!model->BSIM3wrdswGiven) model->BSIM3wrdsw = 0.0; @@ -515,7 +514,7 @@ int nthreads; if (!model->BSIM3wetabGiven) model->BSIM3wetab = 0.0; if (!model->BSIM3wpclmGiven) - model->BSIM3wpclm = 0.0; + model->BSIM3wpclm = 0.0; if (!model->BSIM3wpdibl1Given) model->BSIM3wpdibl1 = 0.0; if (!model->BSIM3wpdibl2Given) @@ -527,41 +526,41 @@ int nthreads; if (!model->BSIM3wpscbe2Given) model->BSIM3wpscbe2 = 0.0; if (!model->BSIM3wpvagGiven) - model->BSIM3wpvag = 0.0; - if (!model->BSIM3wwrGiven) + model->BSIM3wpvag = 0.0; + if (!model->BSIM3wwrGiven) model->BSIM3wwr = 0.0; - if (!model->BSIM3wdwgGiven) + if (!model->BSIM3wdwgGiven) model->BSIM3wdwg = 0.0; - if (!model->BSIM3wdwbGiven) + if (!model->BSIM3wdwbGiven) model->BSIM3wdwb = 0.0; if (!model->BSIM3wb0Given) model->BSIM3wb0 = 0.0; - if (!model->BSIM3wb1Given) + if (!model->BSIM3wb1Given) model->BSIM3wb1 = 0.0; - if (!model->BSIM3walpha0Given) + if (!model->BSIM3walpha0Given) model->BSIM3walpha0 = 0.0; if (!model->BSIM3walpha1Given) model->BSIM3walpha1 = 0.0; - if (!model->BSIM3wbeta0Given) + if (!model->BSIM3wbeta0Given) model->BSIM3wbeta0 = 0.0; if (!model->BSIM3wvfbGiven) model->BSIM3wvfb = 0.0; - if (!model->BSIM3welmGiven) + if (!model->BSIM3welmGiven) model->BSIM3welm = 0.0; - if (!model->BSIM3wcgslGiven) + if (!model->BSIM3wcgslGiven) model->BSIM3wcgsl = 0.0; - if (!model->BSIM3wcgdlGiven) + if (!model->BSIM3wcgdlGiven) model->BSIM3wcgdl = 0.0; - if (!model->BSIM3wckappaGiven) + if (!model->BSIM3wckappaGiven) model->BSIM3wckappa = 0.0; - if (!model->BSIM3wcfGiven) + if (!model->BSIM3wcfGiven) model->BSIM3wcf = 0.0; - if (!model->BSIM3wclcGiven) + if (!model->BSIM3wclcGiven) model->BSIM3wclc = 0.0; - if (!model->BSIM3wcleGiven) + if (!model->BSIM3wcleGiven) model->BSIM3wcle = 0.0; - if (!model->BSIM3wvfbcvGiven) + if (!model->BSIM3wvfbcvGiven) model->BSIM3wvfbcv = 0.0; if (!model->BSIM3wacdeGiven) model->BSIM3wacde = 0.0; @@ -572,17 +571,17 @@ int nthreads; if (!model->BSIM3wvoffcvGiven) model->BSIM3wvoffcv = 0.0; - /* Cross-term dependence */ + /* Cross-term dependence */ if (!model->BSIM3pcdscGiven) - model->BSIM3pcdsc = 0.0; + model->BSIM3pcdsc = 0.0; if (!model->BSIM3pcdscbGiven) - model->BSIM3pcdscb = 0.0; - if (!model->BSIM3pcdscdGiven) - model->BSIM3pcdscd = 0.0; + model->BSIM3pcdscb = 0.0; + if (!model->BSIM3pcdscdGiven) + model->BSIM3pcdscd = 0.0; if (!model->BSIM3pcitGiven) - model->BSIM3pcit = 0.0; + model->BSIM3pcit = 0.0; if (!model->BSIM3pnfactorGiven) - model->BSIM3pnfactor = 0.0; + model->BSIM3pnfactor = 0.0; if (!model->BSIM3pxjGiven) model->BSIM3pxj = 0.0; if (!model->BSIM3pvsatGiven) @@ -590,8 +589,8 @@ int nthreads; if (!model->BSIM3patGiven) model->BSIM3pat = 0.0; if (!model->BSIM3pa0Given) - model->BSIM3pa0 = 0.0; - + model->BSIM3pa0 = 0.0; + if (!model->BSIM3pagsGiven) model->BSIM3pags = 0.0; if (!model->BSIM3pa1Given) @@ -607,37 +606,37 @@ int nthreads; if (!model->BSIM3pngateGiven) model->BSIM3pngate = 0.0; if (!model->BSIM3pvbmGiven) - model->BSIM3pvbm = 0.0; + model->BSIM3pvbm = 0.0; if (!model->BSIM3pxtGiven) - model->BSIM3pxt = 0.0; + model->BSIM3pxt = 0.0; if (!model->BSIM3pkt1Given) - model->BSIM3pkt1 = 0.0; + model->BSIM3pkt1 = 0.0; if (!model->BSIM3pkt1lGiven) model->BSIM3pkt1l = 0.0; if (!model->BSIM3pkt2Given) model->BSIM3pkt2 = 0.0; if (!model->BSIM3pk3Given) - model->BSIM3pk3 = 0.0; + model->BSIM3pk3 = 0.0; if (!model->BSIM3pk3bGiven) - model->BSIM3pk3b = 0.0; + model->BSIM3pk3b = 0.0; if (!model->BSIM3pw0Given) - model->BSIM3pw0 = 0.0; + model->BSIM3pw0 = 0.0; if (!model->BSIM3pnlxGiven) - model->BSIM3pnlx = 0.0; + model->BSIM3pnlx = 0.0; if (!model->BSIM3pdvt0Given) - model->BSIM3pdvt0 = 0.0; + model->BSIM3pdvt0 = 0.0; if (!model->BSIM3pdvt1Given) - model->BSIM3pdvt1 = 0.0; + model->BSIM3pdvt1 = 0.0; if (!model->BSIM3pdvt2Given) model->BSIM3pdvt2 = 0.0; if (!model->BSIM3pdvt0wGiven) - model->BSIM3pdvt0w = 0.0; + model->BSIM3pdvt0w = 0.0; if (!model->BSIM3pdvt1wGiven) - model->BSIM3pdvt1w = 0.0; + model->BSIM3pdvt1w = 0.0; if (!model->BSIM3pdvt2wGiven) model->BSIM3pdvt2w = 0.0; if (!model->BSIM3pdroutGiven) - model->BSIM3pdrout = 0.0; + model->BSIM3pdrout = 0.0; if (!model->BSIM3pdsubGiven) model->BSIM3pdsub = 0.0; if (!model->BSIM3pvth0Given) @@ -657,10 +656,10 @@ int nthreads; if (!model->BSIM3pu0Given) model->BSIM3pu0 = 0.0; if (!model->BSIM3puteGiven) - model->BSIM3pute = 0.0; + model->BSIM3pute = 0.0; if (!model->BSIM3pvoffGiven) - model->BSIM3pvoff = 0.0; - if (!model->BSIM3pdeltaGiven) + model->BSIM3pvoff = 0.0; + if (!model->BSIM3pdeltaGiven) model->BSIM3pdelta = 0.0; if (!model->BSIM3prdswGiven) model->BSIM3prdsw = 0.0; @@ -675,7 +674,7 @@ int nthreads; if (!model->BSIM3petabGiven) model->BSIM3petab = 0.0; if (!model->BSIM3ppclmGiven) - model->BSIM3ppclm = 0.0; + model->BSIM3ppclm = 0.0; if (!model->BSIM3ppdibl1Given) model->BSIM3ppdibl1 = 0.0; if (!model->BSIM3ppdibl2Given) @@ -687,41 +686,41 @@ int nthreads; if (!model->BSIM3ppscbe2Given) model->BSIM3ppscbe2 = 0.0; if (!model->BSIM3ppvagGiven) - model->BSIM3ppvag = 0.0; - if (!model->BSIM3pwrGiven) + model->BSIM3ppvag = 0.0; + if (!model->BSIM3pwrGiven) model->BSIM3pwr = 0.0; - if (!model->BSIM3pdwgGiven) + if (!model->BSIM3pdwgGiven) model->BSIM3pdwg = 0.0; - if (!model->BSIM3pdwbGiven) + if (!model->BSIM3pdwbGiven) model->BSIM3pdwb = 0.0; if (!model->BSIM3pb0Given) model->BSIM3pb0 = 0.0; - if (!model->BSIM3pb1Given) + if (!model->BSIM3pb1Given) model->BSIM3pb1 = 0.0; - if (!model->BSIM3palpha0Given) + if (!model->BSIM3palpha0Given) model->BSIM3palpha0 = 0.0; if (!model->BSIM3palpha1Given) model->BSIM3palpha1 = 0.0; - if (!model->BSIM3pbeta0Given) + if (!model->BSIM3pbeta0Given) model->BSIM3pbeta0 = 0.0; if (!model->BSIM3pvfbGiven) model->BSIM3pvfb = 0.0; - if (!model->BSIM3pelmGiven) + if (!model->BSIM3pelmGiven) model->BSIM3pelm = 0.0; - if (!model->BSIM3pcgslGiven) + if (!model->BSIM3pcgslGiven) model->BSIM3pcgsl = 0.0; - if (!model->BSIM3pcgdlGiven) + if (!model->BSIM3pcgdlGiven) model->BSIM3pcgdl = 0.0; - if (!model->BSIM3pckappaGiven) + if (!model->BSIM3pckappaGiven) model->BSIM3pckappa = 0.0; - if (!model->BSIM3pcfGiven) + if (!model->BSIM3pcfGiven) model->BSIM3pcf = 0.0; - if (!model->BSIM3pclcGiven) + if (!model->BSIM3pclcGiven) model->BSIM3pclc = 0.0; - if (!model->BSIM3pcleGiven) + if (!model->BSIM3pcleGiven) model->BSIM3pcle = 0.0; - if (!model->BSIM3pvfbcvGiven) + if (!model->BSIM3pvfbcvGiven) model->BSIM3pvfbcv = 0.0; if (!model->BSIM3pacdeGiven) model->BSIM3pacde = 0.0; @@ -733,83 +732,83 @@ int nthreads; model->BSIM3pvoffcv = 0.0; /* unit degree celcius */ - if (!model->BSIM3tnomGiven) - model->BSIM3tnom = ckt->CKTnomTemp; + if (!model->BSIM3tnomGiven) + model->BSIM3tnom = ckt->CKTnomTemp; /* else model->BSIM3tnom = model->BSIM3tnom + 273.15; we make this transform in b3mpar.c in the first run */ if (!model->BSIM3lintnoiGiven) - model->BSIM3lintnoi = 0.0; /* unit m */ - if (!model->BSIM3LintGiven) + model->BSIM3lintnoi = 0.0; /* unit m */ + if (!model->BSIM3LintGiven) model->BSIM3Lint = 0.0; - if (!model->BSIM3LlGiven) + if (!model->BSIM3LlGiven) model->BSIM3Ll = 0.0; if (!model->BSIM3LlcGiven) model->BSIM3Llc = model->BSIM3Ll; - if (!model->BSIM3LlnGiven) + if (!model->BSIM3LlnGiven) model->BSIM3Lln = 1.0; - if (!model->BSIM3LwGiven) + if (!model->BSIM3LwGiven) model->BSIM3Lw = 0.0; if (!model->BSIM3LwcGiven) model->BSIM3Lwc = model->BSIM3Lw; - if (!model->BSIM3LwnGiven) + if (!model->BSIM3LwnGiven) model->BSIM3Lwn = 1.0; - if (!model->BSIM3LwlGiven) + if (!model->BSIM3LwlGiven) model->BSIM3Lwl = 0.0; if (!model->BSIM3LwlcGiven) model->BSIM3Lwlc = model->BSIM3Lwl; - if (!model->BSIM3LminGiven) + if (!model->BSIM3LminGiven) model->BSIM3Lmin = 0.0; - if (!model->BSIM3LmaxGiven) + if (!model->BSIM3LmaxGiven) model->BSIM3Lmax = 1.0; - if (!model->BSIM3WintGiven) + if (!model->BSIM3WintGiven) model->BSIM3Wint = 0.0; - if (!model->BSIM3WlGiven) + if (!model->BSIM3WlGiven) model->BSIM3Wl = 0.0; if (!model->BSIM3WlcGiven) model->BSIM3Wlc = model->BSIM3Wl; - if (!model->BSIM3WlnGiven) + if (!model->BSIM3WlnGiven) model->BSIM3Wln = 1.0; - if (!model->BSIM3WwGiven) + if (!model->BSIM3WwGiven) model->BSIM3Ww = 0.0; if (!model->BSIM3WwcGiven) model->BSIM3Wwc = model->BSIM3Ww; - if (!model->BSIM3WwnGiven) + if (!model->BSIM3WwnGiven) model->BSIM3Wwn = 1.0; - if (!model->BSIM3WwlGiven) + if (!model->BSIM3WwlGiven) model->BSIM3Wwl = 0.0; if (!model->BSIM3WwlcGiven) model->BSIM3Wwlc = model->BSIM3Wwl; - if (!model->BSIM3WminGiven) + if (!model->BSIM3WminGiven) model->BSIM3Wmin = 0.0; - if (!model->BSIM3WmaxGiven) + if (!model->BSIM3WmaxGiven) model->BSIM3Wmax = 1.0; - if (!model->BSIM3dwcGiven) + if (!model->BSIM3dwcGiven) model->BSIM3dwc = model->BSIM3Wint; - if (!model->BSIM3dlcGiven) + if (!model->BSIM3dlcGiven) model->BSIM3dlc = model->BSIM3Lint; - if (!model->BSIM3cfGiven) + if (!model->BSIM3cfGiven) model->BSIM3cf = 2.0 * EPSOX / PI - * log(1.0 + 0.4e-6 / model->BSIM3tox); + * log(1.0 + 0.4e-6 / model->BSIM3tox); if (!model->BSIM3cgdoGiven) - { if (model->BSIM3dlcGiven && (model->BSIM3dlc > 0.0)) - { model->BSIM3cgdo = model->BSIM3dlc * model->BSIM3cox - - model->BSIM3cgdl ; - } - else - model->BSIM3cgdo = 0.6 * model->BSIM3xj * model->BSIM3cox; - } + { if (model->BSIM3dlcGiven && (model->BSIM3dlc > 0.0)) + { model->BSIM3cgdo = model->BSIM3dlc * model->BSIM3cox + - model->BSIM3cgdl ; + } + else + model->BSIM3cgdo = 0.6 * model->BSIM3xj * model->BSIM3cox; + } if (!model->BSIM3cgsoGiven) - { if (model->BSIM3dlcGiven && (model->BSIM3dlc > 0.0)) - { model->BSIM3cgso = model->BSIM3dlc * model->BSIM3cox - - model->BSIM3cgsl ; - } - else - model->BSIM3cgso = 0.6 * model->BSIM3xj * model->BSIM3cox; - } + { if (model->BSIM3dlcGiven && (model->BSIM3dlc > 0.0)) + { model->BSIM3cgso = model->BSIM3dlc * model->BSIM3cox + - model->BSIM3cgsl ; + } + else + model->BSIM3cgso = 0.6 * model->BSIM3xj * model->BSIM3cox; + } if (!model->BSIM3cgboGiven) - { model->BSIM3cgbo = 2.0 * model->BSIM3dwc * model->BSIM3cox; - } + { model->BSIM3cgbo = 2.0 * model->BSIM3dwc * model->BSIM3cox; + } if (!model->BSIM3xpartGiven) model->BSIM3xpart = 0.0; if (!model->BSIM3sheetResistanceGiven) @@ -841,24 +840,24 @@ int nthreads; if (!model->BSIM3jctTempExponentGiven) model->BSIM3jctTempExponent = 3.0; if (!model->BSIM3oxideTrapDensityAGiven) - { if (model->BSIM3type == NMOS) + { if (model->BSIM3type == NMOS) model->BSIM3oxideTrapDensityA = 1e20; else model->BSIM3oxideTrapDensityA=9.9e18; - } + } if (!model->BSIM3oxideTrapDensityBGiven) - { if (model->BSIM3type == NMOS) + { if (model->BSIM3type == NMOS) model->BSIM3oxideTrapDensityB = 5e4; else model->BSIM3oxideTrapDensityB = 2.4e3; - } + } if (!model->BSIM3oxideTrapDensityCGiven) - { if (model->BSIM3type == NMOS) + { if (model->BSIM3type == NMOS) model->BSIM3oxideTrapDensityC = -1.4e-12; else model->BSIM3oxideTrapDensityC = 1.4e-12; - } + } if (!model->BSIM3emGiven) model->BSIM3em = 4.1e7; /* V/m */ if (!model->BSIM3efGiven) @@ -869,8 +868,8 @@ int nthreads; model->BSIM3kf = 0.0; /* loop through all the instances of the model */ for (here = model->BSIM3instances; here != NULL ; - here=here->BSIM3nextInstance) - { + here=here->BSIM3nextInstance) + { if (here->BSIM3owner == ARCHme) { /* allocate a chunk of the state vector */ @@ -910,59 +909,63 @@ int nthreads; model->BSIM3acnqsMod); } - + if (!here->BSIM3mGiven) here->BSIM3m = 1; /* process drain series resistance */ if ((model->BSIM3sheetResistance > 0.0) && - (here->BSIM3drainSquares > 0.0 ) && - (here->BSIM3dNodePrime == 0)) - { error = CKTmkVolt(ckt,&tmp,here->BSIM3name,"drain"); + (here->BSIM3drainSquares > 0.0 )) + { + if(here->BSIM3dNodePrime == 0) { + error = CKTmkVolt(ckt,&tmp,here->BSIM3name,"drain"); if(error) return(error); here->BSIM3dNodePrime = tmp->number; - if (ckt->CKTcopyNodesets) { + if (ckt->CKTcopyNodesets) { if (CKTinst2Node(ckt,here,1,&tmpNode,&tmpName)==OK) { if (tmpNode->nsGiven) { - tmp->nodeset=tmpNode->nodeset; - tmp->nsGiven=tmpNode->nsGiven; + tmp->nodeset=tmpNode->nodeset; + tmp->nsGiven=tmpNode->nsGiven; } } } + } } - else - { here->BSIM3dNodePrime = here->BSIM3dNode; + else + { here->BSIM3dNodePrime = here->BSIM3dNode; } - + /* process source series resistance */ if ((model->BSIM3sheetResistance > 0.0) && - (here->BSIM3sourceSquares > 0.0 ) && - (here->BSIM3sNodePrime == 0)) - { error = CKTmkVolt(ckt,&tmp,here->BSIM3name,"source"); + (here->BSIM3sourceSquares > 0.0 )) + { + if(here->BSIM3sNodePrime == 0) { + error = CKTmkVolt(ckt,&tmp,here->BSIM3name,"source"); if(error) return(error); here->BSIM3sNodePrime = tmp->number; - if (ckt->CKTcopyNodesets) { + if (ckt->CKTcopyNodesets) { if (CKTinst2Node(ckt,here,3,&tmpNode,&tmpName)==OK) { if (tmpNode->nsGiven) { - tmp->nodeset=tmpNode->nodeset; - tmp->nsGiven=tmpNode->nsGiven; + tmp->nodeset=tmpNode->nodeset; + tmp->nsGiven=tmpNode->nsGiven; } } } + } } - else - { here->BSIM3sNodePrime = here->BSIM3sNode; + else + { here->BSIM3sNodePrime = here->BSIM3sNode; } /* internal charge node */ - - if ((here->BSIM3nqsMod) && (here->BSIM3qNode == 0)) - { error = CKTmkVolt(ckt,&tmp,here->BSIM3name,"charge"); + + if ((here->BSIM3nqsMod) && (here->BSIM3qNode == 0)) + { error = CKTmkVolt(ckt,&tmp,here->BSIM3name,"charge"); if(error) return(error); here->BSIM3qNode = tmp->number; } - else - { here->BSIM3qNode = 0; + else + { here->BSIM3qNode = 0; } /* set Sparse Matrix Pointers */ @@ -998,7 +1001,7 @@ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ TSTALLOC(BSIM3SPdpPtr, BSIM3sNodePrime, BSIM3dNodePrime) TSTALLOC(BSIM3QqPtr, BSIM3qNode, BSIM3qNode) - + TSTALLOC(BSIM3QdpPtr, BSIM3qNode, BSIM3dNodePrime) TSTALLOC(BSIM3QspPtr, BSIM3qNode, BSIM3sNodePrime) TSTALLOC(BSIM3QgPtr, BSIM3qNode, BSIM3gNode) @@ -1011,7 +1014,7 @@ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ } } #ifdef USE_OMP3 - if (!cp_getvar("num_threads", CP_NUM, (char *) &nthreads)) + if (!cp_getvar("num_threads", CP_NUM, (char *) &nthreads)) nthreads = 2; omp_set_num_threads(nthreads); @@ -1021,15 +1024,15 @@ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ printf("OpenMP: %d threads are requested in BSIM3\n", nthreads); InstCount = 0; model = (BSIM3model*)inModel; - /* loop through all the BSIM3 device models + /* loop through all the BSIM3 device models to count the number of instances */ - + for( ; model != NULL; model = model->BSIM3nextModel ) { /* loop through all the instances of the model */ for (here = model->BSIM3instances; here != NULL ; - here=here->BSIM3nextInstance) - { + here=here->BSIM3nextInstance) + { InstCount++; } } @@ -1040,14 +1043,14 @@ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ { /* loop through all the instances of the model */ for (here = model->BSIM3instances; here != NULL ; - here=here->BSIM3nextInstance) - { + here=here->BSIM3nextInstance) + { InstArray[idx] = here; idx++; } /* set the array pointer and instance count into each model */ model->BSIM3InstCount = InstCount; - model->BSIM3InstanceArray = InstArray; + model->BSIM3InstanceArray = InstArray; } #endif @@ -1084,7 +1087,7 @@ BSIM3unsetup( } return OK; } - + diff --git a/src/spicelib/devices/bsim3v32/b3v32set.c b/src/spicelib/devices/bsim3v32/b3v32set.c index 6eb431df0..e690d43e8 100644 --- a/src/spicelib/devices/bsim3v32/b3v32set.c +++ b/src/spicelib/devices/bsim3v32/b3v32set.c @@ -34,7 +34,7 @@ BSIM3v32model *model = (BSIM3v32model*)inModel; BSIM3v32instance *here; int error; CKTnode *tmp; - + CKTnode *tmpNode; IFuid tmpName; @@ -43,18 +43,18 @@ IFuid tmpName; { /* Default value Processing for BSIM3v32 MOSFET Models */ if (!model->BSIM3v32typeGiven) - model->BSIM3v32type = NMOS; - if (!model->BSIM3v32mobModGiven) + model->BSIM3v32type = NMOS; + if (!model->BSIM3v32mobModGiven) model->BSIM3v32mobMod = 1; - if (!model->BSIM3v32binUnitGiven) + if (!model->BSIM3v32binUnitGiven) model->BSIM3v32binUnit = 1; - if (!model->BSIM3v32paramChkGiven) + if (!model->BSIM3v32paramChkGiven) model->BSIM3v32paramChk = 0; - if (!model->BSIM3v32capModGiven) + if (!model->BSIM3v32capModGiven) model->BSIM3v32capMod = 3; if (!model->BSIM3v32acmModGiven) model->BSIM3v32acmMod = 0; - if (!model->BSIM3v32noiModGiven) + if (!model->BSIM3v32noiModGiven) model->BSIM3v32noiMod = 1; /* If the user does not provide the model revision, @@ -64,7 +64,7 @@ IFuid tmpName; model->BSIM3v32version = "3.2.4"; /* I have added below the code that translate model string - * into an integer. This trick is meant to speed up the + * into an integer. This trick is meant to speed up the * revision testing instruction, since comparing integer * is faster than comparing strings. * Paolo Nenzi 2002 @@ -79,8 +79,8 @@ IFuid tmpName; model->BSIM3v32intVersion = BSIM3v32V32; else model->BSIM3v32intVersion = BSIM3v32V3OLD; - /* BSIM3v32V3OLD is a placeholder for pre 3.2 revision - * This model should not be used for pre 3.2 models. + /* BSIM3v32V3OLD is a placeholder for pre 3.2 revision + * This model should not be used for pre 3.2 models. */ if (!model->BSIM3v32toxGiven) @@ -92,7 +92,7 @@ IFuid tmpName; if (!model->BSIM3v32cdscGiven) model->BSIM3v32cdsc = 2.4e-4; /* unit Q/V/m^2 */ if (!model->BSIM3v32cdscbGiven) - model->BSIM3v32cdscb = 0.0; /* unit Q/V/m^2 */ + model->BSIM3v32cdscb = 0.0; /* unit Q/V/m^2 */ if (!model->BSIM3v32cdscdGiven) model->BSIM3v32cdscd = 0.0; /* unit Q/V/m^2 */ if (!model->BSIM3v32citGiven) @@ -102,11 +102,11 @@ IFuid tmpName; if (!model->BSIM3v32xjGiven) model->BSIM3v32xj = .15e-6; if (!model->BSIM3v32vsatGiven) - model->BSIM3v32vsat = 8.0e4; /* unit m/s */ + model->BSIM3v32vsat = 8.0e4; /* unit m/s */ if (!model->BSIM3v32atGiven) - model->BSIM3v32at = 3.3e4; /* unit m/s */ + model->BSIM3v32at = 3.3e4; /* unit m/s */ if (!model->BSIM3v32a0Given) - model->BSIM3v32a0 = 1.0; + model->BSIM3v32a0 = 1.0; if (!model->BSIM3v32agsGiven) model->BSIM3v32ags = 0.0; if (!model->BSIM3v32a1Given) @@ -132,31 +132,31 @@ IFuid tmpName; if (!model->BSIM3v32kt2Given) model->BSIM3v32kt2 = 0.022; /* No unit */ if (!model->BSIM3v32k3Given) - model->BSIM3v32k3 = 80.0; + model->BSIM3v32k3 = 80.0; if (!model->BSIM3v32k3bGiven) - model->BSIM3v32k3b = 0.0; + model->BSIM3v32k3b = 0.0; if (!model->BSIM3v32w0Given) - model->BSIM3v32w0 = 2.5e-6; + model->BSIM3v32w0 = 2.5e-6; if (!model->BSIM3v32nlxGiven) - model->BSIM3v32nlx = 1.74e-7; + model->BSIM3v32nlx = 1.74e-7; if (!model->BSIM3v32dvt0Given) - model->BSIM3v32dvt0 = 2.2; + model->BSIM3v32dvt0 = 2.2; if (!model->BSIM3v32dvt1Given) - model->BSIM3v32dvt1 = 0.53; + model->BSIM3v32dvt1 = 0.53; if (!model->BSIM3v32dvt2Given) - model->BSIM3v32dvt2 = -0.032; /* unit 1 / V */ + model->BSIM3v32dvt2 = -0.032; /* unit 1 / V */ if (!model->BSIM3v32dvt0wGiven) - model->BSIM3v32dvt0w = 0.0; + model->BSIM3v32dvt0w = 0.0; if (!model->BSIM3v32dvt1wGiven) - model->BSIM3v32dvt1w = 5.3e6; + model->BSIM3v32dvt1w = 5.3e6; if (!model->BSIM3v32dvt2wGiven) - model->BSIM3v32dvt2w = -0.032; + model->BSIM3v32dvt2w = -0.032; if (!model->BSIM3v32droutGiven) - model->BSIM3v32drout = 0.56; + model->BSIM3v32drout = 0.56; if (!model->BSIM3v32dsubGiven) - model->BSIM3v32dsub = model->BSIM3v32drout; + model->BSIM3v32dsub = model->BSIM3v32drout; if (!model->BSIM3v32vth0Given) model->BSIM3v32vth0 = (model->BSIM3v32type == NMOS) ? 0.7 : -0.7; if (!model->BSIM3v32uaGiven) @@ -168,76 +168,76 @@ IFuid tmpName; if (!model->BSIM3v32ub1Given) model->BSIM3v32ub1 = -7.61e-18; /* unit (m/V)**2 */ if (!model->BSIM3v32ucGiven) - model->BSIM3v32uc = (model->BSIM3v32mobMod == 3) ? -0.0465 : -0.0465e-9; + model->BSIM3v32uc = (model->BSIM3v32mobMod == 3) ? -0.0465 : -0.0465e-9; if (!model->BSIM3v32uc1Given) - model->BSIM3v32uc1 = (model->BSIM3v32mobMod == 3) ? -0.056 : -0.056e-9; + model->BSIM3v32uc1 = (model->BSIM3v32mobMod == 3) ? -0.056 : -0.056e-9; if (!model->BSIM3v32u0Given) model->BSIM3v32u0 = (model->BSIM3v32type == NMOS) ? 0.067 : 0.025; if (!model->BSIM3v32uteGiven) - model->BSIM3v32ute = -1.5; + model->BSIM3v32ute = -1.5; if (!model->BSIM3v32voffGiven) model->BSIM3v32voff = -0.08; - if (!model->BSIM3v32deltaGiven) + if (!model->BSIM3v32deltaGiven) model->BSIM3v32delta = 0.01; if (!model->BSIM3v32rdswGiven) - model->BSIM3v32rdsw = 0; + model->BSIM3v32rdsw = 0; if (!model->BSIM3v32prwgGiven) model->BSIM3v32prwg = 0.0; /* unit 1/V */ if (!model->BSIM3v32prwbGiven) - model->BSIM3v32prwb = 0.0; + model->BSIM3v32prwb = 0.0; if (!model->BSIM3v32prtGiven) if (!model->BSIM3v32prtGiven) - model->BSIM3v32prt = 0.0; + model->BSIM3v32prt = 0.0; if (!model->BSIM3v32eta0Given) - model->BSIM3v32eta0 = 0.08; /* no unit */ + model->BSIM3v32eta0 = 0.08; /* no unit */ if (!model->BSIM3v32etabGiven) - model->BSIM3v32etab = -0.07; /* unit 1/V */ + model->BSIM3v32etab = -0.07; /* unit 1/V */ if (!model->BSIM3v32pclmGiven) - model->BSIM3v32pclm = 1.3; /* no unit */ + model->BSIM3v32pclm = 1.3; /* no unit */ if (!model->BSIM3v32pdibl1Given) model->BSIM3v32pdibl1 = .39; /* no unit */ if (!model->BSIM3v32pdibl2Given) - model->BSIM3v32pdibl2 = 0.0086; /* no unit */ + model->BSIM3v32pdibl2 = 0.0086; /* no unit */ if (!model->BSIM3v32pdiblbGiven) - model->BSIM3v32pdiblb = 0.0; /* 1/V */ + model->BSIM3v32pdiblb = 0.0; /* 1/V */ if (!model->BSIM3v32pscbe1Given) - model->BSIM3v32pscbe1 = 4.24e8; + model->BSIM3v32pscbe1 = 4.24e8; if (!model->BSIM3v32pscbe2Given) - model->BSIM3v32pscbe2 = 1.0e-5; + model->BSIM3v32pscbe2 = 1.0e-5; if (!model->BSIM3v32pvagGiven) - model->BSIM3v32pvag = 0.0; - if (!model->BSIM3v32wrGiven) + model->BSIM3v32pvag = 0.0; + if (!model->BSIM3v32wrGiven) model->BSIM3v32wr = 1.0; - if (!model->BSIM3v32dwgGiven) + if (!model->BSIM3v32dwgGiven) model->BSIM3v32dwg = 0.0; - if (!model->BSIM3v32dwbGiven) + if (!model->BSIM3v32dwbGiven) model->BSIM3v32dwb = 0.0; if (!model->BSIM3v32b0Given) model->BSIM3v32b0 = 0.0; - if (!model->BSIM3v32b1Given) + if (!model->BSIM3v32b1Given) model->BSIM3v32b1 = 0.0; - if (!model->BSIM3v32alpha0Given) + if (!model->BSIM3v32alpha0Given) model->BSIM3v32alpha0 = 0.0; if (!model->BSIM3v32alpha1Given) model->BSIM3v32alpha1 = 0.0; - if (!model->BSIM3v32beta0Given) + if (!model->BSIM3v32beta0Given) model->BSIM3v32beta0 = 30.0; if (!model->BSIM3v32ijthGiven) model->BSIM3v32ijth = 0.1; /* unit A */ - if (!model->BSIM3v32elmGiven) + if (!model->BSIM3v32elmGiven) model->BSIM3v32elm = 5.0; - if (!model->BSIM3v32cgslGiven) + if (!model->BSIM3v32cgslGiven) model->BSIM3v32cgsl = 0.0; - if (!model->BSIM3v32cgdlGiven) + if (!model->BSIM3v32cgdlGiven) model->BSIM3v32cgdl = 0.0; - if (!model->BSIM3v32ckappaGiven) + if (!model->BSIM3v32ckappaGiven) model->BSIM3v32ckappa = 0.6; - if (!model->BSIM3v32clcGiven) + if (!model->BSIM3v32clcGiven) model->BSIM3v32clc = 0.1e-6; - if (!model->BSIM3v32cleGiven) + if (!model->BSIM3v32cleGiven) model->BSIM3v32cle = 0.6; - if (!model->BSIM3v32vfbcvGiven) + if (!model->BSIM3v32vfbcvGiven) model->BSIM3v32vfbcv = -1.0; if (!model->BSIM3v32acdeGiven) model->BSIM3v32acde = 1.0; @@ -281,7 +281,7 @@ IFuid tmpName; model->BSIM3v32lcdsc = 0.0; if (!model->BSIM3v32lcdscbGiven) model->BSIM3v32lcdscb = 0.0; - if (!model->BSIM3v32lcdscdGiven) + if (!model->BSIM3v32lcdscdGiven) model->BSIM3v32lcdscd = 0.0; if (!model->BSIM3v32lcitGiven) model->BSIM3v32lcit = 0.0; @@ -294,7 +294,7 @@ IFuid tmpName; if (!model->BSIM3v32latGiven) model->BSIM3v32lat = 0.0; if (!model->BSIM3v32la0Given) - model->BSIM3v32la0 = 0.0; + model->BSIM3v32la0 = 0.0; if (!model->BSIM3v32lagsGiven) model->BSIM3v32lags = 0.0; if (!model->BSIM3v32la1Given) @@ -314,33 +314,33 @@ IFuid tmpName; if (!model->BSIM3v32lxtGiven) model->BSIM3v32lxt = 0.0; if (!model->BSIM3v32lkt1Given) - model->BSIM3v32lkt1 = 0.0; + model->BSIM3v32lkt1 = 0.0; if (!model->BSIM3v32lkt1lGiven) model->BSIM3v32lkt1l = 0.0; if (!model->BSIM3v32lkt2Given) model->BSIM3v32lkt2 = 0.0; if (!model->BSIM3v32lk3Given) - model->BSIM3v32lk3 = 0.0; + model->BSIM3v32lk3 = 0.0; if (!model->BSIM3v32lk3bGiven) - model->BSIM3v32lk3b = 0.0; + model->BSIM3v32lk3b = 0.0; if (!model->BSIM3v32lw0Given) - model->BSIM3v32lw0 = 0.0; + model->BSIM3v32lw0 = 0.0; if (!model->BSIM3v32lnlxGiven) - model->BSIM3v32lnlx = 0.0; + model->BSIM3v32lnlx = 0.0; if (!model->BSIM3v32ldvt0Given) - model->BSIM3v32ldvt0 = 0.0; + model->BSIM3v32ldvt0 = 0.0; if (!model->BSIM3v32ldvt1Given) - model->BSIM3v32ldvt1 = 0.0; + model->BSIM3v32ldvt1 = 0.0; if (!model->BSIM3v32ldvt2Given) model->BSIM3v32ldvt2 = 0.0; if (!model->BSIM3v32ldvt0wGiven) - model->BSIM3v32ldvt0w = 0.0; + model->BSIM3v32ldvt0w = 0.0; if (!model->BSIM3v32ldvt1wGiven) - model->BSIM3v32ldvt1w = 0.0; + model->BSIM3v32ldvt1w = 0.0; if (!model->BSIM3v32ldvt2wGiven) model->BSIM3v32ldvt2w = 0.0; if (!model->BSIM3v32ldroutGiven) - model->BSIM3v32ldrout = 0.0; + model->BSIM3v32ldrout = 0.0; if (!model->BSIM3v32ldsubGiven) model->BSIM3v32ldsub = 0.0; if (!model->BSIM3v32lvth0Given) @@ -360,10 +360,10 @@ IFuid tmpName; if (!model->BSIM3v32lu0Given) model->BSIM3v32lu0 = 0.0; if (!model->BSIM3v32luteGiven) - model->BSIM3v32lute = 0.0; + model->BSIM3v32lute = 0.0; if (!model->BSIM3v32lvoffGiven) model->BSIM3v32lvoff = 0.0; - if (!model->BSIM3v32ldeltaGiven) + if (!model->BSIM3v32ldeltaGiven) model->BSIM3v32ldelta = 0.0; if (!model->BSIM3v32lrdswGiven) model->BSIM3v32lrdsw = 0.0; @@ -378,7 +378,7 @@ IFuid tmpName; if (!model->BSIM3v32letabGiven) model->BSIM3v32letab = -0.0; if (!model->BSIM3v32lpclmGiven) - model->BSIM3v32lpclm = 0.0; + model->BSIM3v32lpclm = 0.0; if (!model->BSIM3v32lpdibl1Given) model->BSIM3v32lpdibl1 = 0.0; if (!model->BSIM3v32lpdibl2Given) @@ -390,41 +390,41 @@ IFuid tmpName; if (!model->BSIM3v32lpscbe2Given) model->BSIM3v32lpscbe2 = 0.0; if (!model->BSIM3v32lpvagGiven) - model->BSIM3v32lpvag = 0.0; - if (!model->BSIM3v32lwrGiven) + model->BSIM3v32lpvag = 0.0; + if (!model->BSIM3v32lwrGiven) model->BSIM3v32lwr = 0.0; - if (!model->BSIM3v32ldwgGiven) + if (!model->BSIM3v32ldwgGiven) model->BSIM3v32ldwg = 0.0; - if (!model->BSIM3v32ldwbGiven) + if (!model->BSIM3v32ldwbGiven) model->BSIM3v32ldwb = 0.0; if (!model->BSIM3v32lb0Given) model->BSIM3v32lb0 = 0.0; - if (!model->BSIM3v32lb1Given) + if (!model->BSIM3v32lb1Given) model->BSIM3v32lb1 = 0.0; - if (!model->BSIM3v32lalpha0Given) + if (!model->BSIM3v32lalpha0Given) model->BSIM3v32lalpha0 = 0.0; if (!model->BSIM3v32lalpha1Given) model->BSIM3v32lalpha1 = 0.0; - if (!model->BSIM3v32lbeta0Given) + if (!model->BSIM3v32lbeta0Given) model->BSIM3v32lbeta0 = 0.0; if (!model->BSIM3v32lvfbGiven) model->BSIM3v32lvfb = 0.0; - if (!model->BSIM3v32lelmGiven) + if (!model->BSIM3v32lelmGiven) model->BSIM3v32lelm = 0.0; - if (!model->BSIM3v32lcgslGiven) + if (!model->BSIM3v32lcgslGiven) model->BSIM3v32lcgsl = 0.0; - if (!model->BSIM3v32lcgdlGiven) + if (!model->BSIM3v32lcgdlGiven) model->BSIM3v32lcgdl = 0.0; - if (!model->BSIM3v32lckappaGiven) + if (!model->BSIM3v32lckappaGiven) model->BSIM3v32lckappa = 0.0; - if (!model->BSIM3v32lclcGiven) + if (!model->BSIM3v32lclcGiven) model->BSIM3v32lclc = 0.0; - if (!model->BSIM3v32lcleGiven) + if (!model->BSIM3v32lcleGiven) model->BSIM3v32lcle = 0.0; - if (!model->BSIM3v32lcfGiven) + if (!model->BSIM3v32lcfGiven) model->BSIM3v32lcf = 0.0; - if (!model->BSIM3v32lvfbcvGiven) + if (!model->BSIM3v32lvfbcvGiven) model->BSIM3v32lvfbcv = 0.0; if (!model->BSIM3v32lacdeGiven) model->BSIM3v32lacde = 0.0; @@ -439,7 +439,7 @@ IFuid tmpName; if (!model->BSIM3v32wcdscGiven) model->BSIM3v32wcdsc = 0.0; if (!model->BSIM3v32wcdscbGiven) - model->BSIM3v32wcdscb = 0.0; + model->BSIM3v32wcdscb = 0.0; if (!model->BSIM3v32wcdscdGiven) model->BSIM3v32wcdscd = 0.0; if (!model->BSIM3v32wcitGiven) @@ -453,7 +453,7 @@ IFuid tmpName; if (!model->BSIM3v32watGiven) model->BSIM3v32wat = 0.0; if (!model->BSIM3v32wa0Given) - model->BSIM3v32wa0 = 0.0; + model->BSIM3v32wa0 = 0.0; if (!model->BSIM3v32wagsGiven) model->BSIM3v32wags = 0.0; if (!model->BSIM3v32wa1Given) @@ -473,33 +473,33 @@ IFuid tmpName; if (!model->BSIM3v32wxtGiven) model->BSIM3v32wxt = 0.0; if (!model->BSIM3v32wkt1Given) - model->BSIM3v32wkt1 = 0.0; + model->BSIM3v32wkt1 = 0.0; if (!model->BSIM3v32wkt1lGiven) model->BSIM3v32wkt1l = 0.0; if (!model->BSIM3v32wkt2Given) model->BSIM3v32wkt2 = 0.0; if (!model->BSIM3v32wk3Given) - model->BSIM3v32wk3 = 0.0; + model->BSIM3v32wk3 = 0.0; if (!model->BSIM3v32wk3bGiven) - model->BSIM3v32wk3b = 0.0; + model->BSIM3v32wk3b = 0.0; if (!model->BSIM3v32ww0Given) - model->BSIM3v32ww0 = 0.0; + model->BSIM3v32ww0 = 0.0; if (!model->BSIM3v32wnlxGiven) - model->BSIM3v32wnlx = 0.0; + model->BSIM3v32wnlx = 0.0; if (!model->BSIM3v32wdvt0Given) - model->BSIM3v32wdvt0 = 0.0; + model->BSIM3v32wdvt0 = 0.0; if (!model->BSIM3v32wdvt1Given) - model->BSIM3v32wdvt1 = 0.0; + model->BSIM3v32wdvt1 = 0.0; if (!model->BSIM3v32wdvt2Given) model->BSIM3v32wdvt2 = 0.0; if (!model->BSIM3v32wdvt0wGiven) - model->BSIM3v32wdvt0w = 0.0; + model->BSIM3v32wdvt0w = 0.0; if (!model->BSIM3v32wdvt1wGiven) - model->BSIM3v32wdvt1w = 0.0; + model->BSIM3v32wdvt1w = 0.0; if (!model->BSIM3v32wdvt2wGiven) model->BSIM3v32wdvt2w = 0.0; if (!model->BSIM3v32wdroutGiven) - model->BSIM3v32wdrout = 0.0; + model->BSIM3v32wdrout = 0.0; if (!model->BSIM3v32wdsubGiven) model->BSIM3v32wdsub = 0.0; if (!model->BSIM3v32wvth0Given) @@ -519,10 +519,10 @@ IFuid tmpName; if (!model->BSIM3v32wu0Given) model->BSIM3v32wu0 = 0.0; if (!model->BSIM3v32wuteGiven) - model->BSIM3v32wute = 0.0; + model->BSIM3v32wute = 0.0; if (!model->BSIM3v32wvoffGiven) model->BSIM3v32wvoff = 0.0; - if (!model->BSIM3v32wdeltaGiven) + if (!model->BSIM3v32wdeltaGiven) model->BSIM3v32wdelta = 0.0; if (!model->BSIM3v32wrdswGiven) model->BSIM3v32wrdsw = 0.0; @@ -537,7 +537,7 @@ IFuid tmpName; if (!model->BSIM3v32wetabGiven) model->BSIM3v32wetab = 0.0; if (!model->BSIM3v32wpclmGiven) - model->BSIM3v32wpclm = 0.0; + model->BSIM3v32wpclm = 0.0; if (!model->BSIM3v32wpdibl1Given) model->BSIM3v32wpdibl1 = 0.0; if (!model->BSIM3v32wpdibl2Given) @@ -549,41 +549,41 @@ IFuid tmpName; if (!model->BSIM3v32wpscbe2Given) model->BSIM3v32wpscbe2 = 0.0; if (!model->BSIM3v32wpvagGiven) - model->BSIM3v32wpvag = 0.0; - if (!model->BSIM3v32wwrGiven) + model->BSIM3v32wpvag = 0.0; + if (!model->BSIM3v32wwrGiven) model->BSIM3v32wwr = 0.0; - if (!model->BSIM3v32wdwgGiven) + if (!model->BSIM3v32wdwgGiven) model->BSIM3v32wdwg = 0.0; - if (!model->BSIM3v32wdwbGiven) + if (!model->BSIM3v32wdwbGiven) model->BSIM3v32wdwb = 0.0; if (!model->BSIM3v32wb0Given) model->BSIM3v32wb0 = 0.0; - if (!model->BSIM3v32wb1Given) + if (!model->BSIM3v32wb1Given) model->BSIM3v32wb1 = 0.0; - if (!model->BSIM3v32walpha0Given) + if (!model->BSIM3v32walpha0Given) model->BSIM3v32walpha0 = 0.0; if (!model->BSIM3v32walpha1Given) model->BSIM3v32walpha1 = 0.0; - if (!model->BSIM3v32wbeta0Given) + if (!model->BSIM3v32wbeta0Given) model->BSIM3v32wbeta0 = 0.0; if (!model->BSIM3v32wvfbGiven) model->BSIM3v32wvfb = 0.0; - if (!model->BSIM3v32welmGiven) + if (!model->BSIM3v32welmGiven) model->BSIM3v32welm = 0.0; - if (!model->BSIM3v32wcgslGiven) + if (!model->BSIM3v32wcgslGiven) model->BSIM3v32wcgsl = 0.0; - if (!model->BSIM3v32wcgdlGiven) + if (!model->BSIM3v32wcgdlGiven) model->BSIM3v32wcgdl = 0.0; - if (!model->BSIM3v32wckappaGiven) + if (!model->BSIM3v32wckappaGiven) model->BSIM3v32wckappa = 0.0; - if (!model->BSIM3v32wcfGiven) + if (!model->BSIM3v32wcfGiven) model->BSIM3v32wcf = 0.0; - if (!model->BSIM3v32wclcGiven) + if (!model->BSIM3v32wclcGiven) model->BSIM3v32wclc = 0.0; - if (!model->BSIM3v32wcleGiven) + if (!model->BSIM3v32wcleGiven) model->BSIM3v32wcle = 0.0; - if (!model->BSIM3v32wvfbcvGiven) + if (!model->BSIM3v32wvfbcvGiven) model->BSIM3v32wvfbcv = 0.0; if (!model->BSIM3v32wacdeGiven) model->BSIM3v32wacde = 0.0; @@ -598,7 +598,7 @@ IFuid tmpName; if (!model->BSIM3v32pcdscGiven) model->BSIM3v32pcdsc = 0.0; if (!model->BSIM3v32pcdscbGiven) - model->BSIM3v32pcdscb = 0.0; + model->BSIM3v32pcdscb = 0.0; if (!model->BSIM3v32pcdscdGiven) model->BSIM3v32pcdscd = 0.0; if (!model->BSIM3v32pcitGiven) @@ -612,8 +612,8 @@ IFuid tmpName; if (!model->BSIM3v32patGiven) model->BSIM3v32pat = 0.0; if (!model->BSIM3v32pa0Given) - model->BSIM3v32pa0 = 0.0; - + model->BSIM3v32pa0 = 0.0; + if (!model->BSIM3v32pagsGiven) model->BSIM3v32pags = 0.0; if (!model->BSIM3v32pa1Given) @@ -633,33 +633,33 @@ IFuid tmpName; if (!model->BSIM3v32pxtGiven) model->BSIM3v32pxt = 0.0; if (!model->BSIM3v32pkt1Given) - model->BSIM3v32pkt1 = 0.0; + model->BSIM3v32pkt1 = 0.0; if (!model->BSIM3v32pkt1lGiven) model->BSIM3v32pkt1l = 0.0; if (!model->BSIM3v32pkt2Given) model->BSIM3v32pkt2 = 0.0; if (!model->BSIM3v32pk3Given) - model->BSIM3v32pk3 = 0.0; + model->BSIM3v32pk3 = 0.0; if (!model->BSIM3v32pk3bGiven) - model->BSIM3v32pk3b = 0.0; + model->BSIM3v32pk3b = 0.0; if (!model->BSIM3v32pw0Given) - model->BSIM3v32pw0 = 0.0; + model->BSIM3v32pw0 = 0.0; if (!model->BSIM3v32pnlxGiven) - model->BSIM3v32pnlx = 0.0; + model->BSIM3v32pnlx = 0.0; if (!model->BSIM3v32pdvt0Given) - model->BSIM3v32pdvt0 = 0.0; + model->BSIM3v32pdvt0 = 0.0; if (!model->BSIM3v32pdvt1Given) - model->BSIM3v32pdvt1 = 0.0; + model->BSIM3v32pdvt1 = 0.0; if (!model->BSIM3v32pdvt2Given) model->BSIM3v32pdvt2 = 0.0; if (!model->BSIM3v32pdvt0wGiven) - model->BSIM3v32pdvt0w = 0.0; + model->BSIM3v32pdvt0w = 0.0; if (!model->BSIM3v32pdvt1wGiven) - model->BSIM3v32pdvt1w = 0.0; + model->BSIM3v32pdvt1w = 0.0; if (!model->BSIM3v32pdvt2wGiven) model->BSIM3v32pdvt2w = 0.0; if (!model->BSIM3v32pdroutGiven) - model->BSIM3v32pdrout = 0.0; + model->BSIM3v32pdrout = 0.0; if (!model->BSIM3v32pdsubGiven) model->BSIM3v32pdsub = 0.0; if (!model->BSIM3v32pvth0Given) @@ -679,10 +679,10 @@ IFuid tmpName; if (!model->BSIM3v32pu0Given) model->BSIM3v32pu0 = 0.0; if (!model->BSIM3v32puteGiven) - model->BSIM3v32pute = 0.0; + model->BSIM3v32pute = 0.0; if (!model->BSIM3v32pvoffGiven) model->BSIM3v32pvoff = 0.0; - if (!model->BSIM3v32pdeltaGiven) + if (!model->BSIM3v32pdeltaGiven) model->BSIM3v32pdelta = 0.0; if (!model->BSIM3v32prdswGiven) model->BSIM3v32prdsw = 0.0; @@ -697,7 +697,7 @@ IFuid tmpName; if (!model->BSIM3v32petabGiven) model->BSIM3v32petab = 0.0; if (!model->BSIM3v32ppclmGiven) - model->BSIM3v32ppclm = 0.0; + model->BSIM3v32ppclm = 0.0; if (!model->BSIM3v32ppdibl1Given) model->BSIM3v32ppdibl1 = 0.0; if (!model->BSIM3v32ppdibl2Given) @@ -709,41 +709,41 @@ IFuid tmpName; if (!model->BSIM3v32ppscbe2Given) model->BSIM3v32ppscbe2 = 0.0; if (!model->BSIM3v32ppvagGiven) - model->BSIM3v32ppvag = 0.0; - if (!model->BSIM3v32pwrGiven) + model->BSIM3v32ppvag = 0.0; + if (!model->BSIM3v32pwrGiven) model->BSIM3v32pwr = 0.0; - if (!model->BSIM3v32pdwgGiven) + if (!model->BSIM3v32pdwgGiven) model->BSIM3v32pdwg = 0.0; - if (!model->BSIM3v32pdwbGiven) + if (!model->BSIM3v32pdwbGiven) model->BSIM3v32pdwb = 0.0; if (!model->BSIM3v32pb0Given) model->BSIM3v32pb0 = 0.0; - if (!model->BSIM3v32pb1Given) + if (!model->BSIM3v32pb1Given) model->BSIM3v32pb1 = 0.0; - if (!model->BSIM3v32palpha0Given) + if (!model->BSIM3v32palpha0Given) model->BSIM3v32palpha0 = 0.0; if (!model->BSIM3v32palpha1Given) model->BSIM3v32palpha1 = 0.0; - if (!model->BSIM3v32pbeta0Given) + if (!model->BSIM3v32pbeta0Given) model->BSIM3v32pbeta0 = 0.0; if (!model->BSIM3v32pvfbGiven) model->BSIM3v32pvfb = 0.0; - if (!model->BSIM3v32pelmGiven) + if (!model->BSIM3v32pelmGiven) model->BSIM3v32pelm = 0.0; - if (!model->BSIM3v32pcgslGiven) + if (!model->BSIM3v32pcgslGiven) model->BSIM3v32pcgsl = 0.0; - if (!model->BSIM3v32pcgdlGiven) + if (!model->BSIM3v32pcgdlGiven) model->BSIM3v32pcgdl = 0.0; - if (!model->BSIM3v32pckappaGiven) + if (!model->BSIM3v32pckappaGiven) model->BSIM3v32pckappa = 0.0; - if (!model->BSIM3v32pcfGiven) + if (!model->BSIM3v32pcfGiven) model->BSIM3v32pcf = 0.0; - if (!model->BSIM3v32pclcGiven) + if (!model->BSIM3v32pclcGiven) model->BSIM3v32pclc = 0.0; - if (!model->BSIM3v32pcleGiven) + if (!model->BSIM3v32pcleGiven) model->BSIM3v32pcle = 0.0; - if (!model->BSIM3v32pvfbcvGiven) + if (!model->BSIM3v32pvfbcvGiven) model->BSIM3v32pvfbcv = 0.0; if (!model->BSIM3v32pacdeGiven) model->BSIM3v32pacde = 0.0; @@ -755,57 +755,57 @@ IFuid tmpName; model->BSIM3v32pvoffcv = 0.0; /* unit degree celcius */ - if (!model->BSIM3v32tnomGiven) - model->BSIM3v32tnom = ckt->CKTnomTemp; + if (!model->BSIM3v32tnomGiven) + model->BSIM3v32tnom = ckt->CKTnomTemp; /* else model->BSIM3v32tnom = model->BSIM3v32tnom + 273.15; we make this transform in b3v32mpar.c in the first run */ - if (!model->BSIM3v32LintGiven) + if (!model->BSIM3v32LintGiven) model->BSIM3v32Lint = 0.0; - if (!model->BSIM3v32LlGiven) + if (!model->BSIM3v32LlGiven) model->BSIM3v32Ll = 0.0; if (!model->BSIM3v32LlcGiven) model->BSIM3v32Llc = model->BSIM3v32Ll; - if (!model->BSIM3v32LlnGiven) + if (!model->BSIM3v32LlnGiven) model->BSIM3v32Lln = 1.0; - if (!model->BSIM3v32LwGiven) + if (!model->BSIM3v32LwGiven) model->BSIM3v32Lw = 0.0; if (!model->BSIM3v32LwcGiven) model->BSIM3v32Lwc = model->BSIM3v32Lw; - if (!model->BSIM3v32LwnGiven) + if (!model->BSIM3v32LwnGiven) model->BSIM3v32Lwn = 1.0; - if (!model->BSIM3v32LwlGiven) + if (!model->BSIM3v32LwlGiven) model->BSIM3v32Lwl = 0.0; if (!model->BSIM3v32LwlcGiven) model->BSIM3v32Lwlc = model->BSIM3v32Lwl; - if (!model->BSIM3v32LminGiven) + if (!model->BSIM3v32LminGiven) model->BSIM3v32Lmin = 0.0; - if (!model->BSIM3v32LmaxGiven) + if (!model->BSIM3v32LmaxGiven) model->BSIM3v32Lmax = 1.0; - if (!model->BSIM3v32WintGiven) + if (!model->BSIM3v32WintGiven) model->BSIM3v32Wint = 0.0; - if (!model->BSIM3v32WlGiven) + if (!model->BSIM3v32WlGiven) model->BSIM3v32Wl = 0.0; if (!model->BSIM3v32WlcGiven) model->BSIM3v32Wlc = model->BSIM3v32Wl; - if (!model->BSIM3v32WlnGiven) + if (!model->BSIM3v32WlnGiven) model->BSIM3v32Wln = 1.0; - if (!model->BSIM3v32WwGiven) + if (!model->BSIM3v32WwGiven) model->BSIM3v32Ww = 0.0; if (!model->BSIM3v32WwcGiven) model->BSIM3v32Wwc = model->BSIM3v32Ww; - if (!model->BSIM3v32WwnGiven) + if (!model->BSIM3v32WwnGiven) model->BSIM3v32Wwn = 1.0; - if (!model->BSIM3v32WwlGiven) + if (!model->BSIM3v32WwlGiven) model->BSIM3v32Wwl = 0.0; if (!model->BSIM3v32WwlcGiven) model->BSIM3v32Wwlc = model->BSIM3v32Wwl; - if (!model->BSIM3v32WminGiven) + if (!model->BSIM3v32WminGiven) model->BSIM3v32Wmin = 0.0; - if (!model->BSIM3v32WmaxGiven) + if (!model->BSIM3v32WmaxGiven) model->BSIM3v32Wmax = 1.0; - if (!model->BSIM3v32dwcGiven) + if (!model->BSIM3v32dwcGiven) model->BSIM3v32dwc = model->BSIM3v32Wint; - if (!model->BSIM3v32dlcGiven) + if (!model->BSIM3v32dlcGiven) model->BSIM3v32dlc = model->BSIM3v32Lint; if (!model->BSIM3v32xlGiven) @@ -822,7 +822,7 @@ IFuid tmpName; - model->BSIM3v32cgdl ; } else - model->BSIM3v32cgdo = 0.6 * model->BSIM3v32xj * model->BSIM3v32cox; + model->BSIM3v32cgdo = 0.6 * model->BSIM3v32xj * model->BSIM3v32cox; } if (!model->BSIM3v32cgsoGiven) { if (model->BSIM3v32dlcGiven && (model->BSIM3v32dlc > 0.0)) @@ -830,7 +830,7 @@ IFuid tmpName; - model->BSIM3v32cgsl ; } else - model->BSIM3v32cgso = 0.6 * model->BSIM3v32xj * model->BSIM3v32cox; + model->BSIM3v32cgso = 0.6 * model->BSIM3v32xj * model->BSIM3v32cox; } if (!model->BSIM3v32cgboGiven) @@ -895,8 +895,8 @@ IFuid tmpName; model->BSIM3v32kf = 0.0; /* loop through all the instances of the model */ for (here = model->BSIM3v32instances; here != NULL ; - here=here->BSIM3v32nextInstance) - { + here=here->BSIM3v32nextInstance) + { if (here->BSIM3v32owner == ARCHme) { /* allocate a chunk of the state vector */ @@ -910,12 +910,12 @@ IFuid tmpName; if (!here->BSIM3v32drainPerimeterGiven) here->BSIM3v32drainPerimeter = 0.0; if (!here->BSIM3v32drainSquaresGiven) - { + { if (model->BSIM3v32acmMod == 0) here->BSIM3v32drainSquares = 1.0; else here->BSIM3v32drainSquares = 0.0; - } + } if (!here->BSIM3v32icVBSGiven) here->BSIM3v32icVBS = 0.0; if (!here->BSIM3v32icVDSGiven) @@ -929,12 +929,12 @@ IFuid tmpName; if (!here->BSIM3v32sourcePerimeterGiven) here->BSIM3v32sourcePerimeter = 0.0; if (!here->BSIM3v32sourceSquaresGiven) - { + { if (model->BSIM3v32acmMod == 0) here->BSIM3v32sourceSquares = 1.0; else here->BSIM3v32sourceSquares = 0.0; - } + } if (!here->BSIM3v32wGiven) here->BSIM3v32w = 5.0e-6; if (!here->BSIM3v32nqsModGiven) @@ -944,70 +944,65 @@ IFuid tmpName; here->BSIM3v32m = 1; /* process drain series resistance */ - if ( ((model->BSIM3v32sheetResistance > 0.0) && - (here->BSIM3v32drainSquares > 0.0) && (here->BSIM3v32dNodePrime == 0)) - ||((model->BSIM3v32sheetResistance > 0.0) && - (model->BSIM3v32hdif > 0.0) && (here->BSIM3v32dNodePrime == 0)) - ||((model->BSIM3v32rd > 0.0) && - (model->BSIM3v32ldif > 0.0) && (here->BSIM3v32dNodePrime == 0)) - ||((model->BSIM3v32rd > 0.0) && - (model->BSIM3v32ld > 0.0) && (here->BSIM3v32dNodePrime == 0)) - ||((model->BSIM3v32rsc > 0.0) && (here->BSIM3v32dNodePrime == 0)) + if ( ((model->BSIM3v32sheetResistance > 0.0) && (here->BSIM3v32drainSquares > 0.0)) + ||((model->BSIM3v32sheetResistance > 0.0) && (model->BSIM3v32hdif > 0.0)) + ||((model->BSIM3v32rd > 0.0) && (model->BSIM3v32ldif > 0.0)) + ||((model->BSIM3v32rd > 0.0) && (model->BSIM3v32ld > 0.0)) + ||((model->BSIM3v32rdc > 0.0)) ) - { error = CKTmkVolt(ckt,&tmp,here->BSIM3v32name,"drain"); - if(error) return(error); - here->BSIM3v32dNodePrime = tmp->number; - if (ckt->CKTcopyNodesets) { - if (CKTinst2Node(ckt,here,1,&tmpNode,&tmpName)==OK) { - if (tmpNode->nsGiven) { - tmp->nodeset=tmpNode->nodeset; - tmp->nsGiven=tmpNode->nsGiven; - } - } - } - + { + if(here->BSIM3v32dNodePrime == 0) { + error = CKTmkVolt(ckt,&tmp,here->BSIM3v32name,"drain"); + if(error) return(error); + here->BSIM3v32dNodePrime = tmp->number; + if (ckt->CKTcopyNodesets) { + if (CKTinst2Node(ckt,here,3,&tmpNode,&tmpName)==OK) { + if (tmpNode->nsGiven) { + tmp->nodeset=tmpNode->nodeset; + tmp->nsGiven=tmpNode->nsGiven; + } + } + } + } } else - { here->BSIM3v32dNodePrime = here->BSIM3v32dNode; + { here->BSIM3v32dNodePrime = here->BSIM3v32dNode; } - + /* process source series resistance */ - if ( ((model->BSIM3v32sheetResistance > 0.0) && - (here->BSIM3v32sourceSquares > 0.0) && (here->BSIM3v32sNodePrime == 0)) - ||((model->BSIM3v32sheetResistance > 0.0) && - (model->BSIM3v32hdif > 0.0) && (here->BSIM3v32sNodePrime == 0)) - ||((model->BSIM3v32rs > 0.0) && - (model->BSIM3v32ldif > 0.0) && (here->BSIM3v32sNodePrime == 0)) - ||((model->BSIM3v32rs > 0.0) && - (model->BSIM3v32ld > 0.0) && (here->BSIM3v32sNodePrime == 0)) - ||((model->BSIM3v32rsc > 0.0) && (here->BSIM3v32sNodePrime == 0)) + if ( ((model->BSIM3v32sheetResistance > 0.0) && (here->BSIM3v32sourceSquares > 0.0)) + ||((model->BSIM3v32sheetResistance > 0.0) && (model->BSIM3v32hdif > 0.0)) + ||((model->BSIM3v32rs > 0.0) && (model->BSIM3v32ldif > 0.0)) + ||((model->BSIM3v32rs > 0.0) && (model->BSIM3v32ld > 0.0)) + ||((model->BSIM3v32rsc > 0.0)) ) - { error = CKTmkVolt(ckt,&tmp,here->BSIM3v32name,"source"); - if(error) return(error); - here->BSIM3v32sNodePrime = tmp->number; - - if (ckt->CKTcopyNodesets) { - if (CKTinst2Node(ckt,here,3,&tmpNode,&tmpName)==OK) { - if (tmpNode->nsGiven) { - tmp->nodeset=tmpNode->nodeset; - tmp->nsGiven=tmpNode->nsGiven; - } - } - } - + { + if(here->BSIM3v32sNodePrime == 0) { + error = CKTmkVolt(ckt,&tmp,here->BSIM3v32name,"source"); + if(error) return(error); + here->BSIM3v32sNodePrime = tmp->number; + if (ckt->CKTcopyNodesets) { + if (CKTinst2Node(ckt,here,3,&tmpNode,&tmpName)==OK) { + if (tmpNode->nsGiven) { + tmp->nodeset=tmpNode->nodeset; + tmp->nsGiven=tmpNode->nsGiven; + } + } + } + } } - else - { here->BSIM3v32sNodePrime = here->BSIM3v32sNode; + else + { here->BSIM3v32sNodePrime = here->BSIM3v32sNode; } /* internal charge node */ - - if ((here->BSIM3v32nqsMod) && (here->BSIM3v32qNode == 0)) + + if ((here->BSIM3v32nqsMod) && (here->BSIM3v32qNode == 0)) { error = CKTmkVolt(ckt,&tmp,here->BSIM3v32name,"charge"); if(error) return(error); here->BSIM3v32qNode = tmp->number; } - else + else { here->BSIM3v32qNode = 0; } @@ -1043,7 +1038,7 @@ if((here->ptr = SMPmakeElt(matrix,here->first,here->second))==(double *)NULL){\ TSTALLOC(BSIM3v32SPdpPtr, BSIM3v32sNodePrime, BSIM3v32dNodePrime) TSTALLOC(BSIM3v32QqPtr, BSIM3v32qNode, BSIM3v32qNode) - + TSTALLOC(BSIM3v32QdpPtr, BSIM3v32qNode, BSIM3v32dNodePrime) TSTALLOC(BSIM3v32QspPtr, BSIM3v32qNode, BSIM3v32sNodePrime) TSTALLOC(BSIM3v32QgPtr, BSIM3v32qNode, BSIM3v32gNode) @@ -1088,7 +1083,7 @@ BSIM3v32unsetup( } return OK; } - +