1 /********** 2 Copyright 1990 Regents of the University of California. All rights reserved. 3 Author: 1995 Min-Chie Jeng and Mansun Chan. 4 File: b3v0mpar.c 5 **********/ 6 7 #include "ngspice/ngspice.h" 8 #include "bsim3v0def.h" 9 #include "ngspice/ifsim.h" 10 #include "ngspice/sperror.h" 11 #include "ngspice/suffix.h" 12 13 14 int BSIM3v0mParam(int param,IFvalue * value,GENmodel * inMod)15BSIM3v0mParam(int param, IFvalue *value, GENmodel *inMod) 16 { 17 BSIM3v0model *mod = (BSIM3v0model*)inMod; 18 switch(param) 19 { case BSIM3v0_MOD_MOBMOD : 20 mod->BSIM3v0mobMod = value->iValue; 21 mod->BSIM3v0mobModGiven = TRUE; 22 break; 23 case BSIM3v0_MOD_BINUNIT : 24 mod->BSIM3v0binUnit = value->iValue; 25 mod->BSIM3v0binUnitGiven = TRUE; 26 break; 27 case BSIM3v0_MOD_CAPMOD : 28 mod->BSIM3v0capMod = value->iValue; 29 mod->BSIM3v0capModGiven = TRUE; 30 break; 31 case BSIM3v0_MOD_NQSMOD : 32 mod->BSIM3v0nqsMod = value->iValue; 33 mod->BSIM3v0nqsModGiven = TRUE; 34 break; 35 case BSIM3v0_MOD_NOIMOD : 36 mod->BSIM3v0noiMod = value->iValue; 37 mod->BSIM3v0noiModGiven = TRUE; 38 break; 39 case BSIM3v0_MOD_TOX : 40 mod->BSIM3v0tox = value->rValue; 41 mod->BSIM3v0toxGiven = TRUE; 42 break; 43 44 case BSIM3v0_MOD_CDSC : 45 mod->BSIM3v0cdsc = value->rValue; 46 mod->BSIM3v0cdscGiven = TRUE; 47 break; 48 case BSIM3v0_MOD_CDSCB : 49 mod->BSIM3v0cdscb = value->rValue; 50 mod->BSIM3v0cdscbGiven = TRUE; 51 break; 52 53 case BSIM3v0_MOD_CDSCD : 54 mod->BSIM3v0cdscd = value->rValue; 55 mod->BSIM3v0cdscdGiven = TRUE; 56 break; 57 58 case BSIM3v0_MOD_CIT : 59 mod->BSIM3v0cit = value->rValue; 60 mod->BSIM3v0citGiven = TRUE; 61 break; 62 case BSIM3v0_MOD_NFACTOR : 63 mod->BSIM3v0nfactor = value->rValue; 64 mod->BSIM3v0nfactorGiven = TRUE; 65 break; 66 case BSIM3v0_MOD_XJ: 67 mod->BSIM3v0xj = value->rValue; 68 mod->BSIM3v0xjGiven = TRUE; 69 break; 70 case BSIM3v0_MOD_VSAT: 71 mod->BSIM3v0vsat = value->rValue; 72 mod->BSIM3v0vsatGiven = TRUE; 73 break; 74 case BSIM3v0_MOD_A0: 75 mod->BSIM3v0a0 = value->rValue; 76 mod->BSIM3v0a0Given = TRUE; 77 break; 78 79 case BSIM3v0_MOD_AGS: 80 mod->BSIM3v0ags= value->rValue; 81 mod->BSIM3v0agsGiven = TRUE; 82 break; 83 84 case BSIM3v0_MOD_A1: 85 mod->BSIM3v0a1 = value->rValue; 86 mod->BSIM3v0a1Given = TRUE; 87 break; 88 case BSIM3v0_MOD_A2: 89 mod->BSIM3v0a2 = value->rValue; 90 mod->BSIM3v0a2Given = TRUE; 91 break; 92 case BSIM3v0_MOD_AT: 93 mod->BSIM3v0at = value->rValue; 94 mod->BSIM3v0atGiven = TRUE; 95 break; 96 case BSIM3v0_MOD_KETA: 97 mod->BSIM3v0keta = value->rValue; 98 mod->BSIM3v0ketaGiven = TRUE; 99 break; 100 case BSIM3v0_MOD_NSUB: 101 mod->BSIM3v0nsub = value->rValue; 102 mod->BSIM3v0nsubGiven = TRUE; 103 break; 104 case BSIM3v0_MOD_NPEAK: 105 mod->BSIM3v0npeak = value->rValue; 106 mod->BSIM3v0npeakGiven = TRUE; 107 if (mod->BSIM3v0npeak > 1.0e20) 108 mod->BSIM3v0npeak *= 1.0e-6; 109 break; 110 case BSIM3v0_MOD_NGATE: 111 mod->BSIM3v0ngate = value->rValue; 112 mod->BSIM3v0ngateGiven = TRUE; 113 if (mod->BSIM3v0ngate > 1.0e23) 114 mod->BSIM3v0ngate *= 1.0e-6; 115 break; 116 case BSIM3v0_MOD_GAMMA1: 117 mod->BSIM3v0gamma1 = value->rValue; 118 mod->BSIM3v0gamma1Given = TRUE; 119 break; 120 case BSIM3v0_MOD_GAMMA2: 121 mod->BSIM3v0gamma2 = value->rValue; 122 mod->BSIM3v0gamma2Given = TRUE; 123 break; 124 case BSIM3v0_MOD_VBX: 125 mod->BSIM3v0vbx = value->rValue; 126 mod->BSIM3v0vbxGiven = TRUE; 127 break; 128 case BSIM3v0_MOD_VBM: 129 mod->BSIM3v0vbm = value->rValue; 130 mod->BSIM3v0vbmGiven = TRUE; 131 break; 132 case BSIM3v0_MOD_XT: 133 mod->BSIM3v0xt = value->rValue; 134 mod->BSIM3v0xtGiven = TRUE; 135 break; 136 case BSIM3v0_MOD_K1: 137 mod->BSIM3v0k1 = value->rValue; 138 mod->BSIM3v0k1Given = TRUE; 139 break; 140 case BSIM3v0_MOD_KT1: 141 mod->BSIM3v0kt1 = value->rValue; 142 mod->BSIM3v0kt1Given = TRUE; 143 break; 144 case BSIM3v0_MOD_KT1L: 145 mod->BSIM3v0kt1l = value->rValue; 146 mod->BSIM3v0kt1lGiven = TRUE; 147 break; 148 case BSIM3v0_MOD_KT2: 149 mod->BSIM3v0kt2 = value->rValue; 150 mod->BSIM3v0kt2Given = TRUE; 151 break; 152 case BSIM3v0_MOD_K2: 153 mod->BSIM3v0k2 = value->rValue; 154 mod->BSIM3v0k2Given = TRUE; 155 break; 156 case BSIM3v0_MOD_K3: 157 mod->BSIM3v0k3 = value->rValue; 158 mod->BSIM3v0k3Given = TRUE; 159 break; 160 case BSIM3v0_MOD_K3B: 161 mod->BSIM3v0k3b = value->rValue; 162 mod->BSIM3v0k3bGiven = TRUE; 163 break; 164 case BSIM3v0_MOD_NLX: 165 mod->BSIM3v0nlx = value->rValue; 166 mod->BSIM3v0nlxGiven = TRUE; 167 break; 168 case BSIM3v0_MOD_W0: 169 mod->BSIM3v0w0 = value->rValue; 170 mod->BSIM3v0w0Given = TRUE; 171 break; 172 case BSIM3v0_MOD_DVT0: 173 mod->BSIM3v0dvt0 = value->rValue; 174 mod->BSIM3v0dvt0Given = TRUE; 175 break; 176 case BSIM3v0_MOD_DVT1: 177 mod->BSIM3v0dvt1 = value->rValue; 178 mod->BSIM3v0dvt1Given = TRUE; 179 break; 180 case BSIM3v0_MOD_DVT2: 181 mod->BSIM3v0dvt2 = value->rValue; 182 mod->BSIM3v0dvt2Given = TRUE; 183 break; 184 case BSIM3v0_MOD_DVT0W: 185 mod->BSIM3v0dvt0w = value->rValue; 186 mod->BSIM3v0dvt0wGiven = TRUE; 187 break; 188 case BSIM3v0_MOD_DVT1W: 189 mod->BSIM3v0dvt1w = value->rValue; 190 mod->BSIM3v0dvt1wGiven = TRUE; 191 break; 192 case BSIM3v0_MOD_DVT2W: 193 mod->BSIM3v0dvt2w = value->rValue; 194 mod->BSIM3v0dvt2wGiven = TRUE; 195 break; 196 case BSIM3v0_MOD_DROUT: 197 mod->BSIM3v0drout = value->rValue; 198 mod->BSIM3v0droutGiven = TRUE; 199 break; 200 case BSIM3v0_MOD_DSUB: 201 mod->BSIM3v0dsub = value->rValue; 202 mod->BSIM3v0dsubGiven = TRUE; 203 break; 204 case BSIM3v0_MOD_VTH0: 205 mod->BSIM3v0vth0 = value->rValue; 206 mod->BSIM3v0vth0Given = TRUE; 207 break; 208 case BSIM3v0_MOD_UA: 209 mod->BSIM3v0ua = value->rValue; 210 mod->BSIM3v0uaGiven = TRUE; 211 break; 212 case BSIM3v0_MOD_UA1: 213 mod->BSIM3v0ua1 = value->rValue; 214 mod->BSIM3v0ua1Given = TRUE; 215 break; 216 case BSIM3v0_MOD_UB: 217 mod->BSIM3v0ub = value->rValue; 218 mod->BSIM3v0ubGiven = TRUE; 219 break; 220 case BSIM3v0_MOD_UB1: 221 mod->BSIM3v0ub1 = value->rValue; 222 mod->BSIM3v0ub1Given = TRUE; 223 break; 224 case BSIM3v0_MOD_UC: 225 mod->BSIM3v0uc = value->rValue; 226 mod->BSIM3v0ucGiven = TRUE; 227 break; 228 case BSIM3v0_MOD_UC1: 229 mod->BSIM3v0uc1 = value->rValue; 230 mod->BSIM3v0uc1Given = TRUE; 231 break; 232 case BSIM3v0_MOD_U0 : 233 mod->BSIM3v0u0 = value->rValue; 234 mod->BSIM3v0u0Given = TRUE; 235 if (mod->BSIM3v0u0 > 1.0) 236 mod->BSIM3v0u0 *= 1.0e-4; 237 break; 238 case BSIM3v0_MOD_UTE : 239 mod->BSIM3v0ute = value->rValue; 240 mod->BSIM3v0uteGiven = TRUE; 241 break; 242 case BSIM3v0_MOD_VOFF: 243 mod->BSIM3v0voff = value->rValue; 244 mod->BSIM3v0voffGiven = TRUE; 245 break; 246 case BSIM3v0_MOD_DELTA : 247 mod->BSIM3v0delta = value->rValue; 248 mod->BSIM3v0deltaGiven = TRUE; 249 break; 250 case BSIM3v0_MOD_RDSW: 251 mod->BSIM3v0rdsw = value->rValue; 252 mod->BSIM3v0rdswGiven = TRUE; 253 break; 254 case BSIM3v0_MOD_PRWG: 255 mod->BSIM3v0prwg = value->rValue; 256 mod->BSIM3v0prwgGiven = TRUE; 257 break; 258 case BSIM3v0_MOD_PRWB: 259 mod->BSIM3v0prwb = value->rValue; 260 mod->BSIM3v0prwbGiven = TRUE; 261 break; 262 case BSIM3v0_MOD_PRT: 263 mod->BSIM3v0prt = value->rValue; 264 mod->BSIM3v0prtGiven = TRUE; 265 break; 266 case BSIM3v0_MOD_ETA0: 267 mod->BSIM3v0eta0 = value->rValue; 268 mod->BSIM3v0eta0Given = TRUE; 269 break; 270 case BSIM3v0_MOD_ETAB: 271 mod->BSIM3v0etab = value->rValue; 272 mod->BSIM3v0etabGiven = TRUE; 273 break; 274 case BSIM3v0_MOD_PCLM: 275 mod->BSIM3v0pclm = value->rValue; 276 mod->BSIM3v0pclmGiven = TRUE; 277 break; 278 case BSIM3v0_MOD_PDIBL1: 279 mod->BSIM3v0pdibl1 = value->rValue; 280 mod->BSIM3v0pdibl1Given = TRUE; 281 break; 282 case BSIM3v0_MOD_PDIBL2: 283 mod->BSIM3v0pdibl2 = value->rValue; 284 mod->BSIM3v0pdibl2Given = TRUE; 285 break; 286 case BSIM3v0_MOD_PDIBLB: 287 mod->BSIM3v0pdiblb = value->rValue; 288 mod->BSIM3v0pdiblbGiven = TRUE; 289 break; 290 case BSIM3v0_MOD_PSCBE1: 291 mod->BSIM3v0pscbe1 = value->rValue; 292 mod->BSIM3v0pscbe1Given = TRUE; 293 break; 294 case BSIM3v0_MOD_PSCBE2: 295 mod->BSIM3v0pscbe2 = value->rValue; 296 mod->BSIM3v0pscbe2Given = TRUE; 297 break; 298 case BSIM3v0_MOD_PVAG: 299 mod->BSIM3v0pvag = value->rValue; 300 mod->BSIM3v0pvagGiven = TRUE; 301 break; 302 case BSIM3v0_MOD_WR : 303 mod->BSIM3v0wr = value->rValue; 304 mod->BSIM3v0wrGiven = TRUE; 305 break; 306 case BSIM3v0_MOD_DWG : 307 mod->BSIM3v0dwg = value->rValue; 308 mod->BSIM3v0dwgGiven = TRUE; 309 break; 310 case BSIM3v0_MOD_DWB : 311 mod->BSIM3v0dwb = value->rValue; 312 mod->BSIM3v0dwbGiven = TRUE; 313 break; 314 case BSIM3v0_MOD_B0 : 315 mod->BSIM3v0b0 = value->rValue; 316 mod->BSIM3v0b0Given = TRUE; 317 break; 318 case BSIM3v0_MOD_B1 : 319 mod->BSIM3v0b1 = value->rValue; 320 mod->BSIM3v0b1Given = TRUE; 321 break; 322 case BSIM3v0_MOD_ALPHA0 : 323 mod->BSIM3v0alpha0 = value->rValue; 324 mod->BSIM3v0alpha0Given = TRUE; 325 break; 326 case BSIM3v0_MOD_BETA0 : 327 mod->BSIM3v0beta0 = value->rValue; 328 mod->BSIM3v0beta0Given = TRUE; 329 break; 330 331 case BSIM3v0_MOD_ELM : 332 mod->BSIM3v0elm = value->rValue; 333 mod->BSIM3v0elmGiven = TRUE; 334 break; 335 case BSIM3v0_MOD_CGSL : 336 mod->BSIM3v0cgsl = value->rValue; 337 mod->BSIM3v0cgslGiven = TRUE; 338 break; 339 case BSIM3v0_MOD_CGDL : 340 mod->BSIM3v0cgdl = value->rValue; 341 mod->BSIM3v0cgdlGiven = TRUE; 342 break; 343 case BSIM3v0_MOD_CKAPPA : 344 mod->BSIM3v0ckappa = value->rValue; 345 mod->BSIM3v0ckappaGiven = TRUE; 346 break; 347 case BSIM3v0_MOD_CF : 348 mod->BSIM3v0cf = value->rValue; 349 mod->BSIM3v0cfGiven = TRUE; 350 break; 351 case BSIM3v0_MOD_CLC : 352 mod->BSIM3v0clc = value->rValue; 353 mod->BSIM3v0clcGiven = TRUE; 354 break; 355 case BSIM3v0_MOD_CLE : 356 mod->BSIM3v0cle = value->rValue; 357 mod->BSIM3v0cleGiven = TRUE; 358 break; 359 case BSIM3v0_MOD_DWC : 360 mod->BSIM3v0dwc = value->rValue; 361 mod->BSIM3v0dwcGiven = TRUE; 362 break; 363 case BSIM3v0_MOD_DLC : 364 mod->BSIM3v0dlc = value->rValue; 365 mod->BSIM3v0dlcGiven = TRUE; 366 break; 367 368 /* Length dependence */ 369 case BSIM3v0_MOD_LCDSC : 370 mod->BSIM3v0lcdsc = value->rValue; 371 mod->BSIM3v0lcdscGiven = TRUE; 372 break; 373 374 375 case BSIM3v0_MOD_LCDSCB : 376 mod->BSIM3v0lcdscb = value->rValue; 377 mod->BSIM3v0lcdscbGiven = TRUE; 378 break; 379 case BSIM3v0_MOD_LCDSCD : 380 mod->BSIM3v0lcdscd = value->rValue; 381 mod->BSIM3v0lcdscdGiven = TRUE; 382 break; 383 case BSIM3v0_MOD_LCIT : 384 mod->BSIM3v0lcit = value->rValue; 385 mod->BSIM3v0lcitGiven = TRUE; 386 break; 387 case BSIM3v0_MOD_LNFACTOR : 388 mod->BSIM3v0lnfactor = value->rValue; 389 mod->BSIM3v0lnfactorGiven = TRUE; 390 break; 391 case BSIM3v0_MOD_LXJ: 392 mod->BSIM3v0lxj = value->rValue; 393 mod->BSIM3v0lxjGiven = TRUE; 394 break; 395 case BSIM3v0_MOD_LVSAT: 396 mod->BSIM3v0lvsat = value->rValue; 397 mod->BSIM3v0lvsatGiven = TRUE; 398 break; 399 400 401 case BSIM3v0_MOD_LA0: 402 mod->BSIM3v0la0 = value->rValue; 403 mod->BSIM3v0la0Given = TRUE; 404 break; 405 case BSIM3v0_MOD_LAGS: 406 mod->BSIM3v0lags = value->rValue; 407 mod->BSIM3v0lagsGiven = TRUE; 408 break; 409 case BSIM3v0_MOD_LA1: 410 mod->BSIM3v0la1 = value->rValue; 411 mod->BSIM3v0la1Given = TRUE; 412 break; 413 case BSIM3v0_MOD_LA2: 414 mod->BSIM3v0la2 = value->rValue; 415 mod->BSIM3v0la2Given = TRUE; 416 break; 417 case BSIM3v0_MOD_LAT: 418 mod->BSIM3v0lat = value->rValue; 419 mod->BSIM3v0latGiven = TRUE; 420 break; 421 case BSIM3v0_MOD_LKETA: 422 mod->BSIM3v0lketa = value->rValue; 423 mod->BSIM3v0lketaGiven = TRUE; 424 break; 425 case BSIM3v0_MOD_LNSUB: 426 mod->BSIM3v0lnsub = value->rValue; 427 mod->BSIM3v0lnsubGiven = TRUE; 428 break; 429 case BSIM3v0_MOD_LNPEAK: 430 mod->BSIM3v0lnpeak = value->rValue; 431 mod->BSIM3v0lnpeakGiven = TRUE; 432 if (mod->BSIM3v0lnpeak > 1.0e20) 433 mod->BSIM3v0lnpeak *= 1.0e-6; 434 break; 435 case BSIM3v0_MOD_LNGATE: 436 mod->BSIM3v0lngate = value->rValue; 437 mod->BSIM3v0lngateGiven = TRUE; 438 if (mod->BSIM3v0lngate > 1.0e23) 439 mod->BSIM3v0lngate *= 1.0e-6; 440 break; 441 case BSIM3v0_MOD_LGAMMA1: 442 mod->BSIM3v0lgamma1 = value->rValue; 443 mod->BSIM3v0lgamma1Given = TRUE; 444 break; 445 case BSIM3v0_MOD_LGAMMA2: 446 mod->BSIM3v0lgamma2 = value->rValue; 447 mod->BSIM3v0lgamma2Given = TRUE; 448 break; 449 case BSIM3v0_MOD_LVBX: 450 mod->BSIM3v0lvbx = value->rValue; 451 mod->BSIM3v0lvbxGiven = TRUE; 452 break; 453 case BSIM3v0_MOD_LVBM: 454 mod->BSIM3v0lvbm = value->rValue; 455 mod->BSIM3v0lvbmGiven = TRUE; 456 break; 457 case BSIM3v0_MOD_LXT: 458 mod->BSIM3v0lxt = value->rValue; 459 mod->BSIM3v0lxtGiven = TRUE; 460 break; 461 case BSIM3v0_MOD_LK1: 462 mod->BSIM3v0lk1 = value->rValue; 463 mod->BSIM3v0lk1Given = TRUE; 464 break; 465 case BSIM3v0_MOD_LKT1: 466 mod->BSIM3v0lkt1 = value->rValue; 467 mod->BSIM3v0lkt1Given = TRUE; 468 break; 469 case BSIM3v0_MOD_LKT1L: 470 mod->BSIM3v0lkt1l = value->rValue; 471 mod->BSIM3v0lkt1lGiven = TRUE; 472 break; 473 case BSIM3v0_MOD_LKT2: 474 mod->BSIM3v0lkt2 = value->rValue; 475 mod->BSIM3v0lkt2Given = TRUE; 476 break; 477 case BSIM3v0_MOD_LK2: 478 mod->BSIM3v0lk2 = value->rValue; 479 mod->BSIM3v0lk2Given = TRUE; 480 break; 481 case BSIM3v0_MOD_LK3: 482 mod->BSIM3v0lk3 = value->rValue; 483 mod->BSIM3v0lk3Given = TRUE; 484 break; 485 case BSIM3v0_MOD_LK3B: 486 mod->BSIM3v0lk3b = value->rValue; 487 mod->BSIM3v0lk3bGiven = TRUE; 488 break; 489 case BSIM3v0_MOD_LNLX: 490 mod->BSIM3v0lnlx = value->rValue; 491 mod->BSIM3v0lnlxGiven = TRUE; 492 break; 493 case BSIM3v0_MOD_LW0: 494 mod->BSIM3v0lw0 = value->rValue; 495 mod->BSIM3v0lw0Given = TRUE; 496 break; 497 case BSIM3v0_MOD_LDVT0: 498 mod->BSIM3v0ldvt0 = value->rValue; 499 mod->BSIM3v0ldvt0Given = TRUE; 500 break; 501 case BSIM3v0_MOD_LDVT1: 502 mod->BSIM3v0ldvt1 = value->rValue; 503 mod->BSIM3v0ldvt1Given = TRUE; 504 break; 505 case BSIM3v0_MOD_LDVT2: 506 mod->BSIM3v0ldvt2 = value->rValue; 507 mod->BSIM3v0ldvt2Given = TRUE; 508 break; 509 case BSIM3v0_MOD_LDVT0W: 510 mod->BSIM3v0ldvt0w = value->rValue; 511 mod->BSIM3v0ldvt0Given = TRUE; 512 break; 513 case BSIM3v0_MOD_LDVT1W: 514 mod->BSIM3v0ldvt1 = value->rValue; 515 mod->BSIM3v0ldvt1wGiven = TRUE; 516 break; 517 case BSIM3v0_MOD_LDVT2W: 518 mod->BSIM3v0ldvt2 = value->rValue; 519 mod->BSIM3v0ldvt2wGiven = TRUE; 520 break; 521 case BSIM3v0_MOD_LDROUT: 522 mod->BSIM3v0ldrout = value->rValue; 523 mod->BSIM3v0ldroutGiven = TRUE; 524 break; 525 case BSIM3v0_MOD_LDSUB: 526 mod->BSIM3v0ldsub = value->rValue; 527 mod->BSIM3v0ldsubGiven = TRUE; 528 break; 529 case BSIM3v0_MOD_LVTH0: 530 mod->BSIM3v0lvth0 = value->rValue; 531 mod->BSIM3v0lvth0Given = TRUE; 532 break; 533 case BSIM3v0_MOD_LUA: 534 mod->BSIM3v0lua = value->rValue; 535 mod->BSIM3v0luaGiven = TRUE; 536 break; 537 case BSIM3v0_MOD_LUA1: 538 mod->BSIM3v0lua1 = value->rValue; 539 mod->BSIM3v0lua1Given = TRUE; 540 break; 541 case BSIM3v0_MOD_LUB: 542 mod->BSIM3v0lub = value->rValue; 543 mod->BSIM3v0lubGiven = TRUE; 544 break; 545 case BSIM3v0_MOD_LUB1: 546 mod->BSIM3v0lub1 = value->rValue; 547 mod->BSIM3v0lub1Given = TRUE; 548 break; 549 case BSIM3v0_MOD_LUC: 550 mod->BSIM3v0luc = value->rValue; 551 mod->BSIM3v0lucGiven = TRUE; 552 break; 553 case BSIM3v0_MOD_LUC1: 554 mod->BSIM3v0luc1 = value->rValue; 555 mod->BSIM3v0luc1Given = TRUE; 556 break; 557 case BSIM3v0_MOD_LU0 : 558 mod->BSIM3v0lu0 = value->rValue; 559 mod->BSIM3v0lu0Given = TRUE; 560 if (mod->BSIM3v0lu0 > 1.0) 561 mod->BSIM3v0lu0 *= 1.0e-4; 562 break; 563 case BSIM3v0_MOD_LUTE : 564 mod->BSIM3v0lute = value->rValue; 565 mod->BSIM3v0luteGiven = TRUE; 566 break; 567 case BSIM3v0_MOD_LVOFF: 568 mod->BSIM3v0lvoff = value->rValue; 569 mod->BSIM3v0lvoffGiven = TRUE; 570 break; 571 case BSIM3v0_MOD_LDELTA : 572 mod->BSIM3v0ldelta = value->rValue; 573 mod->BSIM3v0ldeltaGiven = TRUE; 574 break; 575 case BSIM3v0_MOD_LRDSW: 576 mod->BSIM3v0lrdsw = value->rValue; 577 mod->BSIM3v0lrdswGiven = TRUE; 578 break; 579 case BSIM3v0_MOD_LPRWB: 580 mod->BSIM3v0lprwb = value->rValue; 581 mod->BSIM3v0lprwbGiven = TRUE; 582 break; 583 case BSIM3v0_MOD_LPRWG: 584 mod->BSIM3v0lprwg = value->rValue; 585 mod->BSIM3v0lprwgGiven = TRUE; 586 break; 587 case BSIM3v0_MOD_LPRT: 588 mod->BSIM3v0lprt = value->rValue; 589 mod->BSIM3v0lprtGiven = TRUE; 590 break; 591 case BSIM3v0_MOD_LETA0: 592 mod->BSIM3v0leta0 = value->rValue; 593 mod->BSIM3v0leta0Given = TRUE; 594 break; 595 case BSIM3v0_MOD_LETAB: 596 mod->BSIM3v0letab = value->rValue; 597 mod->BSIM3v0letabGiven = TRUE; 598 break; 599 case BSIM3v0_MOD_LPCLM: 600 mod->BSIM3v0lpclm = value->rValue; 601 mod->BSIM3v0lpclmGiven = TRUE; 602 break; 603 case BSIM3v0_MOD_LPDIBL1: 604 mod->BSIM3v0lpdibl1 = value->rValue; 605 mod->BSIM3v0lpdibl1Given = TRUE; 606 break; 607 case BSIM3v0_MOD_LPDIBL2: 608 mod->BSIM3v0lpdibl2 = value->rValue; 609 mod->BSIM3v0lpdibl2Given = TRUE; 610 break; 611 case BSIM3v0_MOD_LPDIBLB: 612 mod->BSIM3v0lpdiblb = value->rValue; 613 mod->BSIM3v0lpdiblbGiven = TRUE; 614 break; 615 case BSIM3v0_MOD_LPSCBE1: 616 mod->BSIM3v0lpscbe1 = value->rValue; 617 mod->BSIM3v0lpscbe1Given = TRUE; 618 break; 619 case BSIM3v0_MOD_LPSCBE2: 620 mod->BSIM3v0lpscbe2 = value->rValue; 621 mod->BSIM3v0lpscbe2Given = TRUE; 622 break; 623 case BSIM3v0_MOD_LPVAG: 624 mod->BSIM3v0lpvag = value->rValue; 625 mod->BSIM3v0lpvagGiven = TRUE; 626 break; 627 case BSIM3v0_MOD_LWR : 628 mod->BSIM3v0lwr = value->rValue; 629 mod->BSIM3v0lwrGiven = TRUE; 630 break; 631 case BSIM3v0_MOD_LDWG : 632 mod->BSIM3v0ldwg = value->rValue; 633 mod->BSIM3v0ldwgGiven = TRUE; 634 break; 635 case BSIM3v0_MOD_LDWB : 636 mod->BSIM3v0ldwb = value->rValue; 637 mod->BSIM3v0ldwbGiven = TRUE; 638 break; 639 case BSIM3v0_MOD_LB0 : 640 mod->BSIM3v0lb0 = value->rValue; 641 mod->BSIM3v0lb0Given = TRUE; 642 break; 643 case BSIM3v0_MOD_LB1 : 644 mod->BSIM3v0lb1 = value->rValue; 645 mod->BSIM3v0lb1Given = TRUE; 646 break; 647 case BSIM3v0_MOD_LALPHA0 : 648 mod->BSIM3v0lalpha0 = value->rValue; 649 mod->BSIM3v0lalpha0Given = TRUE; 650 break; 651 case BSIM3v0_MOD_LBETA0 : 652 mod->BSIM3v0lbeta0 = value->rValue; 653 mod->BSIM3v0lbeta0Given = TRUE; 654 break; 655 656 case BSIM3v0_MOD_LELM : 657 mod->BSIM3v0lelm = value->rValue; 658 mod->BSIM3v0lelmGiven = TRUE; 659 break; 660 case BSIM3v0_MOD_LCGSL : 661 mod->BSIM3v0lcgsl = value->rValue; 662 mod->BSIM3v0lcgslGiven = TRUE; 663 break; 664 case BSIM3v0_MOD_LCGDL : 665 mod->BSIM3v0lcgdl = value->rValue; 666 mod->BSIM3v0lcgdlGiven = TRUE; 667 break; 668 case BSIM3v0_MOD_LCKAPPA : 669 mod->BSIM3v0lckappa = value->rValue; 670 mod->BSIM3v0lckappaGiven = TRUE; 671 break; 672 case BSIM3v0_MOD_LCF : 673 mod->BSIM3v0lcf = value->rValue; 674 mod->BSIM3v0lcfGiven = TRUE; 675 break; 676 case BSIM3v0_MOD_LCLC : 677 mod->BSIM3v0lclc = value->rValue; 678 mod->BSIM3v0lclcGiven = TRUE; 679 break; 680 case BSIM3v0_MOD_LCLE : 681 mod->BSIM3v0lcle = value->rValue; 682 mod->BSIM3v0lcleGiven = TRUE; 683 break; 684 685 /* Width dependence */ 686 case BSIM3v0_MOD_WCDSC : 687 mod->BSIM3v0wcdsc = value->rValue; 688 mod->BSIM3v0wcdscGiven = TRUE; 689 break; 690 691 692 case BSIM3v0_MOD_WCDSCB : 693 mod->BSIM3v0wcdscb = value->rValue; 694 mod->BSIM3v0wcdscbGiven = TRUE; 695 break; 696 case BSIM3v0_MOD_WCDSCD : 697 mod->BSIM3v0wcdscd = value->rValue; 698 mod->BSIM3v0wcdscdGiven = TRUE; 699 break; 700 case BSIM3v0_MOD_WCIT : 701 mod->BSIM3v0wcit = value->rValue; 702 mod->BSIM3v0wcitGiven = TRUE; 703 break; 704 case BSIM3v0_MOD_WNFACTOR : 705 mod->BSIM3v0wnfactor = value->rValue; 706 mod->BSIM3v0wnfactorGiven = TRUE; 707 break; 708 case BSIM3v0_MOD_WXJ: 709 mod->BSIM3v0wxj = value->rValue; 710 mod->BSIM3v0wxjGiven = TRUE; 711 break; 712 case BSIM3v0_MOD_WVSAT: 713 mod->BSIM3v0wvsat = value->rValue; 714 mod->BSIM3v0wvsatGiven = TRUE; 715 break; 716 717 718 case BSIM3v0_MOD_WA0: 719 mod->BSIM3v0wa0 = value->rValue; 720 mod->BSIM3v0wa0Given = TRUE; 721 break; 722 case BSIM3v0_MOD_WAGS: 723 mod->BSIM3v0wags = value->rValue; 724 mod->BSIM3v0wagsGiven = TRUE; 725 break; 726 case BSIM3v0_MOD_WA1: 727 mod->BSIM3v0wa1 = value->rValue; 728 mod->BSIM3v0wa1Given = TRUE; 729 break; 730 case BSIM3v0_MOD_WA2: 731 mod->BSIM3v0wa2 = value->rValue; 732 mod->BSIM3v0wa2Given = TRUE; 733 break; 734 case BSIM3v0_MOD_WAT: 735 mod->BSIM3v0wat = value->rValue; 736 mod->BSIM3v0watGiven = TRUE; 737 break; 738 case BSIM3v0_MOD_WKETA: 739 mod->BSIM3v0wketa = value->rValue; 740 mod->BSIM3v0wketaGiven = TRUE; 741 break; 742 case BSIM3v0_MOD_WNSUB: 743 mod->BSIM3v0wnsub = value->rValue; 744 mod->BSIM3v0wnsubGiven = TRUE; 745 break; 746 case BSIM3v0_MOD_WNPEAK: 747 mod->BSIM3v0wnpeak = value->rValue; 748 mod->BSIM3v0wnpeakGiven = TRUE; 749 if (mod->BSIM3v0wnpeak > 1.0e20) 750 mod->BSIM3v0wnpeak *= 1.0e-6; 751 break; 752 case BSIM3v0_MOD_WNGATE: 753 mod->BSIM3v0wngate = value->rValue; 754 mod->BSIM3v0wngateGiven = TRUE; 755 if (mod->BSIM3v0wngate > 1.0e23) 756 mod->BSIM3v0wngate *= 1.0e-6; 757 break; 758 case BSIM3v0_MOD_WGAMMA1: 759 mod->BSIM3v0wgamma1 = value->rValue; 760 mod->BSIM3v0wgamma1Given = TRUE; 761 break; 762 case BSIM3v0_MOD_WGAMMA2: 763 mod->BSIM3v0wgamma2 = value->rValue; 764 mod->BSIM3v0wgamma2Given = TRUE; 765 break; 766 case BSIM3v0_MOD_WVBX: 767 mod->BSIM3v0wvbx = value->rValue; 768 mod->BSIM3v0wvbxGiven = TRUE; 769 break; 770 case BSIM3v0_MOD_WVBM: 771 mod->BSIM3v0wvbm = value->rValue; 772 mod->BSIM3v0wvbmGiven = TRUE; 773 break; 774 case BSIM3v0_MOD_WXT: 775 mod->BSIM3v0wxt = value->rValue; 776 mod->BSIM3v0wxtGiven = TRUE; 777 break; 778 case BSIM3v0_MOD_WK1: 779 mod->BSIM3v0wk1 = value->rValue; 780 mod->BSIM3v0wk1Given = TRUE; 781 break; 782 case BSIM3v0_MOD_WKT1: 783 mod->BSIM3v0wkt1 = value->rValue; 784 mod->BSIM3v0wkt1Given = TRUE; 785 break; 786 case BSIM3v0_MOD_WKT1L: 787 mod->BSIM3v0wkt1l = value->rValue; 788 mod->BSIM3v0wkt1lGiven = TRUE; 789 break; 790 case BSIM3v0_MOD_WKT2: 791 mod->BSIM3v0wkt2 = value->rValue; 792 mod->BSIM3v0wkt2Given = TRUE; 793 break; 794 case BSIM3v0_MOD_WK2: 795 mod->BSIM3v0wk2 = value->rValue; 796 mod->BSIM3v0wk2Given = TRUE; 797 break; 798 case BSIM3v0_MOD_WK3: 799 mod->BSIM3v0wk3 = value->rValue; 800 mod->BSIM3v0wk3Given = TRUE; 801 break; 802 case BSIM3v0_MOD_WK3B: 803 mod->BSIM3v0wk3b = value->rValue; 804 mod->BSIM3v0wk3bGiven = TRUE; 805 break; 806 case BSIM3v0_MOD_WNLX: 807 mod->BSIM3v0wnlx = value->rValue; 808 mod->BSIM3v0wnlxGiven = TRUE; 809 break; 810 case BSIM3v0_MOD_WW0: 811 mod->BSIM3v0ww0 = value->rValue; 812 mod->BSIM3v0ww0Given = TRUE; 813 break; 814 case BSIM3v0_MOD_WDVT0: 815 mod->BSIM3v0wdvt0 = value->rValue; 816 mod->BSIM3v0wdvt0Given = TRUE; 817 break; 818 case BSIM3v0_MOD_WDVT1: 819 mod->BSIM3v0wdvt1 = value->rValue; 820 mod->BSIM3v0wdvt1Given = TRUE; 821 break; 822 case BSIM3v0_MOD_WDVT2: 823 mod->BSIM3v0wdvt2 = value->rValue; 824 mod->BSIM3v0wdvt2Given = TRUE; 825 break; 826 case BSIM3v0_MOD_WDVT0W: 827 mod->BSIM3v0wdvt0w = value->rValue; 828 mod->BSIM3v0wdvt0wGiven = TRUE; 829 break; 830 case BSIM3v0_MOD_WDVT1W: 831 mod->BSIM3v0wdvt1w = value->rValue; 832 mod->BSIM3v0wdvt1wGiven = TRUE; 833 break; 834 case BSIM3v0_MOD_WDVT2W: 835 mod->BSIM3v0wdvt2w = value->rValue; 836 mod->BSIM3v0wdvt2wGiven = TRUE; 837 break; 838 case BSIM3v0_MOD_WDROUT: 839 mod->BSIM3v0wdrout = value->rValue; 840 mod->BSIM3v0wdroutGiven = TRUE; 841 break; 842 case BSIM3v0_MOD_WDSUB: 843 mod->BSIM3v0wdsub = value->rValue; 844 mod->BSIM3v0wdsubGiven = TRUE; 845 break; 846 case BSIM3v0_MOD_WVTH0: 847 mod->BSIM3v0wvth0 = value->rValue; 848 mod->BSIM3v0wvth0Given = TRUE; 849 break; 850 case BSIM3v0_MOD_WUA: 851 mod->BSIM3v0wua = value->rValue; 852 mod->BSIM3v0wuaGiven = TRUE; 853 break; 854 case BSIM3v0_MOD_WUA1: 855 mod->BSIM3v0wua1 = value->rValue; 856 mod->BSIM3v0wua1Given = TRUE; 857 break; 858 case BSIM3v0_MOD_WUB: 859 mod->BSIM3v0wub = value->rValue; 860 mod->BSIM3v0wubGiven = TRUE; 861 break; 862 case BSIM3v0_MOD_WUB1: 863 mod->BSIM3v0wub1 = value->rValue; 864 mod->BSIM3v0wub1Given = TRUE; 865 break; 866 case BSIM3v0_MOD_WUC: 867 mod->BSIM3v0wuc = value->rValue; 868 mod->BSIM3v0wucGiven = TRUE; 869 break; 870 case BSIM3v0_MOD_WUC1: 871 mod->BSIM3v0wuc1 = value->rValue; 872 mod->BSIM3v0wuc1Given = TRUE; 873 break; 874 case BSIM3v0_MOD_WU0 : 875 mod->BSIM3v0wu0 = value->rValue; 876 mod->BSIM3v0wu0Given = TRUE; 877 if (mod->BSIM3v0wu0 > 1.0) 878 mod->BSIM3v0wu0 *= 1.0e-4; 879 break; 880 case BSIM3v0_MOD_WUTE : 881 mod->BSIM3v0wute = value->rValue; 882 mod->BSIM3v0wuteGiven = TRUE; 883 break; 884 case BSIM3v0_MOD_WVOFF: 885 mod->BSIM3v0wvoff = value->rValue; 886 mod->BSIM3v0wvoffGiven = TRUE; 887 break; 888 case BSIM3v0_MOD_WDELTA : 889 mod->BSIM3v0wdelta = value->rValue; 890 mod->BSIM3v0wdeltaGiven = TRUE; 891 break; 892 case BSIM3v0_MOD_WRDSW: 893 mod->BSIM3v0wrdsw = value->rValue; 894 mod->BSIM3v0wrdswGiven = TRUE; 895 break; 896 case BSIM3v0_MOD_WPRWB: 897 mod->BSIM3v0wprwb = value->rValue; 898 mod->BSIM3v0wprwbGiven = TRUE; 899 break; 900 case BSIM3v0_MOD_WPRWG: 901 mod->BSIM3v0wprwg = value->rValue; 902 mod->BSIM3v0wprwgGiven = TRUE; 903 break; 904 case BSIM3v0_MOD_WPRT: 905 mod->BSIM3v0wprt = value->rValue; 906 mod->BSIM3v0wprtGiven = TRUE; 907 break; 908 case BSIM3v0_MOD_WETA0: 909 mod->BSIM3v0weta0 = value->rValue; 910 mod->BSIM3v0weta0Given = TRUE; 911 break; 912 case BSIM3v0_MOD_WETAB: 913 mod->BSIM3v0wetab = value->rValue; 914 mod->BSIM3v0wetabGiven = TRUE; 915 break; 916 case BSIM3v0_MOD_WPCLM: 917 mod->BSIM3v0wpclm = value->rValue; 918 mod->BSIM3v0wpclmGiven = TRUE; 919 break; 920 case BSIM3v0_MOD_WPDIBL1: 921 mod->BSIM3v0wpdibl1 = value->rValue; 922 mod->BSIM3v0wpdibl1Given = TRUE; 923 break; 924 case BSIM3v0_MOD_WPDIBL2: 925 mod->BSIM3v0wpdibl2 = value->rValue; 926 mod->BSIM3v0wpdibl2Given = TRUE; 927 break; 928 case BSIM3v0_MOD_WPDIBLB: 929 mod->BSIM3v0wpdiblb = value->rValue; 930 mod->BSIM3v0wpdiblbGiven = TRUE; 931 break; 932 case BSIM3v0_MOD_WPSCBE1: 933 mod->BSIM3v0wpscbe1 = value->rValue; 934 mod->BSIM3v0wpscbe1Given = TRUE; 935 break; 936 case BSIM3v0_MOD_WPSCBE2: 937 mod->BSIM3v0wpscbe2 = value->rValue; 938 mod->BSIM3v0wpscbe2Given = TRUE; 939 break; 940 case BSIM3v0_MOD_WPVAG: 941 mod->BSIM3v0wpvag = value->rValue; 942 mod->BSIM3v0wpvagGiven = TRUE; 943 break; 944 case BSIM3v0_MOD_WWR : 945 mod->BSIM3v0wwr = value->rValue; 946 mod->BSIM3v0wwrGiven = TRUE; 947 break; 948 case BSIM3v0_MOD_WDWG : 949 mod->BSIM3v0wdwg = value->rValue; 950 mod->BSIM3v0wdwgGiven = TRUE; 951 break; 952 case BSIM3v0_MOD_WDWB : 953 mod->BSIM3v0wdwb = value->rValue; 954 mod->BSIM3v0wdwbGiven = TRUE; 955 break; 956 case BSIM3v0_MOD_WB0 : 957 mod->BSIM3v0wb0 = value->rValue; 958 mod->BSIM3v0wb0Given = TRUE; 959 break; 960 case BSIM3v0_MOD_WB1 : 961 mod->BSIM3v0wb1 = value->rValue; 962 mod->BSIM3v0wb1Given = TRUE; 963 break; 964 case BSIM3v0_MOD_WALPHA0 : 965 mod->BSIM3v0walpha0 = value->rValue; 966 mod->BSIM3v0walpha0Given = TRUE; 967 break; 968 case BSIM3v0_MOD_WBETA0 : 969 mod->BSIM3v0wbeta0 = value->rValue; 970 mod->BSIM3v0wbeta0Given = TRUE; 971 break; 972 973 case BSIM3v0_MOD_WELM : 974 mod->BSIM3v0welm = value->rValue; 975 mod->BSIM3v0welmGiven = TRUE; 976 break; 977 case BSIM3v0_MOD_WCGSL : 978 mod->BSIM3v0wcgsl = value->rValue; 979 mod->BSIM3v0wcgslGiven = TRUE; 980 break; 981 case BSIM3v0_MOD_WCGDL : 982 mod->BSIM3v0wcgdl = value->rValue; 983 mod->BSIM3v0wcgdlGiven = TRUE; 984 break; 985 case BSIM3v0_MOD_WCKAPPA : 986 mod->BSIM3v0wckappa = value->rValue; 987 mod->BSIM3v0wckappaGiven = TRUE; 988 break; 989 case BSIM3v0_MOD_WCF : 990 mod->BSIM3v0wcf = value->rValue; 991 mod->BSIM3v0wcfGiven = TRUE; 992 break; 993 case BSIM3v0_MOD_WCLC : 994 mod->BSIM3v0wclc = value->rValue; 995 mod->BSIM3v0wclcGiven = TRUE; 996 break; 997 case BSIM3v0_MOD_WCLE : 998 mod->BSIM3v0wcle = value->rValue; 999 mod->BSIM3v0wcleGiven = TRUE; 1000 break; 1001 1002 /* Cross-term dependence */ 1003 case BSIM3v0_MOD_PCDSC : 1004 mod->BSIM3v0pcdsc = value->rValue; 1005 mod->BSIM3v0pcdscGiven = TRUE; 1006 break; 1007 1008 1009 case BSIM3v0_MOD_PCDSCB : 1010 mod->BSIM3v0pcdscb = value->rValue; 1011 mod->BSIM3v0pcdscbGiven = TRUE; 1012 break; 1013 case BSIM3v0_MOD_PCDSCD : 1014 mod->BSIM3v0pcdscd = value->rValue; 1015 mod->BSIM3v0pcdscdGiven = TRUE; 1016 break; 1017 case BSIM3v0_MOD_PCIT : 1018 mod->BSIM3v0pcit = value->rValue; 1019 mod->BSIM3v0pcitGiven = TRUE; 1020 break; 1021 case BSIM3v0_MOD_PNFACTOR : 1022 mod->BSIM3v0pnfactor = value->rValue; 1023 mod->BSIM3v0pnfactorGiven = TRUE; 1024 break; 1025 case BSIM3v0_MOD_PXJ: 1026 mod->BSIM3v0pxj = value->rValue; 1027 mod->BSIM3v0pxjGiven = TRUE; 1028 break; 1029 case BSIM3v0_MOD_PVSAT: 1030 mod->BSIM3v0pvsat = value->rValue; 1031 mod->BSIM3v0pvsatGiven = TRUE; 1032 break; 1033 1034 1035 case BSIM3v0_MOD_PA0: 1036 mod->BSIM3v0pa0 = value->rValue; 1037 mod->BSIM3v0pa0Given = TRUE; 1038 break; 1039 case BSIM3v0_MOD_PAGS: 1040 mod->BSIM3v0pags = value->rValue; 1041 mod->BSIM3v0pagsGiven = TRUE; 1042 break; 1043 case BSIM3v0_MOD_PA1: 1044 mod->BSIM3v0pa1 = value->rValue; 1045 mod->BSIM3v0pa1Given = TRUE; 1046 break; 1047 case BSIM3v0_MOD_PA2: 1048 mod->BSIM3v0pa2 = value->rValue; 1049 mod->BSIM3v0pa2Given = TRUE; 1050 break; 1051 case BSIM3v0_MOD_PAT: 1052 mod->BSIM3v0pat = value->rValue; 1053 mod->BSIM3v0patGiven = TRUE; 1054 break; 1055 case BSIM3v0_MOD_PKETA: 1056 mod->BSIM3v0pketa = value->rValue; 1057 mod->BSIM3v0pketaGiven = TRUE; 1058 break; 1059 case BSIM3v0_MOD_PNSUB: 1060 mod->BSIM3v0pnsub = value->rValue; 1061 mod->BSIM3v0pnsubGiven = TRUE; 1062 break; 1063 case BSIM3v0_MOD_PNPEAK: 1064 mod->BSIM3v0pnpeak = value->rValue; 1065 mod->BSIM3v0pnpeakGiven = TRUE; 1066 if (mod->BSIM3v0pnpeak > 1.0e20) 1067 mod->BSIM3v0pnpeak *= 1.0e-6; 1068 break; 1069 case BSIM3v0_MOD_PNGATE: 1070 mod->BSIM3v0pngate = value->rValue; 1071 mod->BSIM3v0pngateGiven = TRUE; 1072 if (mod->BSIM3v0pngate > 1.0e23) 1073 mod->BSIM3v0pngate *= 1.0e-6; 1074 break; 1075 case BSIM3v0_MOD_PGAMMA1: 1076 mod->BSIM3v0pgamma1 = value->rValue; 1077 mod->BSIM3v0pgamma1Given = TRUE; 1078 break; 1079 case BSIM3v0_MOD_PGAMMA2: 1080 mod->BSIM3v0pgamma2 = value->rValue; 1081 mod->BSIM3v0pgamma2Given = TRUE; 1082 break; 1083 case BSIM3v0_MOD_PVBX: 1084 mod->BSIM3v0pvbx = value->rValue; 1085 mod->BSIM3v0pvbxGiven = TRUE; 1086 break; 1087 case BSIM3v0_MOD_PVBM: 1088 mod->BSIM3v0pvbm = value->rValue; 1089 mod->BSIM3v0pvbmGiven = TRUE; 1090 break; 1091 case BSIM3v0_MOD_PXT: 1092 mod->BSIM3v0pxt = value->rValue; 1093 mod->BSIM3v0pxtGiven = TRUE; 1094 break; 1095 case BSIM3v0_MOD_PK1: 1096 mod->BSIM3v0pk1 = value->rValue; 1097 mod->BSIM3v0pk1Given = TRUE; 1098 break; 1099 case BSIM3v0_MOD_PKT1: 1100 mod->BSIM3v0pkt1 = value->rValue; 1101 mod->BSIM3v0pkt1Given = TRUE; 1102 break; 1103 case BSIM3v0_MOD_PKT1L: 1104 mod->BSIM3v0pkt1l = value->rValue; 1105 mod->BSIM3v0pkt1lGiven = TRUE; 1106 break; 1107 case BSIM3v0_MOD_PKT2: 1108 mod->BSIM3v0pkt2 = value->rValue; 1109 mod->BSIM3v0pkt2Given = TRUE; 1110 break; 1111 case BSIM3v0_MOD_PK2: 1112 mod->BSIM3v0pk2 = value->rValue; 1113 mod->BSIM3v0pk2Given = TRUE; 1114 break; 1115 case BSIM3v0_MOD_PK3: 1116 mod->BSIM3v0pk3 = value->rValue; 1117 mod->BSIM3v0pk3Given = TRUE; 1118 break; 1119 case BSIM3v0_MOD_PK3B: 1120 mod->BSIM3v0pk3b = value->rValue; 1121 mod->BSIM3v0pk3bGiven = TRUE; 1122 break; 1123 case BSIM3v0_MOD_PNLX: 1124 mod->BSIM3v0pnlx = value->rValue; 1125 mod->BSIM3v0pnlxGiven = TRUE; 1126 break; 1127 case BSIM3v0_MOD_PW0: 1128 mod->BSIM3v0pw0 = value->rValue; 1129 mod->BSIM3v0pw0Given = TRUE; 1130 break; 1131 case BSIM3v0_MOD_PDVT0: 1132 mod->BSIM3v0pdvt0 = value->rValue; 1133 mod->BSIM3v0pdvt0Given = TRUE; 1134 break; 1135 case BSIM3v0_MOD_PDVT1: 1136 mod->BSIM3v0pdvt1 = value->rValue; 1137 mod->BSIM3v0pdvt1Given = TRUE; 1138 break; 1139 case BSIM3v0_MOD_PDVT2: 1140 mod->BSIM3v0pdvt2 = value->rValue; 1141 mod->BSIM3v0pdvt2Given = TRUE; 1142 break; 1143 case BSIM3v0_MOD_PDVT0W: 1144 mod->BSIM3v0pdvt0w = value->rValue; 1145 mod->BSIM3v0pdvt0wGiven = TRUE; 1146 break; 1147 case BSIM3v0_MOD_PDVT1W: 1148 mod->BSIM3v0pdvt1w = value->rValue; 1149 mod->BSIM3v0pdvt1wGiven = TRUE; 1150 break; 1151 case BSIM3v0_MOD_PDVT2W: 1152 mod->BSIM3v0pdvt2w = value->rValue; 1153 mod->BSIM3v0pdvt2wGiven = TRUE; 1154 break; 1155 case BSIM3v0_MOD_PDROUT: 1156 mod->BSIM3v0pdrout = value->rValue; 1157 mod->BSIM3v0pdroutGiven = TRUE; 1158 break; 1159 case BSIM3v0_MOD_PDSUB: 1160 mod->BSIM3v0pdsub = value->rValue; 1161 mod->BSIM3v0pdsubGiven = TRUE; 1162 break; 1163 case BSIM3v0_MOD_PVTH0: 1164 mod->BSIM3v0pvth0 = value->rValue; 1165 mod->BSIM3v0pvth0Given = TRUE; 1166 break; 1167 case BSIM3v0_MOD_PUA: 1168 mod->BSIM3v0pua = value->rValue; 1169 mod->BSIM3v0puaGiven = TRUE; 1170 break; 1171 case BSIM3v0_MOD_PUA1: 1172 mod->BSIM3v0pua1 = value->rValue; 1173 mod->BSIM3v0pua1Given = TRUE; 1174 break; 1175 case BSIM3v0_MOD_PUB: 1176 mod->BSIM3v0pub = value->rValue; 1177 mod->BSIM3v0pubGiven = TRUE; 1178 break; 1179 case BSIM3v0_MOD_PUB1: 1180 mod->BSIM3v0pub1 = value->rValue; 1181 mod->BSIM3v0pub1Given = TRUE; 1182 break; 1183 case BSIM3v0_MOD_PUC: 1184 mod->BSIM3v0puc = value->rValue; 1185 mod->BSIM3v0pucGiven = TRUE; 1186 break; 1187 case BSIM3v0_MOD_PUC1: 1188 mod->BSIM3v0puc1 = value->rValue; 1189 mod->BSIM3v0puc1Given = TRUE; 1190 break; 1191 case BSIM3v0_MOD_PU0 : 1192 mod->BSIM3v0pu0 = value->rValue; 1193 mod->BSIM3v0pu0Given = TRUE; 1194 if (mod->BSIM3v0pu0 > 1.0) 1195 mod->BSIM3v0pu0 *= 1.0e-4; 1196 break; 1197 case BSIM3v0_MOD_PUTE : 1198 mod->BSIM3v0pute = value->rValue; 1199 mod->BSIM3v0puteGiven = TRUE; 1200 break; 1201 case BSIM3v0_MOD_PVOFF: 1202 mod->BSIM3v0pvoff = value->rValue; 1203 mod->BSIM3v0pvoffGiven = TRUE; 1204 break; 1205 case BSIM3v0_MOD_PDELTA : 1206 mod->BSIM3v0pdelta = value->rValue; 1207 mod->BSIM3v0pdeltaGiven = TRUE; 1208 break; 1209 case BSIM3v0_MOD_PRDSW: 1210 mod->BSIM3v0prdsw = value->rValue; 1211 mod->BSIM3v0prdswGiven = TRUE; 1212 break; 1213 case BSIM3v0_MOD_PPRWB: 1214 mod->BSIM3v0pprwb = value->rValue; 1215 mod->BSIM3v0pprwbGiven = TRUE; 1216 break; 1217 case BSIM3v0_MOD_PPRWG: 1218 mod->BSIM3v0pprwg = value->rValue; 1219 mod->BSIM3v0pprwgGiven = TRUE; 1220 break; 1221 case BSIM3v0_MOD_PPRT: 1222 mod->BSIM3v0pprt = value->rValue; 1223 mod->BSIM3v0pprtGiven = TRUE; 1224 break; 1225 case BSIM3v0_MOD_PETA0: 1226 mod->BSIM3v0peta0 = value->rValue; 1227 mod->BSIM3v0peta0Given = TRUE; 1228 break; 1229 case BSIM3v0_MOD_PETAB: 1230 mod->BSIM3v0petab = value->rValue; 1231 mod->BSIM3v0petabGiven = TRUE; 1232 break; 1233 case BSIM3v0_MOD_PPCLM: 1234 mod->BSIM3v0ppclm = value->rValue; 1235 mod->BSIM3v0ppclmGiven = TRUE; 1236 break; 1237 case BSIM3v0_MOD_PPDIBL1: 1238 mod->BSIM3v0ppdibl1 = value->rValue; 1239 mod->BSIM3v0ppdibl1Given = TRUE; 1240 break; 1241 case BSIM3v0_MOD_PPDIBL2: 1242 mod->BSIM3v0ppdibl2 = value->rValue; 1243 mod->BSIM3v0ppdibl2Given = TRUE; 1244 break; 1245 case BSIM3v0_MOD_PPDIBLB: 1246 mod->BSIM3v0ppdiblb = value->rValue; 1247 mod->BSIM3v0ppdiblbGiven = TRUE; 1248 break; 1249 case BSIM3v0_MOD_PPSCBE1: 1250 mod->BSIM3v0ppscbe1 = value->rValue; 1251 mod->BSIM3v0ppscbe1Given = TRUE; 1252 break; 1253 case BSIM3v0_MOD_PPSCBE2: 1254 mod->BSIM3v0ppscbe2 = value->rValue; 1255 mod->BSIM3v0ppscbe2Given = TRUE; 1256 break; 1257 case BSIM3v0_MOD_PPVAG: 1258 mod->BSIM3v0ppvag = value->rValue; 1259 mod->BSIM3v0ppvagGiven = TRUE; 1260 break; 1261 case BSIM3v0_MOD_PWR : 1262 mod->BSIM3v0pwr = value->rValue; 1263 mod->BSIM3v0pwrGiven = TRUE; 1264 break; 1265 case BSIM3v0_MOD_PDWG : 1266 mod->BSIM3v0pdwg = value->rValue; 1267 mod->BSIM3v0pdwgGiven = TRUE; 1268 break; 1269 case BSIM3v0_MOD_PDWB : 1270 mod->BSIM3v0pdwb = value->rValue; 1271 mod->BSIM3v0pdwbGiven = TRUE; 1272 break; 1273 case BSIM3v0_MOD_PB0 : 1274 mod->BSIM3v0pb0 = value->rValue; 1275 mod->BSIM3v0pb0Given = TRUE; 1276 break; 1277 case BSIM3v0_MOD_PB1 : 1278 mod->BSIM3v0pb1 = value->rValue; 1279 mod->BSIM3v0pb1Given = TRUE; 1280 break; 1281 case BSIM3v0_MOD_PALPHA0 : 1282 mod->BSIM3v0palpha0 = value->rValue; 1283 mod->BSIM3v0palpha0Given = TRUE; 1284 break; 1285 case BSIM3v0_MOD_PBETA0 : 1286 mod->BSIM3v0pbeta0 = value->rValue; 1287 mod->BSIM3v0pbeta0Given = TRUE; 1288 break; 1289 1290 case BSIM3v0_MOD_PELM : 1291 mod->BSIM3v0pelm = value->rValue; 1292 mod->BSIM3v0pelmGiven = TRUE; 1293 break; 1294 case BSIM3v0_MOD_PCGSL : 1295 mod->BSIM3v0pcgsl = value->rValue; 1296 mod->BSIM3v0pcgslGiven = TRUE; 1297 break; 1298 case BSIM3v0_MOD_PCGDL : 1299 mod->BSIM3v0pcgdl = value->rValue; 1300 mod->BSIM3v0pcgdlGiven = TRUE; 1301 break; 1302 case BSIM3v0_MOD_PCKAPPA : 1303 mod->BSIM3v0pckappa = value->rValue; 1304 mod->BSIM3v0pckappaGiven = TRUE; 1305 break; 1306 case BSIM3v0_MOD_PCF : 1307 mod->BSIM3v0pcf = value->rValue; 1308 mod->BSIM3v0pcfGiven = TRUE; 1309 break; 1310 case BSIM3v0_MOD_PCLC : 1311 mod->BSIM3v0pclc = value->rValue; 1312 mod->BSIM3v0pclcGiven = TRUE; 1313 break; 1314 case BSIM3v0_MOD_PCLE : 1315 mod->BSIM3v0pcle = value->rValue; 1316 mod->BSIM3v0pcleGiven = TRUE; 1317 break; 1318 1319 case BSIM3v0_MOD_TNOM : 1320 mod->BSIM3v0tnom = value->rValue + 273.15; 1321 mod->BSIM3v0tnomGiven = TRUE; 1322 break; 1323 case BSIM3v0_MOD_CGSO : 1324 mod->BSIM3v0cgso = value->rValue; 1325 mod->BSIM3v0cgsoGiven = TRUE; 1326 break; 1327 case BSIM3v0_MOD_CGDO : 1328 mod->BSIM3v0cgdo = value->rValue; 1329 mod->BSIM3v0cgdoGiven = TRUE; 1330 break; 1331 case BSIM3v0_MOD_CGBO : 1332 mod->BSIM3v0cgbo = value->rValue; 1333 mod->BSIM3v0cgboGiven = TRUE; 1334 break; 1335 case BSIM3v0_MOD_XPART : 1336 mod->BSIM3v0xpart = value->rValue; 1337 mod->BSIM3v0xpartGiven = TRUE; 1338 break; 1339 case BSIM3v0_MOD_RSH : 1340 mod->BSIM3v0sheetResistance = value->rValue; 1341 mod->BSIM3v0sheetResistanceGiven = TRUE; 1342 break; 1343 case BSIM3v0_MOD_JS : 1344 mod->BSIM3v0jctSatCurDensity = value->rValue; 1345 mod->BSIM3v0jctSatCurDensityGiven = TRUE; 1346 break; 1347 case BSIM3v0_MOD_PB : 1348 mod->BSIM3v0bulkJctPotential = value->rValue; 1349 mod->BSIM3v0bulkJctPotentialGiven = TRUE; 1350 break; 1351 case BSIM3v0_MOD_MJ : 1352 mod->BSIM3v0bulkJctBotGradingCoeff = value->rValue; 1353 mod->BSIM3v0bulkJctBotGradingCoeffGiven = TRUE; 1354 break; 1355 case BSIM3v0_MOD_PBSW : 1356 mod->BSIM3v0sidewallJctPotential = value->rValue; 1357 mod->BSIM3v0sidewallJctPotentialGiven = TRUE; 1358 break; 1359 case BSIM3v0_MOD_MJSW : 1360 mod->BSIM3v0bulkJctSideGradingCoeff = value->rValue; 1361 mod->BSIM3v0bulkJctSideGradingCoeffGiven = TRUE; 1362 break; 1363 case BSIM3v0_MOD_CJ : 1364 mod->BSIM3v0unitAreaJctCap = value->rValue; 1365 mod->BSIM3v0unitAreaJctCapGiven = TRUE; 1366 break; 1367 case BSIM3v0_MOD_CJSW : 1368 mod->BSIM3v0unitLengthSidewallJctCap = value->rValue; 1369 mod->BSIM3v0unitLengthSidewallJctCapGiven = TRUE; 1370 break; 1371 case BSIM3v0_MOD_LINT : 1372 mod->BSIM3v0Lint = value->rValue; 1373 mod->BSIM3v0LintGiven = TRUE; 1374 break; 1375 case BSIM3v0_MOD_LL : 1376 mod->BSIM3v0Ll = value->rValue; 1377 mod->BSIM3v0LlGiven = TRUE; 1378 break; 1379 case BSIM3v0_MOD_LLN : 1380 mod->BSIM3v0Lln = value->rValue; 1381 mod->BSIM3v0LlnGiven = TRUE; 1382 break; 1383 case BSIM3v0_MOD_LW : 1384 mod->BSIM3v0Lw = value->rValue; 1385 mod->BSIM3v0LwGiven = TRUE; 1386 break; 1387 case BSIM3v0_MOD_LWN : 1388 mod->BSIM3v0Lwn = value->rValue; 1389 mod->BSIM3v0LwnGiven = TRUE; 1390 break; 1391 case BSIM3v0_MOD_LWL : 1392 mod->BSIM3v0Lwl = value->rValue; 1393 mod->BSIM3v0LwlGiven = TRUE; 1394 break; 1395 case BSIM3v0_MOD_LMIN : 1396 mod->BSIM3v0Lmin = value->rValue; 1397 mod->BSIM3v0LminGiven = TRUE; 1398 break; 1399 case BSIM3v0_MOD_LMAX : 1400 mod->BSIM3v0Lmax = value->rValue; 1401 mod->BSIM3v0LmaxGiven = TRUE; 1402 break; 1403 case BSIM3v0_MOD_WINT : 1404 mod->BSIM3v0Wint = value->rValue; 1405 mod->BSIM3v0WintGiven = TRUE; 1406 break; 1407 case BSIM3v0_MOD_WL : 1408 mod->BSIM3v0Wl = value->rValue; 1409 mod->BSIM3v0WlGiven = TRUE; 1410 break; 1411 case BSIM3v0_MOD_WLN : 1412 mod->BSIM3v0Wln = value->rValue; 1413 mod->BSIM3v0WlnGiven = TRUE; 1414 break; 1415 case BSIM3v0_MOD_WW : 1416 mod->BSIM3v0Ww = value->rValue; 1417 mod->BSIM3v0WwGiven = TRUE; 1418 break; 1419 case BSIM3v0_MOD_WWN : 1420 mod->BSIM3v0Wwn = value->rValue; 1421 mod->BSIM3v0WwnGiven = TRUE; 1422 break; 1423 case BSIM3v0_MOD_WWL : 1424 mod->BSIM3v0Wwl = value->rValue; 1425 mod->BSIM3v0WwlGiven = TRUE; 1426 break; 1427 case BSIM3v0_MOD_WMIN : 1428 mod->BSIM3v0Wmin = value->rValue; 1429 mod->BSIM3v0WminGiven = TRUE; 1430 break; 1431 case BSIM3v0_MOD_WMAX : 1432 mod->BSIM3v0Wmax = value->rValue; 1433 mod->BSIM3v0WmaxGiven = TRUE; 1434 break; 1435 1436 case BSIM3v0_MOD_NOIA : 1437 mod->BSIM3v0oxideTrapDensityA = value->rValue; 1438 mod->BSIM3v0oxideTrapDensityAGiven = TRUE; 1439 break; 1440 case BSIM3v0_MOD_NOIB : 1441 mod->BSIM3v0oxideTrapDensityB = value->rValue; 1442 mod->BSIM3v0oxideTrapDensityBGiven = TRUE; 1443 break; 1444 case BSIM3v0_MOD_NOIC : 1445 mod->BSIM3v0oxideTrapDensityC = value->rValue; 1446 mod->BSIM3v0oxideTrapDensityCGiven = TRUE; 1447 break; 1448 case BSIM3v0_MOD_EM : 1449 mod->BSIM3v0em = value->rValue; 1450 mod->BSIM3v0emGiven = TRUE; 1451 break; 1452 case BSIM3v0_MOD_EF : 1453 mod->BSIM3v0ef = value->rValue; 1454 mod->BSIM3v0efGiven = TRUE; 1455 break; 1456 case BSIM3v0_MOD_AF : 1457 mod->BSIM3v0af = value->rValue; 1458 mod->BSIM3v0afGiven = TRUE; 1459 break; 1460 case BSIM3v0_MOD_KF : 1461 mod->BSIM3v0kf = value->rValue; 1462 mod->BSIM3v0kfGiven = TRUE; 1463 break; 1464 case BSIM3v0_MOD_NMOS : 1465 if(value->iValue) { 1466 mod->BSIM3v0type = 1; 1467 mod->BSIM3v0typeGiven = TRUE; 1468 } 1469 break; 1470 case BSIM3v0_MOD_PMOS : 1471 if(value->iValue) { 1472 mod->BSIM3v0type = - 1; 1473 mod->BSIM3v0typeGiven = TRUE; 1474 } 1475 break; 1476 default: 1477 return(E_BADPARM); 1478 } 1479 return(OK); 1480 } 1481 1482 1483