1 /*********************************************************************** 2 3 HiSIM (Hiroshima University STARC IGFET Model) 4 Copyright (C) 2014 Hiroshima University & STARC 5 6 MODEL NAME : HiSIM 7 ( VERSION : 2 SUBVERSION : 8 REVISION : 0 ) 8 9 FILE : hsm2def.h 10 11 Date : 2014.6.5 12 13 released by 14 Hiroshima University & 15 Semiconductor Technology Academic Research Center (STARC) 16 ***********************************************************************/ 17 18 #ifndef HSM2 19 #define HSM2 20 21 #include "ngspice/ifsim.h" 22 #include "ngspice/gendefs.h" 23 #include "ngspice/cktdefs.h" 24 #include "ngspice/complex.h" 25 #include "ngspice/noisedef.h" 26 27 /* declarations for HiSIM2 MOSFETs */ 28 29 /* unit-converted model parameters */ 30 typedef struct sHSM2modelMKSParam { 31 double HSM2_npext ; 32 double HSM2_nsubcwpe ; 33 double HSM2_nsubpwpe ; 34 double HSM2_npextwpe ; 35 double HSM2_ll ; 36 double HSM2_wl ; 37 double HSM2_svgsl ; 38 double HSM2_svgsw ; 39 double HSM2_svbsl ; 40 double HSM2_slgl ; 41 double HSM2_sub1l ; 42 double HSM2_slg ; 43 double HSM2_sub2l ; 44 double HSM2_nsubcmax ; 45 double HSM2_glksd3 ; 46 double HSM2_gleak2 ; 47 double HSM2_gleak4 ; 48 double HSM2_gleak5 ; 49 double HSM2_gleak7 ; 50 double HSM2_cit ; 51 double HSM2_ovslp ; 52 double HSM2_dly3 ; 53 double HSM2_ndepm ; 54 } HSM2modelMKSParam ; 55 56 /* binning parameters */ 57 typedef struct sHSM2binningParam { 58 double HSM2_vmax ; 59 double HSM2_bgtmp1 ; 60 double HSM2_bgtmp2 ; 61 double HSM2_eg0 ; 62 double HSM2_lover ; 63 double HSM2_vfbover ; 64 double HSM2_nover ; 65 double HSM2_wl2 ; 66 double HSM2_vfbc ; 67 double HSM2_nsubc ; 68 double HSM2_nsubp ; 69 double HSM2_scp1 ; 70 double HSM2_scp2 ; 71 double HSM2_scp3 ; 72 double HSM2_sc1 ; 73 double HSM2_sc2 ; 74 double HSM2_sc3 ; 75 double HSM2_sc4 ; 76 double HSM2_pgd1 ; 77 //double HSM2_pgd3 ; 78 double HSM2_ndep ; 79 double HSM2_ninv ; 80 double HSM2_muecb0 ; 81 double HSM2_muecb1 ; 82 double HSM2_mueph1 ; 83 double HSM2_vtmp ; 84 double HSM2_wvth0 ; 85 double HSM2_muesr1 ; 86 double HSM2_muetmp ; 87 double HSM2_sub1 ; 88 double HSM2_sub2 ; 89 double HSM2_svds ; 90 double HSM2_svbs ; 91 double HSM2_svgs ; 92 double HSM2_nsti ; 93 double HSM2_wsti ; 94 double HSM2_scsti1 ; 95 double HSM2_scsti2 ; 96 double HSM2_vthsti ; 97 double HSM2_muesti1 ; 98 double HSM2_muesti2 ; 99 double HSM2_muesti3 ; 100 double HSM2_nsubpsti1 ; 101 double HSM2_nsubpsti2 ; 102 double HSM2_nsubpsti3 ; 103 double HSM2_nsubcsti1; 104 double HSM2_nsubcsti2; 105 double HSM2_nsubcsti3; 106 double HSM2_cgso ; 107 double HSM2_cgdo ; 108 double HSM2_js0 ; 109 double HSM2_js0sw ; 110 double HSM2_nj ; 111 double HSM2_cisbk ; 112 double HSM2_clm1 ; 113 double HSM2_clm2 ; 114 double HSM2_clm3 ; 115 double HSM2_wfc ; 116 double HSM2_gidl1 ; 117 double HSM2_gidl2 ; 118 double HSM2_gleak1 ; 119 double HSM2_gleak2 ; 120 double HSM2_gleak3 ; 121 double HSM2_gleak6 ; 122 double HSM2_glksd1 ; 123 double HSM2_glksd2 ; 124 double HSM2_glkb1 ; 125 double HSM2_glkb2 ; 126 double HSM2_nftrp ; 127 double HSM2_nfalp ; 128 double HSM2_vdiffj ; 129 double HSM2_ibpc1 ; 130 double HSM2_ibpc2 ; 131 } HSM2binningParam ; 132 133 /* unit-converted parameters for each instance */ 134 typedef struct sHSM2hereMKSParam { 135 double HSM2_nsubcdfm ; 136 } HSM2hereMKSParam ; 137 138 /* information needed for each instance */ 139 typedef struct sHSM2instance { 140 141 struct GENinstance gen; 142 143 #define HSM2modPtr(inst) ((struct sHSM2model *)((inst)->gen.GENmodPtr)) 144 #define HSM2nextInstance(inst) ((struct sHSM2instance *)((inst)->gen.GENnextInstance)) 145 #define HSM2name gen.GENname 146 #define HSM2states gen.GENstate 147 148 const int HSM2dNode; /* number of the drain node of the mosfet */ 149 const int HSM2gNode; /* number of the gate node of the mosfet */ 150 const int HSM2sNode; /* number of the source node of the mosfet */ 151 const int HSM2bNode; /* number of the bulk node of the mosfet */ 152 int HSM2dNodePrime; /* number od the inner drain node */ 153 int HSM2gNodePrime; /* number of the inner gate node */ 154 int HSM2sNodePrime; /* number od the inner source node */ 155 int HSM2bNodePrime; 156 int HSM2dbNode; 157 int HSM2sbNode; 158 159 double HSM2_noiflick; /* for 1/f noise calc. */ 160 double HSM2_noithrml; /* for thermal noise calc. */ 161 double HSM2_noiigate; /* for induced gate noise */ 162 double HSM2_noicross; /* for induced gate noise */ 163 double HSM2_Qdrat; /* for induced gate noise */ 164 165 /* instance */ 166 double HSM2_l; /* the length of the channel region */ 167 double HSM2_w; /* the width of the channel region */ 168 double HSM2_ad; /* the area of the drain diffusion */ 169 double HSM2_as; /* the area of the source diffusion */ 170 double HSM2_pd; /* perimeter of drain junction [m] */ 171 double HSM2_ps; /* perimeter of source junction [m] */ 172 double HSM2_nrd; /* equivalent num of squares of drain [-] (unused) */ 173 double HSM2_nrs; /* equivalent num of squares of source [-] (unused) */ 174 double HSM2_temp; /* lattice temperature [C] */ 175 double HSM2_dtemp; 176 177 double HSM2_weff; /* the effective width of the channel region */ 178 double HSM2_weff_nf; /* Weff * NF */ 179 double HSM2_leff; /* the effective length of the channel region */ 180 181 int HSM2_corbnet ; 182 double HSM2_rbpb ; 183 double HSM2_rbpd ; 184 double HSM2_rbps ; 185 double HSM2_rbdb ; 186 double HSM2_rbsb ; 187 188 int HSM2_corg ; 189 /* double HSM2_rshg; */ 190 double HSM2_ngcon; 191 double HSM2_xgw; 192 double HSM2_xgl; 193 double HSM2_nf; 194 195 double HSM2_sa; 196 double HSM2_sb; 197 double HSM2_sd; 198 double HSM2_nsubcdfm; /* DFM */ 199 double HSM2_mphdfm; /* DFM */ 200 double HSM2_m; 201 202 /* WPE */ 203 double HSM2_sca; /* scc */ 204 double HSM2_scb; /* scb */ 205 double HSM2_scc; /* scc */ 206 207 int HSM2_called; /* flag to check the first call */ 208 /* previous values to evaluate initial guess */ 209 double HSM2_mode_prv; 210 double HSM2_vbsc_prv; 211 double HSM2_vdsc_prv; 212 double HSM2_vgsc_prv; 213 double HSM2_ps0_prv; 214 double HSM2_ps0_dvbs_prv; 215 double HSM2_ps0_dvds_prv; 216 double HSM2_ps0_dvgs_prv; 217 double HSM2_pds_prv; 218 double HSM2_pds_dvbs_prv; 219 double HSM2_pds_dvds_prv; 220 double HSM2_pds_dvgs_prv; 221 double HSM2_ids_prv; 222 double HSM2_ids_dvbs_prv; 223 double HSM2_ids_dvds_prv; 224 double HSM2_ids_dvgs_prv; 225 double HSM2_mode_prv2; 226 double HSM2_vbsc_prv2; 227 double HSM2_vdsc_prv2; 228 double HSM2_vgsc_prv2; 229 double HSM2_ps0_prv2; 230 double HSM2_ps0_dvbs_prv2; 231 double HSM2_ps0_dvds_prv2; 232 double HSM2_ps0_dvgs_prv2; 233 double HSM2_pds_prv2; 234 double HSM2_pds_dvbs_prv2; 235 double HSM2_pds_dvds_prv2; 236 double HSM2_pds_dvgs_prv2; 237 double HSM2_PS0Z_SCE_prv ; 238 double HSM2_PS0Z_SCE_dvds_prv ; 239 double HSM2_PS0Z_SCE_dvgs_prv ; 240 double HSM2_PS0Z_SCE_dvbs_prv ; 241 242 /* output */ 243 int HSM2_capop; 244 double HSM2_gd; 245 double HSM2_gs; 246 double HSM2_cgso; 247 double HSM2_cgdo; 248 double HSM2_cgbo; 249 double HSM2_cdso; 250 double HSM2_cddo; 251 double HSM2_cdgo; 252 double HSM2_csso; 253 double HSM2_csdo; 254 double HSM2_csgo; 255 double HSM2_cqyd; 256 double HSM2_cqyg; 257 double HSM2_cqyb; 258 double HSM2_von; /* vth */ 259 double HSM2_vdsat; 260 double HSM2_ids; /* cdrain, HSM2_cd */ 261 double HSM2_gds; 262 double HSM2_gm; 263 double HSM2_gmbs; 264 double HSM2_ibs; /* HSM2_cbs */ 265 double HSM2_ibd; /* HSM2_cbd */ 266 double HSM2_gbs; 267 double HSM2_gbd; 268 double HSM2_capbs; 269 double HSM2_capbd; 270 double HSM2_capgs; 271 double HSM2_capgd; 272 double HSM2_capgb; 273 double HSM2_isub; /* HSM2_csub */ 274 double HSM2_gbgs; 275 double HSM2_gbds; 276 double HSM2_gbbs; 277 double HSM2_qg; 278 double HSM2_qd; 279 double HSM2_qs; 280 double HSM2_qb; /* bulk charge qb = -(qg + qd + qs) */ 281 double HSM2_cggb; 282 double HSM2_cgdb; 283 double HSM2_cgsb; 284 double HSM2_cbgb; 285 double HSM2_cbdb; 286 double HSM2_cbsb; 287 double HSM2_cdgb; 288 double HSM2_cddb; 289 double HSM2_cdsb; 290 291 double HSM2_mu; /* mobility */ 292 double HSM2_igidl; /* gate induced drain leakage */ 293 double HSM2_gigidlgs; 294 double HSM2_gigidlds; 295 double HSM2_gigidlbs; 296 double HSM2_igisl; /* gate induced source leakage */ 297 double HSM2_gigislgd; 298 double HSM2_gigislsd; 299 double HSM2_gigislbd; 300 double HSM2_igb; /* gate tunneling current (gate to bulk) */ 301 double HSM2_gigbg; 302 double HSM2_gigbd; 303 double HSM2_gigbb; 304 double HSM2_gigbs; 305 double HSM2_igs; /* gate tunneling current (gate to source) */ 306 double HSM2_gigsg; 307 double HSM2_gigsd; 308 double HSM2_gigsb; 309 double HSM2_gigss; 310 double HSM2_igd; /* gate tunneling current (gate to drain) */ 311 double HSM2_gigdg; 312 double HSM2_gigdd; 313 double HSM2_gigdb; 314 double HSM2_gigds; 315 316 /* NQS */ 317 double HSM2_tau ; 318 double HSM2_tau_dVgs ; 319 double HSM2_tau_dVds ; 320 double HSM2_tau_dVbs ; 321 double HSM2_Xd ; 322 double HSM2_Xd_dVgs ; 323 double HSM2_Xd_dVds ; 324 double HSM2_Xd_dVbs ; 325 double HSM2_Qi ; 326 double HSM2_Qi_dVgs ; 327 double HSM2_Qi_dVds ; 328 double HSM2_Qi_dVbs ; 329 double HSM2_taub ; 330 double HSM2_taub_dVgs ; 331 double HSM2_taub_dVds ; 332 double HSM2_taub_dVbs ; 333 double HSM2_Qb ; 334 double HSM2_Qb_dVgs ; 335 double HSM2_Qb_dVds ; 336 double HSM2_Qb_dVbs ; 337 338 /* internal variables */ 339 double HSM2_depleak ; 340 double HSM2_depvmax ; 341 double HSM2_depmphn0 ; 342 double HSM2_depmphn1 ; 343 double HSM2_depmue0 ; 344 double HSM2_depmue1 ; 345 double HSM2_depmueback0 ; 346 double HSM2_depmueback1 ; 347 double HSM2_depvdsef1 ; 348 double HSM2_depvdsef2 ; 349 double HSM2_eg ; 350 double HSM2_beta ; 351 double HSM2_beta_inv ; 352 double HSM2_beta2 ; 353 double HSM2_betatnom ; 354 double HSM2_nin ; 355 double HSM2_egp12 ; 356 double HSM2_egp32 ; 357 double HSM2_lgate ; 358 double HSM2_wgate ; 359 double HSM2_lg ; 360 double HSM2_wg ; 361 double HSM2_mueph ; 362 double HSM2_mphn0 ; 363 double HSM2_mphn1 ; 364 double HSM2_muesr ; 365 double HSM2_nsub ; 366 double HSM2_qnsub ; 367 double HSM2_qnsub_esi ; 368 double HSM2_2qnsub_esi ; 369 double HSM2_ptovr0 ; 370 double HSM2_ptovr ; 371 double HSM2_vmax0 ; 372 double HSM2_vmax ; 373 double HSM2_pb2 ; 374 double HSM2_pb20 ; 375 double HSM2_pb2c ; 376 double HSM2_cnst0 ; 377 double HSM2_cnst1 ; 378 double HSM2_isbd ; 379 double HSM2_isbd2 ; 380 double HSM2_isbs ; 381 double HSM2_isbs2 ; 382 double HSM2_vbdt ; 383 double HSM2_vbst ; 384 double HSM2_exptemp ; 385 double HSM2_wsti ; 386 double HSM2_cnstpgd ; 387 double HSM2_ninvp0 ; 388 double HSM2_ninv0 ; 389 double HSM2_grbpb ; 390 double HSM2_grbpd ; 391 double HSM2_grbps ; 392 double HSM2_grbdb ; 393 double HSM2_grbsb ; 394 double HSM2_grg ; 395 double HSM2_rs ; 396 double HSM2_rd ; 397 double HSM2_clmmod ; 398 double HSM2_lgatesm ; 399 double HSM2_dVthsm ; 400 double HSM2_ddlt ; 401 /* 2007.02.20--03.15 */ 402 double HSM2_xsub1 ; 403 double HSM2_xsub2 ; 404 double HSM2_xgate ; 405 double HSM2_xvbs ; 406 double HSM2_vg2const ; 407 double HSM2_wdpl ; 408 double HSM2_wdplp ; 409 double HSM2_cfrng ; 410 double HSM2_jd_nvtm_inv ; 411 double HSM2_jd_expcd ; 412 double HSM2_jd_expcs ; 413 double HSM2_sqrt_eg ; 414 415 double HSM2_egtnom ; 416 double HSM2_cecox ; 417 double HSM2_msc ; 418 int HSM2_flg_pgd ; 419 double HSM2_ndep_o_esi ; 420 double HSM2_ninv_o_esi ; 421 double HSM2_ninvd ; 422 double HSM2_cqyb0 ; 423 double HSM2_cnst0over ; 424 double HSM2_costi00 ; 425 double HSM2_nsti_p2 ; 426 double HSM2_costi0 ; 427 double HSM2_costi0_p2 ; 428 double HSM2_costi1 ; 429 double HSM2_pb2over ; /* for Qover model */ 430 //double HSM2_ps0ldinib ; 431 double HSM2_ptl0; 432 double HSM2_pt40; 433 double HSM2_gdl0; 434 double HSM2_muecb0; 435 double HSM2_muecb1; 436 double HSM2_ktemp; /* lattice temperature [K] */ 437 double HSM2_mueph1 ; 438 double HSM2_nsubp ; 439 double HSM2_nsubc ; 440 /* Depletion Mode MOSFET */ 441 double HSM2_ndepm ; 442 double HSM2_Pb2n ; 443 double HSM2_Vbipn ; 444 445 HSM2hereMKSParam hereMKS ; /* unit-converted parameters */ 446 HSM2binningParam pParam ; /* binning parameters */ 447 448 /* no use in SPICE3f5 449 double HSM2drainSquares; the length of the drain in squares 450 double HSM2sourceSquares; the length of the source in squares */ 451 double HSM2sourceConductance; /* cond. of source (or 0): set in setup */ 452 double HSM2drainConductance; /* cond. of drain (or 0): set in setup */ 453 double HSM2internalGs; /* internal cond. of source for thermal noise calc. */ 454 double HSM2internalGd; /* internal cond. of drain for thermal noise calc. */ 455 456 double HSM2_icVBS; /* initial condition B-S voltage */ 457 double HSM2_icVDS; /* initial condition D-S voltage */ 458 double HSM2_icVGS; /* initial condition G-S voltage */ 459 int HSM2_off; /* non-zero to indicate device is off for dc analysis */ 460 int HSM2_mode; /* device mode : 1 = normal, -1 = inverse */ 461 462 unsigned HSM2_l_Given :1; 463 unsigned HSM2_w_Given :1; 464 unsigned HSM2_ad_Given :1; 465 unsigned HSM2_as_Given :1; 466 /* unsigned HSM2drainSquaresGiven :1; 467 unsigned HSM2sourceSquaresGiven :1;*/ 468 unsigned HSM2_pd_Given :1; 469 unsigned HSM2_ps_Given :1; 470 unsigned HSM2_nrd_Given :1; 471 unsigned HSM2_nrs_Given :1; 472 unsigned HSM2_temp_Given :1; 473 unsigned HSM2_dtemp_Given :1; 474 unsigned HSM2_icVBS_Given :1; 475 unsigned HSM2_icVDS_Given :1; 476 unsigned HSM2_icVGS_Given :1; 477 unsigned HSM2_corbnet_Given :1; 478 unsigned HSM2_rbpb_Given :1; 479 unsigned HSM2_rbpd_Given :1; 480 unsigned HSM2_rbps_Given :1; 481 unsigned HSM2_rbdb_Given :1; 482 unsigned HSM2_rbsb_Given :1; 483 unsigned HSM2_corg_Given :1; 484 /* unsigned HSM2_rshg_Given :1; */ 485 unsigned HSM2_ngcon_Given :1; 486 unsigned HSM2_xgw_Given :1; 487 unsigned HSM2_xgl_Given :1; 488 unsigned HSM2_nf_Given :1; 489 unsigned HSM2_sa_Given :1; 490 unsigned HSM2_sb_Given :1; 491 unsigned HSM2_sd_Given :1; 492 unsigned HSM2_nsubcdfm_Given :1; /* DFM */ 493 unsigned HSM2_mphdfm_Given :1; /* DFM */ 494 unsigned HSM2_m_Given :1; 495 496 /* WPE */ 497 unsigned HSM2_sca_Given :1; /* sca */ 498 unsigned HSM2_scb_Given :1; /* scb */ 499 unsigned HSM2_scc_Given :1; /* scc */ 500 /* pointer to sparse matrix */ 501 502 double *HSM2GgPtr; /* pointer to sparse matrix element at (gate node,gate node) */ 503 double *HSM2GgpPtr; /* pointer to sparse matrix element at (gate node,gate prime node) */ 504 double *HSM2GdpPtr; /* pointer to sparse matrix element at (gate node,drain prime node) */ 505 double *HSM2GspPtr; /* pointer to sparse matrix element at (gate node,source prime node) */ 506 double *HSM2GbpPtr; /* pointer to sparse matrix element at (gate node,bulk prime node) */ 507 508 double *HSM2GPgPtr; /* pointer to sparse matrix element at (gate prime node,gate node) */ 509 double *HSM2GPgpPtr; /* pointer to sparse matrix element at (gate prime node,gate prime node) */ 510 double *HSM2GPdpPtr; /* pointer to sparse matrix element at (gate prime node,drain prime node) */ 511 double *HSM2GPspPtr; /* pointer to sparse matrix element at (gate prime node,source prime node) */ 512 double *HSM2GPbpPtr; /* pointer to sparse matrix element at (gate prime node,bulk prime node) */ 513 514 double *HSM2DPdPtr; /* pointer to sparse matrix element at (drain prime node,drain node) */ 515 double *HSM2DPdpPtr; /* pointer to sparse matrix element at (drain prime node,drain prime node) */ 516 double *HSM2DPgpPtr; /* pointer to sparse matrix element at (drain prime node,gate prime node) */ 517 double *HSM2DPspPtr; /* pointer to sparse matrix element at (drain prime node,source prime node) */ 518 double *HSM2DPbpPtr; /* pointer to sparse matrix element at (drain prime node,bulk prime node) */ 519 double *HSM2DPdbPtr; /* pointer to sparse matrix element at (drain prime node,drain body node) */ 520 521 double *HSM2DdPtr; /* pointer to sparse matrix element at (Drain node,drain node) */ 522 double *HSM2DdpPtr; /* pointer to sparse matrix element at (drain node,drain prime node) */ 523 524 double *HSM2SPsPtr; /* pointer to sparse matrix element at (source prime node,source node) */ 525 double *HSM2SPspPtr; /* pointer to sparse matrix element at (source prime node,source prime node) */ 526 double *HSM2SPgpPtr; /* pointer to sparse matrix element at (source prime node,gate prime node) */ 527 double *HSM2SPdpPtr; /* pointer to sparse matrix element at (source prime node,drain prime node) */ 528 double *HSM2SPbpPtr; /* pointer to sparse matrix element at (source prime node,bulk prime node) */ 529 double *HSM2SPsbPtr; /* pointer to sparse matrix element at (source prime node,source body node) */ 530 531 double *HSM2SsPtr; /* pointer to sparse matrix element at (source node,source node) */ 532 double *HSM2SspPtr; /* pointer to sparse matrix element at (source node,source prime node) */ 533 534 double *HSM2BPgpPtr; /* pointer to sparse matrix element at (bulk prime node,gate prime node) */ 535 double *HSM2BPbpPtr; /* pointer to sparse matrix element at (bulk prime node,bulk prime node) */ 536 double *HSM2BPdpPtr; /* pointer to sparse matrix element at (bulk prime node,drain prime node) */ 537 double *HSM2BPspPtr; /* pointer to sparse matrix element at (bulk prime node,source prime node) */ 538 double *HSM2BPbPtr; /* pointer to sparse matrix element at (bulk prime node,bulk node) */ 539 double *HSM2BPdbPtr; /* pointer to sparse matrix element at (bulk prime node,source body node) */ 540 double *HSM2BPsbPtr; /* pointer to sparse matrix element at (bulk prime node,source body node) */ 541 542 double *HSM2DBdpPtr; /* pointer to sparse matrix element at (drain body node,drain prime node) */ 543 double *HSM2DBdbPtr; /* pointer to sparse matrix element at (drain body node,drain body node) */ 544 double *HSM2DBbpPtr; /* pointer to sparse matrix element at (drain body node,bulk prime node) */ 545 double *HSM2DBbPtr; /* pointer to sparse matrix element at (drain body node,bulk node) */ 546 547 double *HSM2SBspPtr; /* pointer to sparse matrix element at (source body node,drain prime node) */ 548 double *HSM2SBbpPtr; /* pointer to sparse matrix element at (source body node,drain body node) */ 549 double *HSM2SBbPtr; /* pointer to sparse matrix element at (source body node,bulk prime node) */ 550 double *HSM2SBsbPtr; /* pointer to sparse matrix element at (source body node,bulk node) */ 551 552 double *HSM2BsbPtr; /* pointer to sparse matrix element at (bulk node,source body node) */ 553 double *HSM2BbpPtr; /* pointer to sparse matrix element at (bulk node,bulk prime node) */ 554 double *HSM2BdbPtr; /* pointer to sparse matrix element at (bulk node,drain body node) */ 555 double *HSM2BbPtr; /* pointer to sparse matrix element at (bulk node,bulk node) */ 556 557 #ifdef USE_OMP 558 /* per instance storage of results, to update matrix and rhs at a later stage */ 559 double HSM2rhsdPrime; 560 double HSM2rhsgPrime; 561 double HSM2rhsbPrime; 562 double HSM2rhssPrime; 563 double HSM2rhsdb; 564 double HSM2rhssb; 565 566 double HSM2_1; 567 double HSM2_2; 568 double HSM2_3; 569 double HSM2_4; 570 double HSM2_5; 571 double HSM2_6; 572 double HSM2_7; 573 double HSM2_8; 574 double HSM2_9; 575 double HSM2_10; 576 double HSM2_11; 577 double HSM2_12; 578 double HSM2_13; 579 double HSM2_14; 580 double HSM2_15; 581 double HSM2_16; 582 double HSM2_17; 583 double HSM2_18; 584 double HSM2_19; 585 double HSM2_20; 586 double HSM2_21; 587 double HSM2_22; 588 double HSM2_23; 589 double HSM2_24; 590 double HSM2_25; 591 double HSM2_26; 592 double HSM2_27; 593 double HSM2_28; 594 double HSM2_29; 595 double HSM2_30; 596 double HSM2_31; 597 double HSM2_32; 598 double HSM2_33; 599 double HSM2_34; 600 double HSM2_35; 601 double HSM2_36; 602 double HSM2_37; 603 double HSM2_38; 604 double HSM2_39; 605 double HSM2_40; 606 double HSM2_41; 607 double HSM2_42; 608 double HSM2_43; 609 double HSM2_44; 610 double HSM2_45; 611 double HSM2_46; 612 double HSM2_47; 613 double HSM2_48; 614 double HSM2_49; 615 double HSM2_50; 616 double HSM2_51; 617 double HSM2_52; 618 double HSM2_53; 619 double HSM2_54; 620 double HSM2_55; 621 double HSM2_56; 622 double HSM2_57; 623 double HSM2_58; 624 double HSM2_59; 625 double HSM2_60; 626 double HSM2_61; 627 double HSM2_62; 628 double HSM2_63; 629 #endif 630 631 /* common state values in hisim module */ 632 #define HSM2vbd HSM2states+ 0 633 #define HSM2vbs HSM2states+ 1 634 #define HSM2vgs HSM2states+ 2 635 #define HSM2vds HSM2states+ 3 636 #define HSM2vdbs HSM2states+ 4 637 #define HSM2vdbd HSM2states+ 5 638 #define HSM2vsbs HSM2states+ 6 639 #define HSM2vges HSM2states+ 7 640 641 #define HSM2qb HSM2states+ 8 642 #define HSM2cqb HSM2states+ 9 643 #define HSM2qg HSM2states+ 10 644 #define HSM2cqg HSM2states+ 11 645 #define HSM2qd HSM2states+ 12 646 #define HSM2cqd HSM2states+ 13 647 648 #define HSM2qbs HSM2states+ 14 649 #define HSM2cqbs HSM2states+ 15 650 #define HSM2qbd HSM2states+ 16 651 #define HSM2cqbd HSM2states+ 17 652 653 #define HSM2numStates 18 654 655 /* nqs charges */ 656 #define HSM2qi_nqs HSM2states+ 19 657 #define HSM2qb_nqs HSM2states+ 20 658 659 #define HSM2numStatesNqs 21 660 661 /* indices to the array of HiSIM2 NOISE SOURCES (the same as BSIM3) */ 662 #define HSM2RDNOIZ 0 663 #define HSM2RSNOIZ 1 664 #define HSM2IDNOIZ 2 665 #define HSM2FLNOIZ 3 666 #define HSM2IGSNOIZ 4 /* shot noise */ 667 #define HSM2IGDNOIZ 5 /* shot noise */ 668 #define HSM2IGBNOIZ 6 /* shot noise */ 669 #define HSM2IGNOIZ 7 /* induced gate noise */ 670 #define HSM2TOTNOIZ 8 671 672 #define HSM2NSRCS 9 /* the number of HiSIM2 MOSFET noise sources */ 673 674 #ifndef NONOISE 675 double HSM2nVar[NSTATVARS][HSM2NSRCS]; 676 #else /* NONOISE */ 677 double **HSM2nVar; 678 #endif /* NONOISE */ 679 680 } HSM2instance ; 681 682 683 /* per model data */ 684 685 typedef struct sHSM2model { /* model structure for a resistor */ 686 687 struct GENmodel gen; 688 689 #define HSM2modType gen.GENmodType 690 #define HSM2nextModel(inst) ((struct sHSM2model *)((inst)->gen.GENnextModel)) 691 #define HSM2instances(inst) ((HSM2instance *)((inst)->gen.GENinstances)) 692 #define HSM2modName gen.GENmodName 693 694 int HSM2_type; /* device type: 1 = nmos, -1 = pmos */ 695 int HSM2_level; /* level */ 696 int HSM2_info; /* information */ 697 int HSM2_noise; /* noise model selecter see hsm2noi.c */ 698 int HSM2_version; /* model version 2.80 */ 699 int HSM2_show; /* show physical value 1, 2, ... , 11 */ 700 701 /* flags for initial guess */ 702 int HSM2_corsrd ; 703 int HSM2_corg ; 704 int HSM2_coiprv ; 705 int HSM2_copprv ; 706 int HSM2_coadov ; 707 int HSM2_coisub ; 708 int HSM2_coiigs ; 709 int HSM2_cogidl ; 710 int HSM2_coovlp ; 711 int HSM2_coflick ; 712 int HSM2_coisti ; 713 int HSM2_conqs ; /* HiSIM2 */ 714 int HSM2_corbnet ; 715 int HSM2_cothrml; 716 int HSM2_coign; /* induced gate noise */ 717 int HSM2_codfm; /* DFM */ 718 int HSM2_corecip; 719 int HSM2_coqy; 720 int HSM2_coqovsm ; 721 int HSM2_coerrrep; 722 int HSM2_codep; 723 int HSM2_coddlt; /* add in version 2.80 */ 724 725 /* HiSIM original */ 726 double HSM2_vmax ; 727 double HSM2_bgtmp1 ; 728 double HSM2_bgtmp2 ; 729 double HSM2_eg0 ; 730 double HSM2_tox ; 731 double HSM2_xld ; 732 double HSM2_lover ; 733 double HSM2_ddltmax ; /* Vdseff */ 734 double HSM2_ddltslp ; /* Vdseff */ 735 double HSM2_ddltict ; /* Vdseff */ 736 double HSM2_vfbover ; 737 double HSM2_nover ; 738 double HSM2_xwd ; 739 double HSM2_xl ; 740 double HSM2_xw ; 741 double HSM2_saref ; 742 double HSM2_sbref ; 743 double HSM2_ll ; 744 double HSM2_lld ; 745 double HSM2_lln ; 746 double HSM2_wl ; 747 double HSM2_wl1 ; 748 double HSM2_wl1p ; 749 double HSM2_wl2 ; 750 double HSM2_wl2p ; 751 double HSM2_wld ; 752 double HSM2_wln ; 753 double HSM2_xqy ; 754 double HSM2_xqy1 ; 755 double HSM2_xqy2 ; 756 double HSM2_qyrat ; 757 double HSM2_rs; /* source contact resistance */ 758 double HSM2_rd; /* drain contact resistance */ 759 double HSM2_rsh; /* source/drain diffusion sheet resistance */ 760 double HSM2_rshg; 761 /* double HSM2_ngcon; */ 762 /* double HSM2_xgw; */ 763 /* double HSM2_xgl; */ 764 /* double HSM2_nf; */ 765 double HSM2_vfbc ; 766 double HSM2_vbi ; 767 double HSM2_vfbcl; 768 double HSM2_vfbclp; 769 double HSM2_nsubc ; 770 double HSM2_parl2 ; 771 double HSM2_lp ; 772 double HSM2_nsubp ; 773 double HSM2_nsubpl ; 774 double HSM2_nsubpdlt; 775 double HSM2_nsubpfac ; 776 double HSM2_nsubpw ; 777 double HSM2_nsubpwp ; 778 double HSM2_scp1 ; 779 double HSM2_scp2 ; 780 double HSM2_scp3 ; 781 double HSM2_sc1 ; 782 double HSM2_sc2 ; 783 double HSM2_sc3 ; 784 double HSM2_sc4 ; 785 double HSM2_pgd1 ; 786 double HSM2_pgd2 ; 787 //double HSM2_pgd3 ; 788 double HSM2_pgd4 ; 789 double HSM2_ndep ; 790 double HSM2_ndepl ; 791 double HSM2_ndeplp ; 792 double HSM2_ndepw ; 793 double HSM2_ndepwp ; 794 double HSM2_ninv ; 795 double HSM2_ninvd ; 796 double HSM2_ninvdl ; 797 double HSM2_ninvdlp ; 798 double HSM2_muecb0 ; 799 double HSM2_muecb1 ; 800 double HSM2_mueph1 ; 801 double HSM2_mueph0 ; 802 double HSM2_muephw ; 803 double HSM2_muepwp ; 804 double HSM2_muepwd ; 805 double HSM2_muephl ; 806 double HSM2_mueplp ; 807 double HSM2_muepld ; 808 double HSM2_muephs ; 809 double HSM2_muepsp ; 810 double HSM2_vtmp ; 811 double HSM2_wvth0 ; 812 double HSM2_muesr1 ; 813 double HSM2_muesr0 ; 814 double HSM2_muesrw ; 815 double HSM2_mueswp ; 816 double HSM2_muesrl ; 817 double HSM2_mueslp ; 818 double HSM2_bb ; 819 double HSM2_sub1 ; 820 double HSM2_sub2 ; 821 double HSM2_svgs ; 822 double HSM2_svbs ; 823 double HSM2_svbsl ; 824 double HSM2_svds ; 825 double HSM2_slg ; 826 double HSM2_sub1l ; 827 double HSM2_sub2l ; 828 double HSM2_svgsl ; 829 double HSM2_svgslp ; 830 double HSM2_svgswp ; 831 double HSM2_svgsw ; 832 double HSM2_svbslp ; 833 double HSM2_slgl ; 834 double HSM2_slglp ; 835 double HSM2_sub1lp ; 836 double HSM2_nsti ; 837 double HSM2_wsti ; 838 double HSM2_wstil ; 839 double HSM2_wstilp ; 840 double HSM2_wstiw ; 841 double HSM2_wstiwp ; 842 double HSM2_scsti1 ; 843 double HSM2_scsti2 ; 844 double HSM2_vthsti ; 845 double HSM2_vdsti ; 846 double HSM2_muesti1 ; 847 double HSM2_muesti2 ; 848 double HSM2_muesti3 ; 849 double HSM2_nsubpsti1 ; 850 double HSM2_nsubpsti2 ; 851 double HSM2_nsubcsti1; 852 double HSM2_nsubcsti2; 853 double HSM2_nsubcsti3; 854 double HSM2_nsubpsti3 ; 855 double HSM2_lpext ; 856 double HSM2_npext ; 857 double HSM2_npextw ; 858 double HSM2_npextwp ; 859 double HSM2_scp22 ; 860 double HSM2_scp21 ; 861 double HSM2_bs1 ; 862 double HSM2_bs2 ; 863 double HSM2_cgso ; 864 double HSM2_cgdo ; 865 double HSM2_cgbo ; 866 double HSM2_tpoly ; 867 double HSM2_js0 ; 868 double HSM2_js0sw ; 869 double HSM2_nj ; 870 double HSM2_njsw ; 871 double HSM2_xti ; 872 double HSM2_cj ; 873 double HSM2_cjsw ; 874 double HSM2_cjswg ; 875 double HSM2_mj ; 876 double HSM2_mjsw ; 877 double HSM2_mjswg ; 878 double HSM2_xti2 ; 879 double HSM2_cisb ; 880 double HSM2_cvb ; 881 double HSM2_ctemp ; 882 double HSM2_cisbk ; 883 double HSM2_cvbk ; 884 double HSM2_divx ; 885 double HSM2_pb ; 886 double HSM2_pbsw ; 887 double HSM2_pbswg ; 888 double HSM2_tcjbd ; 889 double HSM2_tcjbs ; 890 double HSM2_tcjbdsw ; 891 double HSM2_tcjbssw ; 892 double HSM2_tcjbdswg ; 893 double HSM2_tcjbsswg ; 894 895 double HSM2_clm1 ; 896 double HSM2_clm2 ; 897 double HSM2_clm3 ; 898 double HSM2_clm5 ; 899 double HSM2_clm6 ; 900 double HSM2_muetmp ; 901 double HSM2_vover ; 902 double HSM2_voverp ; 903 double HSM2_vovers ; 904 double HSM2_voversp ; 905 double HSM2_wfc ; 906 double HSM2_nsubcw ; 907 double HSM2_nsubcwp ; 908 double HSM2_nsubcmax ; 909 double HSM2_qme1 ; 910 double HSM2_qme2 ; 911 double HSM2_qme3 ; 912 double HSM2_gidl1 ; 913 double HSM2_gidl2 ; 914 double HSM2_gidl3 ; 915 double HSM2_gidl4 ; 916 double HSM2_gidl6; 917 double HSM2_gidl7; 918 double HSM2_gidl5 ; 919 double HSM2_gleak1 ; 920 double HSM2_gleak2 ; 921 double HSM2_gleak3 ; 922 double HSM2_gleak4 ; 923 double HSM2_gleak5 ; 924 double HSM2_gleak6 ; 925 double HSM2_gleak7 ; 926 double HSM2_glksd1 ; 927 double HSM2_glksd2 ; 928 double HSM2_glksd3 ; 929 double HSM2_glkb1 ; 930 double HSM2_glkb2 ; 931 double HSM2_glkb3 ; 932 double HSM2_egig; 933 double HSM2_igtemp2; 934 double HSM2_igtemp3; 935 double HSM2_vzadd0 ; 936 double HSM2_pzadd0 ; 937 double HSM2_nftrp ; 938 double HSM2_nfalp ; 939 double HSM2_falph ; 940 double HSM2_cit ; 941 double HSM2_kappa ; 942 double HSM2_vdiffj ; 943 double HSM2_dly1 ; 944 double HSM2_dly2 ; 945 double HSM2_dly3; 946 double HSM2_tnom ; 947 double HSM2_ovslp ; 948 double HSM2_ovmag ; 949 /* substrate resistances */ 950 double HSM2_gbmin; 951 double HSM2_rbpb ; 952 double HSM2_rbpd ; 953 double HSM2_rbps ; 954 double HSM2_rbdb ; 955 double HSM2_rbsb ; 956 /* IBPC */ 957 double HSM2_ibpc1 ; 958 double HSM2_ibpc2 ; 959 /* DFM */ 960 double HSM2_mphdfm ; 961 962 double HSM2_ptl, HSM2_ptp, HSM2_pt2, HSM2_ptlp, HSM2_gdl, HSM2_gdlp ; 963 964 double HSM2_gdld ; 965 double HSM2_pt4 ; 966 double HSM2_pt4p ; 967 double HSM2_muephl2 ; 968 double HSM2_mueplp2 ; 969 double HSM2_nsubcw2 ; 970 double HSM2_nsubcwp2 ; 971 double HSM2_muephw2 ; 972 double HSM2_muepwp2 ; 973 974 /* variables for WPE */ 975 double HSM2_web ; 976 double HSM2_wec ; 977 double HSM2_nsubcwpe ; 978 double HSM2_npextwpe ; 979 double HSM2_nsubpwpe ; 980 /* for Ps0_min */ 981 double HSM2_Vgsmin ; 982 double HSM2_sc3Vbs ; /* SC3 clamping */ 983 double HSM2_byptol ; /* bypass control */ 984 double HSM2_muecb0lp; 985 double HSM2_muecb1lp; 986 987 /* Depletion Mode MOSFET */ 988 double HSM2_ndepm ; 989 double HSM2_ndepml ; 990 double HSM2_ndepmlp ; 991 double HSM2_tndep ; 992 double HSM2_depleak ; 993 double HSM2_depleakl ; 994 double HSM2_depleaklp ; 995 double HSM2_depmue0; 996 double HSM2_depmue0l; 997 double HSM2_depmue0lp; 998 double HSM2_depmue1; 999 double HSM2_depmue1l; 1000 double HSM2_depmue1lp; 1001 double HSM2_depmueback0; 1002 double HSM2_depmueback0l; 1003 double HSM2_depmueback0lp; 1004 double HSM2_depmueback1; 1005 double HSM2_depmueback1l; 1006 double HSM2_depmueback1lp; 1007 double HSM2_depmueph0; 1008 double HSM2_depmueph1; 1009 double HSM2_depvmax; 1010 double HSM2_depvmaxl; 1011 double HSM2_depvmaxlp; 1012 double HSM2_depvdsef1; 1013 double HSM2_depvdsef1l; 1014 double HSM2_depvdsef1lp; 1015 double HSM2_depvdsef2; 1016 double HSM2_depvdsef2l; 1017 double HSM2_depvdsef2lp; 1018 double HSM2_depbb; 1019 double HSM2_depmuetmp; 1020 double HSM2_depeta ; 1021 1022 /* binning parameters */ 1023 double HSM2_lmin ; 1024 double HSM2_lmax ; 1025 double HSM2_wmin ; 1026 double HSM2_wmax ; 1027 double HSM2_lbinn ; 1028 double HSM2_wbinn ; 1029 1030 /* Length dependence */ 1031 double HSM2_lvmax ; 1032 double HSM2_lbgtmp1 ; 1033 double HSM2_lbgtmp2 ; 1034 double HSM2_leg0 ; 1035 double HSM2_llover ; 1036 double HSM2_lvfbover ; 1037 double HSM2_lnover ; 1038 double HSM2_lwl2 ; 1039 double HSM2_lvfbc ; 1040 double HSM2_lnsubc ; 1041 double HSM2_lnsubp ; 1042 double HSM2_lscp1 ; 1043 double HSM2_lscp2 ; 1044 double HSM2_lscp3 ; 1045 double HSM2_lsc1 ; 1046 double HSM2_lsc2 ; 1047 double HSM2_lsc3 ; 1048 double HSM2_lsc4 ; 1049 double HSM2_lpgd1 ; 1050 //double HSM2_lpgd3 ; 1051 double HSM2_lndep ; 1052 double HSM2_lninv ; 1053 double HSM2_lmuecb0 ; 1054 double HSM2_lmuecb1 ; 1055 double HSM2_lmueph1 ; 1056 double HSM2_lvtmp ; 1057 double HSM2_lwvth0 ; 1058 double HSM2_lmuesr1 ; 1059 double HSM2_lmuetmp ; 1060 double HSM2_lsub1 ; 1061 double HSM2_lsub2 ; 1062 double HSM2_lsvds ; 1063 double HSM2_lsvbs ; 1064 double HSM2_lsvgs ; 1065 double HSM2_lnsti ; 1066 double HSM2_lwsti ; 1067 double HSM2_lscsti1 ; 1068 double HSM2_lscsti2 ; 1069 double HSM2_lvthsti ; 1070 double HSM2_lmuesti1 ; 1071 double HSM2_lmuesti2 ; 1072 double HSM2_lmuesti3 ; 1073 double HSM2_lnsubpsti1 ; 1074 double HSM2_lnsubpsti2 ; 1075 double HSM2_lnsubcsti1; 1076 double HSM2_lnsubcsti2; 1077 double HSM2_lnsubcsti3; 1078 double HSM2_lnsubpsti3 ; 1079 double HSM2_lcgso ; 1080 double HSM2_lcgdo ; 1081 double HSM2_ljs0 ; 1082 double HSM2_ljs0sw ; 1083 double HSM2_lnj ; 1084 double HSM2_lcisbk ; 1085 double HSM2_lclm1 ; 1086 double HSM2_lclm2 ; 1087 double HSM2_lclm3 ; 1088 double HSM2_lwfc ; 1089 double HSM2_lgidl1 ; 1090 double HSM2_lgidl2 ; 1091 double HSM2_lgleak1 ; 1092 double HSM2_lgleak2 ; 1093 double HSM2_lgleak3 ; 1094 double HSM2_lgleak6 ; 1095 double HSM2_lglksd1 ; 1096 double HSM2_lglksd2 ; 1097 double HSM2_lglkb1 ; 1098 double HSM2_lglkb2 ; 1099 double HSM2_lnftrp ; 1100 double HSM2_lnfalp ; 1101 double HSM2_lvdiffj ; 1102 double HSM2_libpc1 ; 1103 double HSM2_libpc2 ; 1104 1105 /* Width dependence */ 1106 double HSM2_wvmax ; 1107 double HSM2_wbgtmp1 ; 1108 double HSM2_wbgtmp2 ; 1109 double HSM2_weg0 ; 1110 double HSM2_wlover ; 1111 double HSM2_wvfbover ; 1112 double HSM2_wnover ; 1113 double HSM2_wwl2 ; 1114 double HSM2_wvfbc ; 1115 double HSM2_wnsubc ; 1116 double HSM2_wnsubp ; 1117 double HSM2_wscp1 ; 1118 double HSM2_wscp2 ; 1119 double HSM2_wscp3 ; 1120 double HSM2_wsc1 ; 1121 double HSM2_wsc2 ; 1122 double HSM2_wsc3 ; 1123 double HSM2_wsc4 ; 1124 double HSM2_wpgd1 ; 1125 //double HSM2_wpgd3 ; 1126 double HSM2_wndep ; 1127 double HSM2_wninv ; 1128 double HSM2_wmuecb0 ; 1129 double HSM2_wmuecb1 ; 1130 double HSM2_wmueph1 ; 1131 double HSM2_wvtmp ; 1132 double HSM2_wwvth0 ; 1133 double HSM2_wmuesr1 ; 1134 double HSM2_wmuetmp ; 1135 double HSM2_wsub1 ; 1136 double HSM2_wsub2 ; 1137 double HSM2_wsvds ; 1138 double HSM2_wsvbs ; 1139 double HSM2_wsvgs ; 1140 double HSM2_wnsti ; 1141 double HSM2_wwsti ; 1142 double HSM2_wscsti1 ; 1143 double HSM2_wscsti2 ; 1144 double HSM2_wvthsti ; 1145 double HSM2_wmuesti1 ; 1146 double HSM2_wmuesti2 ; 1147 double HSM2_wmuesti3 ; 1148 double HSM2_wnsubpsti1 ; 1149 double HSM2_wnsubpsti2 ; 1150 double HSM2_wnsubcsti1; 1151 double HSM2_wnsubcsti2; 1152 double HSM2_wnsubcsti3; 1153 double HSM2_wnsubpsti3 ; 1154 double HSM2_wcgso ; 1155 double HSM2_wcgdo ; 1156 double HSM2_wjs0 ; 1157 double HSM2_wjs0sw ; 1158 double HSM2_wnj ; 1159 double HSM2_wcisbk ; 1160 double HSM2_wclm1 ; 1161 double HSM2_wclm2 ; 1162 double HSM2_wclm3 ; 1163 double HSM2_wwfc ; 1164 double HSM2_wgidl1 ; 1165 double HSM2_wgidl2 ; 1166 double HSM2_wgleak1 ; 1167 double HSM2_wgleak2 ; 1168 double HSM2_wgleak3 ; 1169 double HSM2_wgleak6 ; 1170 double HSM2_wglksd1 ; 1171 double HSM2_wglksd2 ; 1172 double HSM2_wglkb1 ; 1173 double HSM2_wglkb2 ; 1174 double HSM2_wnftrp ; 1175 double HSM2_wnfalp ; 1176 double HSM2_wvdiffj ; 1177 double HSM2_wibpc1 ; 1178 double HSM2_wibpc2 ; 1179 1180 /* Cross-term dependence */ 1181 double HSM2_pvmax ; 1182 double HSM2_pbgtmp1 ; 1183 double HSM2_pbgtmp2 ; 1184 double HSM2_peg0 ; 1185 double HSM2_plover ; 1186 double HSM2_pvfbover ; 1187 double HSM2_pnover ; 1188 double HSM2_pwl2 ; 1189 double HSM2_pvfbc ; 1190 double HSM2_pnsubc ; 1191 double HSM2_pnsubp ; 1192 double HSM2_pscp1 ; 1193 double HSM2_pscp2 ; 1194 double HSM2_pscp3 ; 1195 double HSM2_psc1 ; 1196 double HSM2_psc2 ; 1197 double HSM2_psc3 ; 1198 double HSM2_psc4 ; 1199 double HSM2_ppgd1 ; 1200 //double HSM2_ppgd3 ; 1201 double HSM2_pndep ; 1202 double HSM2_pninv ; 1203 double HSM2_pmuecb0 ; 1204 double HSM2_pmuecb1 ; 1205 double HSM2_pmueph1 ; 1206 double HSM2_pvtmp ; 1207 double HSM2_pwvth0 ; 1208 double HSM2_pmuesr1 ; 1209 double HSM2_pmuetmp ; 1210 double HSM2_psub1 ; 1211 double HSM2_psub2 ; 1212 double HSM2_psvds ; 1213 double HSM2_psvbs ; 1214 double HSM2_psvgs ; 1215 double HSM2_pnsti ; 1216 double HSM2_pwsti ; 1217 double HSM2_pscsti1 ; 1218 double HSM2_pscsti2 ; 1219 double HSM2_pvthsti ; 1220 double HSM2_pmuesti1 ; 1221 double HSM2_pmuesti2 ; 1222 double HSM2_pmuesti3 ; 1223 double HSM2_pnsubpsti1 ; 1224 double HSM2_pnsubpsti2 ; 1225 double HSM2_pnsubcsti1; 1226 double HSM2_pnsubcsti2; 1227 double HSM2_pnsubcsti3; 1228 double HSM2_pnsubpsti3 ; 1229 double HSM2_pcgso ; 1230 double HSM2_pcgdo ; 1231 double HSM2_pjs0 ; 1232 double HSM2_pjs0sw ; 1233 double HSM2_pnj ; 1234 double HSM2_pcisbk ; 1235 double HSM2_pclm1 ; 1236 double HSM2_pclm2 ; 1237 double HSM2_pclm3 ; 1238 double HSM2_pwfc ; 1239 double HSM2_pgidl1 ; 1240 double HSM2_pgidl2 ; 1241 double HSM2_pgleak1 ; 1242 double HSM2_pgleak2 ; 1243 double HSM2_pgleak3 ; 1244 double HSM2_pgleak6 ; 1245 double HSM2_pglksd1 ; 1246 double HSM2_pglksd2 ; 1247 double HSM2_pglkb1 ; 1248 double HSM2_pglkb2 ; 1249 double HSM2_pnftrp ; 1250 double HSM2_pnfalp ; 1251 double HSM2_pvdiffj ; 1252 double HSM2_pibpc1 ; 1253 double HSM2_pibpc2 ; 1254 1255 /* internal variables */ 1256 double HSM2_vcrit ; 1257 int HSM2_flg_qme ; 1258 double HSM2_qme12 ; 1259 double HSM2_ktnom ; 1260 int HSM2_bypass_enable ; 1261 //int HSM2_subversion ; 1262 //int HSM2_revision ; 1263 1264 double HSM2vgsMax; 1265 double HSM2vgdMax; 1266 double HSM2vgbMax; 1267 double HSM2vdsMax; 1268 double HSM2vbsMax; 1269 double HSM2vbdMax; 1270 double HSM2vgsrMax; 1271 double HSM2vgdrMax; 1272 double HSM2vgbrMax; 1273 double HSM2vbsrMax; 1274 double HSM2vbdrMax; 1275 1276 HSM2modelMKSParam modelMKS ; /* unit-converted parameters */ 1277 1278 #ifdef USE_OMP 1279 int HSM2InstCount; 1280 struct sHSM2instance **HSM2InstanceArray; 1281 #endif 1282 1283 /* flag for model */ 1284 unsigned HSM2_type_Given :1; 1285 unsigned HSM2_level_Given :1; 1286 unsigned HSM2_info_Given :1; 1287 unsigned HSM2_noise_Given :1; 1288 unsigned HSM2_version_Given :1; 1289 unsigned HSM2_show_Given :1; 1290 unsigned HSM2_corsrd_Given :1; 1291 unsigned HSM2_corg_Given :1; 1292 unsigned HSM2_coiprv_Given :1; 1293 unsigned HSM2_copprv_Given :1; 1294 unsigned HSM2_coadov_Given :1; 1295 unsigned HSM2_coisub_Given :1; 1296 unsigned HSM2_coiigs_Given :1; 1297 unsigned HSM2_cogidl_Given :1; 1298 unsigned HSM2_coovlp_Given :1; 1299 unsigned HSM2_coflick_Given :1; 1300 unsigned HSM2_coisti_Given :1; 1301 unsigned HSM2_conqs_Given :1; 1302 unsigned HSM2_corbnet_Given :1; 1303 unsigned HSM2_cothrml_Given :1; 1304 unsigned HSM2_coign_Given :1; /* induced gate noise */ 1305 unsigned HSM2_codfm_Given :1; /* DFM */ 1306 unsigned HSM2_corecip_Given :1; 1307 unsigned HSM2_coqy_Given :1; 1308 unsigned HSM2_coqovsm_Given :1; 1309 unsigned HSM2_coerrrep_Given :1; 1310 unsigned HSM2_codep_Given :1; 1311 unsigned HSM2_coddlt_Given :1; 1312 unsigned HSM2_kappa_Given :1; 1313 unsigned HSM2_vdiffj_Given :1; 1314 unsigned HSM2_vmax_Given :1; 1315 unsigned HSM2_bgtmp1_Given :1; 1316 unsigned HSM2_bgtmp2_Given :1; 1317 unsigned HSM2_eg0_Given :1; 1318 unsigned HSM2_tox_Given :1; 1319 unsigned HSM2_xld_Given :1; 1320 unsigned HSM2_lover_Given :1; 1321 unsigned HSM2_ddltmax_Given :1; /* Vdseff */ 1322 unsigned HSM2_ddltslp_Given :1; /* Vdseff */ 1323 unsigned HSM2_ddltict_Given :1; /* Vdseff */ 1324 unsigned HSM2_vfbover_Given :1; 1325 unsigned HSM2_nover_Given :1; 1326 unsigned HSM2_xwd_Given :1; 1327 unsigned HSM2_xl_Given :1; 1328 unsigned HSM2_xw_Given :1; 1329 unsigned HSM2_saref_Given :1; 1330 unsigned HSM2_sbref_Given :1; 1331 unsigned HSM2_ll_Given :1; 1332 unsigned HSM2_lld_Given :1; 1333 unsigned HSM2_lln_Given :1; 1334 unsigned HSM2_wl_Given :1; 1335 unsigned HSM2_wl1_Given :1; 1336 unsigned HSM2_wl1p_Given :1; 1337 unsigned HSM2_wl2_Given :1; 1338 unsigned HSM2_wl2p_Given :1; 1339 unsigned HSM2_wld_Given :1; 1340 unsigned HSM2_wln_Given :1; 1341 unsigned HSM2_xqy_Given :1; 1342 unsigned HSM2_xqy1_Given :1; 1343 unsigned HSM2_xqy2_Given :1; 1344 unsigned HSM2_qyrat_Given :1; 1345 unsigned HSM2_rs_Given :1; 1346 unsigned HSM2_rd_Given :1; 1347 unsigned HSM2_rsh_Given :1; 1348 unsigned HSM2_rshg_Given :1; 1349 /* unsigned HSM2_ngcon_Given :1; */ 1350 /* unsigned HSM2_xgw_Given :1; */ 1351 /* unsigned HSM2_xgl_Given :1; */ 1352 /* unsigned HSM2_nf_Given :1; */ 1353 unsigned HSM2_vfbc_Given :1; 1354 unsigned HSM2_vbi_Given :1; 1355 unsigned HSM2_vfbcl_Given :1; 1356 unsigned HSM2_vfbclp_Given :1; 1357 unsigned HSM2_nsubc_Given :1; 1358 unsigned HSM2_parl2_Given :1; 1359 unsigned HSM2_lp_Given :1; 1360 unsigned HSM2_nsubp_Given :1; 1361 unsigned HSM2_nsubpl_Given :1; 1362 unsigned HSM2_nsubpdlt_Given :1; 1363 unsigned HSM2_nsubpfac_Given :1; 1364 unsigned HSM2_nsubpw_Given :1; 1365 unsigned HSM2_nsubpwp_Given :1; 1366 unsigned HSM2_scp1_Given :1; 1367 unsigned HSM2_scp2_Given :1; 1368 unsigned HSM2_scp3_Given :1; 1369 unsigned HSM2_sc1_Given :1; 1370 unsigned HSM2_sc2_Given :1; 1371 unsigned HSM2_sc3_Given :1; 1372 unsigned HSM2_sc4_Given :1; 1373 unsigned HSM2_pgd1_Given :1; 1374 unsigned HSM2_pgd2_Given :1; 1375 //unsigned HSM2_pgd3_Given :1; 1376 unsigned HSM2_pgd4_Given :1; 1377 unsigned HSM2_ndep_Given :1; 1378 unsigned HSM2_ndepl_Given :1; 1379 unsigned HSM2_ndeplp_Given :1; 1380 unsigned HSM2_ndepw_Given :1; 1381 unsigned HSM2_ndepwp_Given :1; 1382 unsigned HSM2_ninv_Given :1; 1383 unsigned HSM2_ninvd_Given :1; 1384 unsigned HSM2_ninvdl_Given :1; 1385 unsigned HSM2_ninvdlp_Given :1; 1386 unsigned HSM2_muecb0_Given :1; 1387 unsigned HSM2_muecb1_Given :1; 1388 unsigned HSM2_mueph1_Given :1; 1389 unsigned HSM2_mueph0_Given :1; 1390 unsigned HSM2_muephw_Given :1; 1391 unsigned HSM2_muepwp_Given :1; 1392 unsigned HSM2_muepwd_Given :1; 1393 unsigned HSM2_muephl_Given :1; 1394 unsigned HSM2_mueplp_Given :1; 1395 unsigned HSM2_muepld_Given :1; 1396 unsigned HSM2_muephs_Given :1; 1397 unsigned HSM2_muepsp_Given :1; 1398 unsigned HSM2_vtmp_Given :1; 1399 unsigned HSM2_wvth0_Given :1; 1400 unsigned HSM2_muesr1_Given :1; 1401 unsigned HSM2_muesr0_Given :1; 1402 unsigned HSM2_muesrl_Given :1; 1403 unsigned HSM2_mueslp_Given :1; 1404 unsigned HSM2_muesrw_Given :1; 1405 unsigned HSM2_mueswp_Given :1; 1406 unsigned HSM2_bb_Given :1; 1407 unsigned HSM2_sub1_Given :1; 1408 unsigned HSM2_sub2_Given :1; 1409 unsigned HSM2_svgs_Given :1; 1410 unsigned HSM2_svbs_Given :1; 1411 unsigned HSM2_svbsl_Given :1; 1412 unsigned HSM2_svds_Given :1; 1413 unsigned HSM2_slg_Given :1; 1414 unsigned HSM2_sub1l_Given :1; 1415 unsigned HSM2_sub2l_Given :1; 1416 unsigned HSM2_svgsl_Given :1; 1417 unsigned HSM2_svgslp_Given :1; 1418 unsigned HSM2_svgswp_Given :1; 1419 unsigned HSM2_svgsw_Given :1; 1420 unsigned HSM2_svbslp_Given :1; 1421 unsigned HSM2_slgl_Given :1; 1422 unsigned HSM2_slglp_Given :1; 1423 unsigned HSM2_sub1lp_Given :1; 1424 unsigned HSM2_nsti_Given :1; 1425 unsigned HSM2_wsti_Given :1; 1426 unsigned HSM2_wstil_Given :1; 1427 unsigned HSM2_wstilp_Given :1; 1428 unsigned HSM2_wstiw_Given :1; 1429 unsigned HSM2_wstiwp_Given :1; 1430 unsigned HSM2_scsti1_Given :1; 1431 unsigned HSM2_scsti2_Given :1; 1432 unsigned HSM2_vthsti_Given :1; 1433 unsigned HSM2_vdsti_Given :1; 1434 unsigned HSM2_muesti1_Given :1; 1435 unsigned HSM2_muesti2_Given :1; 1436 unsigned HSM2_muesti3_Given :1; 1437 unsigned HSM2_nsubpsti1_Given :1; 1438 unsigned HSM2_nsubpsti2_Given :1; 1439 unsigned HSM2_nsubcsti1_Given :1; 1440 unsigned HSM2_nsubcsti2_Given :1; 1441 unsigned HSM2_nsubcsti3_Given :1; 1442 unsigned HSM2_nsubpsti3_Given :1; 1443 unsigned HSM2_lpext_Given :1; 1444 unsigned HSM2_npext_Given :1; 1445 unsigned HSM2_npextw_Given :1; 1446 unsigned HSM2_npextwp_Given :1; 1447 unsigned HSM2_scp22_Given :1; 1448 unsigned HSM2_scp21_Given :1; 1449 unsigned HSM2_bs1_Given :1; 1450 unsigned HSM2_bs2_Given :1; 1451 unsigned HSM2_cgso_Given :1; 1452 unsigned HSM2_cgdo_Given :1; 1453 unsigned HSM2_cgbo_Given :1; 1454 unsigned HSM2_tpoly_Given :1; 1455 unsigned HSM2_js0_Given :1; 1456 unsigned HSM2_js0sw_Given :1; 1457 unsigned HSM2_nj_Given :1; 1458 unsigned HSM2_njsw_Given :1; 1459 unsigned HSM2_xti_Given :1; 1460 unsigned HSM2_cj_Given :1; 1461 unsigned HSM2_cjsw_Given :1; 1462 unsigned HSM2_cjswg_Given :1; 1463 unsigned HSM2_mj_Given :1; 1464 unsigned HSM2_mjsw_Given :1; 1465 unsigned HSM2_mjswg_Given :1; 1466 unsigned HSM2_xti2_Given :1; 1467 unsigned HSM2_cisb_Given :1; 1468 unsigned HSM2_cvb_Given :1; 1469 unsigned HSM2_ctemp_Given :1; 1470 unsigned HSM2_cisbk_Given :1; 1471 unsigned HSM2_cvbk_Given :1; 1472 unsigned HSM2_divx_Given :1; 1473 unsigned HSM2_pb_Given :1; 1474 unsigned HSM2_pbsw_Given :1; 1475 unsigned HSM2_pbswg_Given :1; 1476 unsigned HSM2_tcjbd_Given :1; 1477 unsigned HSM2_tcjbs_Given :1; 1478 unsigned HSM2_tcjbdsw_Given :1; 1479 unsigned HSM2_tcjbssw_Given :1; 1480 unsigned HSM2_tcjbdswg_Given :1; 1481 unsigned HSM2_tcjbsswg_Given :1; 1482 1483 unsigned HSM2_clm1_Given :1; 1484 unsigned HSM2_clm2_Given :1; 1485 unsigned HSM2_clm3_Given :1; 1486 unsigned HSM2_clm5_Given :1; 1487 unsigned HSM2_clm6_Given :1; 1488 unsigned HSM2_muetmp_Given :1; 1489 unsigned HSM2_vover_Given :1; 1490 unsigned HSM2_voverp_Given :1; 1491 unsigned HSM2_vovers_Given :1; 1492 unsigned HSM2_voversp_Given :1; 1493 unsigned HSM2_wfc_Given :1; 1494 unsigned HSM2_nsubcw_Given :1; 1495 unsigned HSM2_nsubcwp_Given :1; 1496 unsigned HSM2_nsubcmax_Given :1; 1497 unsigned HSM2_qme1_Given :1; 1498 unsigned HSM2_qme2_Given :1; 1499 unsigned HSM2_qme3_Given :1; 1500 unsigned HSM2_gidl1_Given :1; 1501 unsigned HSM2_gidl2_Given :1; 1502 unsigned HSM2_gidl3_Given :1; 1503 unsigned HSM2_gidl4_Given :1; 1504 unsigned HSM2_gidl6_Given :1; 1505 unsigned HSM2_gidl7_Given :1; 1506 unsigned HSM2_gidl5_Given :1; 1507 unsigned HSM2_gleak1_Given :1; 1508 unsigned HSM2_gleak2_Given :1; 1509 unsigned HSM2_gleak3_Given :1; 1510 unsigned HSM2_gleak4_Given :1; 1511 unsigned HSM2_gleak5_Given :1; 1512 unsigned HSM2_gleak6_Given :1; 1513 unsigned HSM2_gleak7_Given :1; 1514 unsigned HSM2_glksd1_Given :1; 1515 unsigned HSM2_glksd2_Given :1; 1516 unsigned HSM2_glksd3_Given :1; 1517 unsigned HSM2_glkb1_Given :1; 1518 unsigned HSM2_glkb2_Given :1; 1519 unsigned HSM2_glkb3_Given :1; 1520 unsigned HSM2_egig_Given :1; 1521 unsigned HSM2_igtemp2_Given :1; 1522 unsigned HSM2_igtemp3_Given :1; 1523 unsigned HSM2_vzadd0_Given :1; 1524 unsigned HSM2_pzadd0_Given :1; 1525 unsigned HSM2_nftrp_Given :1; 1526 unsigned HSM2_nfalp_Given :1; 1527 unsigned HSM2_cit_Given :1; 1528 unsigned HSM2_falph_Given :1; 1529 unsigned HSM2_dly1_Given :1; 1530 unsigned HSM2_dly2_Given :1; 1531 unsigned HSM2_dly3_Given :1; 1532 unsigned HSM2_tnom_Given :1; 1533 unsigned HSM2_ovslp_Given :1; 1534 unsigned HSM2_ovmag_Given :1; 1535 unsigned HSM2_gbmin_Given :1; 1536 unsigned HSM2_rbpb_Given :1; 1537 unsigned HSM2_rbpd_Given :1; 1538 unsigned HSM2_rbps_Given :1; 1539 unsigned HSM2_rbdb_Given :1; 1540 unsigned HSM2_rbsb_Given :1; 1541 unsigned HSM2_ibpc1_Given :1; 1542 unsigned HSM2_ibpc2_Given :1; 1543 unsigned HSM2_mphdfm_Given :1; 1544 1545 unsigned HSM2_ptl_Given :1; 1546 unsigned HSM2_ptp_Given :1; 1547 unsigned HSM2_pt2_Given :1; 1548 unsigned HSM2_ptlp_Given :1; 1549 unsigned HSM2_gdl_Given :1; 1550 unsigned HSM2_gdlp_Given :1; 1551 1552 unsigned HSM2_gdld_Given :1; 1553 unsigned HSM2_pt4_Given :1; 1554 unsigned HSM2_pt4p_Given :1; 1555 unsigned HSM2_muephl2_Given :1; 1556 unsigned HSM2_mueplp2_Given :1; 1557 unsigned HSM2_nsubcw2_Given :1; 1558 unsigned HSM2_nsubcwp2_Given :1; 1559 unsigned HSM2_muephw2_Given :1; 1560 unsigned HSM2_muepwp2_Given :1; 1561 1562 /* val set flag for WPE */ 1563 unsigned HSM2_web_Given :1; 1564 unsigned HSM2_wec_Given :1; 1565 unsigned HSM2_nsubcwpe_Given :1; 1566 unsigned HSM2_npextwpe_Given :1; 1567 unsigned HSM2_nsubpwpe_Given :1; 1568 unsigned HSM2_Vgsmin_Given :1; 1569 unsigned HSM2_sc3Vbs_Given :1; 1570 unsigned HSM2_byptol_Given :1; 1571 unsigned HSM2_muecb0lp_Given :1; 1572 unsigned HSM2_muecb1lp_Given :1; 1573 1574 /* Depletion Mode MOSFET */ 1575 unsigned HSM2_ndepm_Given :1; 1576 unsigned HSM2_ndepml_Given :1; 1577 unsigned HSM2_ndepmlp_Given :1; 1578 unsigned HSM2_tndep_Given :1; 1579 unsigned HSM2_depleak_Given :1; 1580 unsigned HSM2_depleakl_Given :1; 1581 unsigned HSM2_depleaklp_Given :1; 1582 unsigned HSM2_depmue0_Given :1; 1583 unsigned HSM2_depmue0l_Given :1; 1584 unsigned HSM2_depmue0lp_Given :1; 1585 unsigned HSM2_depmue1_Given :1; 1586 unsigned HSM2_depmue1l_Given :1; 1587 unsigned HSM2_depmue1lp_Given :1; 1588 unsigned HSM2_depmueback0_Given :1; 1589 unsigned HSM2_depmueback0l_Given :1; 1590 unsigned HSM2_depmueback0lp_Given :1; 1591 unsigned HSM2_depmueback1_Given :1; 1592 unsigned HSM2_depmueback1l_Given :1; 1593 unsigned HSM2_depmueback1lp_Given :1; 1594 unsigned HSM2_depmueph0_Given :1; 1595 unsigned HSM2_depmueph1_Given :1; 1596 unsigned HSM2_depvmax_Given :1; 1597 unsigned HSM2_depvmaxl_Given :1; 1598 unsigned HSM2_depvmaxlp_Given :1; 1599 unsigned HSM2_depvdsef1_Given :1; 1600 unsigned HSM2_depvdsef1l_Given :1; 1601 unsigned HSM2_depvdsef1lp_Given :1; 1602 unsigned HSM2_depvdsef2_Given :1; 1603 unsigned HSM2_depvdsef2l_Given :1; 1604 unsigned HSM2_depvdsef2lp_Given :1; 1605 unsigned HSM2_depbb_Given :1; 1606 unsigned HSM2_depmuetmp_Given :1; 1607 unsigned HSM2_depeta_Given :1; 1608 1609 /* binning parameters */ 1610 unsigned HSM2_lmin_Given :1; 1611 unsigned HSM2_lmax_Given :1; 1612 unsigned HSM2_wmin_Given :1; 1613 unsigned HSM2_wmax_Given :1; 1614 unsigned HSM2_lbinn_Given :1; 1615 unsigned HSM2_wbinn_Given :1; 1616 1617 /* Length dependence */ 1618 unsigned HSM2_lvmax_Given :1; 1619 unsigned HSM2_lbgtmp1_Given :1; 1620 unsigned HSM2_lbgtmp2_Given :1; 1621 unsigned HSM2_leg0_Given :1; 1622 unsigned HSM2_llover_Given :1; 1623 unsigned HSM2_lvfbover_Given :1; 1624 unsigned HSM2_lnover_Given :1; 1625 unsigned HSM2_lwl2_Given :1; 1626 unsigned HSM2_lvfbc_Given :1; 1627 unsigned HSM2_lnsubc_Given :1; 1628 unsigned HSM2_lnsubp_Given :1; 1629 unsigned HSM2_lscp1_Given :1; 1630 unsigned HSM2_lscp2_Given :1; 1631 unsigned HSM2_lscp3_Given :1; 1632 unsigned HSM2_lsc1_Given :1; 1633 unsigned HSM2_lsc2_Given :1; 1634 unsigned HSM2_lsc3_Given :1; 1635 unsigned HSM2_lsc4_Given :1; 1636 unsigned HSM2_lpgd1_Given :1; 1637 //unsigned HSM2_lpgd3_Given :1; 1638 unsigned HSM2_lndep_Given :1; 1639 unsigned HSM2_lninv_Given :1; 1640 unsigned HSM2_lmuecb0_Given :1; 1641 unsigned HSM2_lmuecb1_Given :1; 1642 unsigned HSM2_lmueph1_Given :1; 1643 unsigned HSM2_lvtmp_Given :1; 1644 unsigned HSM2_lwvth0_Given :1; 1645 unsigned HSM2_lmuesr1_Given :1; 1646 unsigned HSM2_lmuetmp_Given :1; 1647 unsigned HSM2_lsub1_Given :1; 1648 unsigned HSM2_lsub2_Given :1; 1649 unsigned HSM2_lsvds_Given :1; 1650 unsigned HSM2_lsvbs_Given :1; 1651 unsigned HSM2_lsvgs_Given :1; 1652 unsigned HSM2_lnsti_Given :1; 1653 unsigned HSM2_lwsti_Given :1; 1654 unsigned HSM2_lscsti1_Given :1; 1655 unsigned HSM2_lscsti2_Given :1; 1656 unsigned HSM2_lvthsti_Given :1; 1657 unsigned HSM2_lmuesti1_Given :1; 1658 unsigned HSM2_lmuesti2_Given :1; 1659 unsigned HSM2_lmuesti3_Given :1; 1660 unsigned HSM2_lnsubpsti1_Given :1; 1661 unsigned HSM2_lnsubpsti2_Given :1; 1662 unsigned HSM2_lnsubcsti1_Given :1; 1663 unsigned HSM2_lnsubcsti2_Given :1; 1664 unsigned HSM2_lnsubcsti3_Given :1; 1665 unsigned HSM2_lnsubpsti3_Given :1; 1666 unsigned HSM2_lcgso_Given :1; 1667 unsigned HSM2_lcgdo_Given :1; 1668 unsigned HSM2_ljs0_Given :1; 1669 unsigned HSM2_ljs0sw_Given :1; 1670 unsigned HSM2_lnj_Given :1; 1671 unsigned HSM2_lcisbk_Given :1; 1672 unsigned HSM2_lclm1_Given :1; 1673 unsigned HSM2_lclm2_Given :1; 1674 unsigned HSM2_lclm3_Given :1; 1675 unsigned HSM2_lwfc_Given :1; 1676 unsigned HSM2_lgidl1_Given :1; 1677 unsigned HSM2_lgidl2_Given :1; 1678 unsigned HSM2_lgleak1_Given :1; 1679 unsigned HSM2_lgleak2_Given :1; 1680 unsigned HSM2_lgleak3_Given :1; 1681 unsigned HSM2_lgleak6_Given :1; 1682 unsigned HSM2_lglksd1_Given :1; 1683 unsigned HSM2_lglksd2_Given :1; 1684 unsigned HSM2_lglkb1_Given :1; 1685 unsigned HSM2_lglkb2_Given :1; 1686 unsigned HSM2_lnftrp_Given :1; 1687 unsigned HSM2_lnfalp_Given :1; 1688 unsigned HSM2_lvdiffj_Given :1; 1689 unsigned HSM2_libpc1_Given :1; 1690 unsigned HSM2_libpc2_Given :1; 1691 1692 /* Width dependence */ 1693 unsigned HSM2_wvmax_Given :1; 1694 unsigned HSM2_wbgtmp1_Given :1; 1695 unsigned HSM2_wbgtmp2_Given :1; 1696 unsigned HSM2_weg0_Given :1; 1697 unsigned HSM2_wlover_Given :1; 1698 unsigned HSM2_wvfbover_Given :1; 1699 unsigned HSM2_wnover_Given :1; 1700 unsigned HSM2_wwl2_Given :1; 1701 unsigned HSM2_wvfbc_Given :1; 1702 unsigned HSM2_wnsubc_Given :1; 1703 unsigned HSM2_wnsubp_Given :1; 1704 unsigned HSM2_wscp1_Given :1; 1705 unsigned HSM2_wscp2_Given :1; 1706 unsigned HSM2_wscp3_Given :1; 1707 unsigned HSM2_wsc1_Given :1; 1708 unsigned HSM2_wsc2_Given :1; 1709 unsigned HSM2_wsc3_Given :1; 1710 unsigned HSM2_wsc4_Given :1; 1711 unsigned HSM2_wpgd1_Given :1; 1712 //unsigned HSM2_wpgd3_Given :1; 1713 unsigned HSM2_wndep_Given :1; 1714 unsigned HSM2_wninv_Given :1; 1715 unsigned HSM2_wmuecb0_Given :1; 1716 unsigned HSM2_wmuecb1_Given :1; 1717 unsigned HSM2_wmueph1_Given :1; 1718 unsigned HSM2_wvtmp_Given :1; 1719 unsigned HSM2_wwvth0_Given :1; 1720 unsigned HSM2_wmuesr1_Given :1; 1721 unsigned HSM2_wmuetmp_Given :1; 1722 unsigned HSM2_wsub1_Given :1; 1723 unsigned HSM2_wsub2_Given :1; 1724 unsigned HSM2_wsvds_Given :1; 1725 unsigned HSM2_wsvbs_Given :1; 1726 unsigned HSM2_wsvgs_Given :1; 1727 unsigned HSM2_wnsti_Given :1; 1728 unsigned HSM2_wwsti_Given :1; 1729 unsigned HSM2_wscsti1_Given :1; 1730 unsigned HSM2_wscsti2_Given :1; 1731 unsigned HSM2_wvthsti_Given :1; 1732 unsigned HSM2_wmuesti1_Given :1; 1733 unsigned HSM2_wmuesti2_Given :1; 1734 unsigned HSM2_wmuesti3_Given :1; 1735 unsigned HSM2_wnsubpsti1_Given :1; 1736 unsigned HSM2_wnsubpsti2_Given :1; 1737 unsigned HSM2_wnsubcsti1_Given :1; 1738 unsigned HSM2_wnsubcsti2_Given :1; 1739 unsigned HSM2_wnsubcsti3_Given :1; 1740 unsigned HSM2_wnsubpsti3_Given :1; 1741 unsigned HSM2_wcgso_Given :1; 1742 unsigned HSM2_wcgdo_Given :1; 1743 unsigned HSM2_wjs0_Given :1; 1744 unsigned HSM2_wjs0sw_Given :1; 1745 unsigned HSM2_wnj_Given :1; 1746 unsigned HSM2_wcisbk_Given :1; 1747 unsigned HSM2_wclm1_Given :1; 1748 unsigned HSM2_wclm2_Given :1; 1749 unsigned HSM2_wclm3_Given :1; 1750 unsigned HSM2_wwfc_Given :1; 1751 unsigned HSM2_wgidl1_Given :1; 1752 unsigned HSM2_wgidl2_Given :1; 1753 unsigned HSM2_wgleak1_Given :1; 1754 unsigned HSM2_wgleak2_Given :1; 1755 unsigned HSM2_wgleak3_Given :1; 1756 unsigned HSM2_wgleak6_Given :1; 1757 unsigned HSM2_wglksd1_Given :1; 1758 unsigned HSM2_wglksd2_Given :1; 1759 unsigned HSM2_wglkb1_Given :1; 1760 unsigned HSM2_wglkb2_Given :1; 1761 unsigned HSM2_wnftrp_Given :1; 1762 unsigned HSM2_wnfalp_Given :1; 1763 unsigned HSM2_wvdiffj_Given :1; 1764 unsigned HSM2_wibpc1_Given :1; 1765 unsigned HSM2_wibpc2_Given :1; 1766 1767 /* Cross-term dependence */ 1768 unsigned HSM2_pvmax_Given :1; 1769 unsigned HSM2_pbgtmp1_Given :1; 1770 unsigned HSM2_pbgtmp2_Given :1; 1771 unsigned HSM2_peg0_Given :1; 1772 unsigned HSM2_plover_Given :1; 1773 unsigned HSM2_pvfbover_Given :1; 1774 unsigned HSM2_pnover_Given :1; 1775 unsigned HSM2_pwl2_Given :1; 1776 unsigned HSM2_pvfbc_Given :1; 1777 unsigned HSM2_pnsubc_Given :1; 1778 unsigned HSM2_pnsubp_Given :1; 1779 unsigned HSM2_pscp1_Given :1; 1780 unsigned HSM2_pscp2_Given :1; 1781 unsigned HSM2_pscp3_Given :1; 1782 unsigned HSM2_psc1_Given :1; 1783 unsigned HSM2_psc2_Given :1; 1784 unsigned HSM2_psc3_Given :1; 1785 unsigned HSM2_psc4_Given :1; 1786 unsigned HSM2_ppgd1_Given :1; 1787 //unsigned HSM2_ppgd3_Given :1; 1788 unsigned HSM2_pndep_Given :1; 1789 unsigned HSM2_pninv_Given :1; 1790 unsigned HSM2_pmuecb0_Given :1; 1791 unsigned HSM2_pmuecb1_Given :1; 1792 unsigned HSM2_pmueph1_Given :1; 1793 unsigned HSM2_pvtmp_Given :1; 1794 unsigned HSM2_pwvth0_Given :1; 1795 unsigned HSM2_pmuesr1_Given :1; 1796 unsigned HSM2_pmuetmp_Given :1; 1797 unsigned HSM2_psub1_Given :1; 1798 unsigned HSM2_psub2_Given :1; 1799 unsigned HSM2_psvds_Given :1; 1800 unsigned HSM2_psvbs_Given :1; 1801 unsigned HSM2_psvgs_Given :1; 1802 unsigned HSM2_pnsti_Given :1; 1803 unsigned HSM2_pwsti_Given :1; 1804 unsigned HSM2_pscsti1_Given :1; 1805 unsigned HSM2_pscsti2_Given :1; 1806 unsigned HSM2_pvthsti_Given :1; 1807 unsigned HSM2_pmuesti1_Given :1; 1808 unsigned HSM2_pmuesti2_Given :1; 1809 unsigned HSM2_pmuesti3_Given :1; 1810 unsigned HSM2_pnsubpsti1_Given :1; 1811 unsigned HSM2_pnsubpsti2_Given :1; 1812 unsigned HSM2_pnsubcsti1_Given :1; 1813 unsigned HSM2_pnsubcsti2_Given :1; 1814 unsigned HSM2_pnsubcsti3_Given :1; 1815 unsigned HSM2_pnsubpsti3_Given :1; 1816 unsigned HSM2_pcgso_Given :1; 1817 unsigned HSM2_pcgdo_Given :1; 1818 unsigned HSM2_pjs0_Given :1; 1819 unsigned HSM2_pjs0sw_Given :1; 1820 unsigned HSM2_pnj_Given :1; 1821 unsigned HSM2_pcisbk_Given :1; 1822 unsigned HSM2_pclm1_Given :1; 1823 unsigned HSM2_pclm2_Given :1; 1824 unsigned HSM2_pclm3_Given :1; 1825 unsigned HSM2_pwfc_Given :1; 1826 unsigned HSM2_pgidl1_Given :1; 1827 unsigned HSM2_pgidl2_Given :1; 1828 unsigned HSM2_pgleak1_Given :1; 1829 unsigned HSM2_pgleak2_Given :1; 1830 unsigned HSM2_pgleak3_Given :1; 1831 unsigned HSM2_pgleak6_Given :1; 1832 unsigned HSM2_pglksd1_Given :1; 1833 unsigned HSM2_pglksd2_Given :1; 1834 unsigned HSM2_pglkb1_Given :1; 1835 unsigned HSM2_pglkb2_Given :1; 1836 unsigned HSM2_pnftrp_Given :1; 1837 unsigned HSM2_pnfalp_Given :1; 1838 unsigned HSM2_pvdiffj_Given :1; 1839 unsigned HSM2_pibpc1_Given :1; 1840 unsigned HSM2_pibpc2_Given :1; 1841 1842 unsigned HSM2vgsMaxGiven :1; 1843 unsigned HSM2vgdMaxGiven :1; 1844 unsigned HSM2vgbMaxGiven :1; 1845 unsigned HSM2vdsMaxGiven :1; 1846 unsigned HSM2vbsMaxGiven :1; 1847 unsigned HSM2vbdMaxGiven :1; 1848 unsigned HSM2vgsrMaxGiven :1; 1849 unsigned HSM2vgdrMaxGiven :1; 1850 unsigned HSM2vgbrMaxGiven :1; 1851 unsigned HSM2vbsrMaxGiven :1; 1852 unsigned HSM2vbdrMaxGiven :1; 1853 1854 } HSM2model; 1855 1856 #ifndef NMOS 1857 #define NMOS 1 1858 #define PMOS -1 1859 #endif /*NMOS*/ 1860 1861 #define HSM2_BAD_PARAM -1 1862 1863 /* flags */ 1864 #define HSM2_MOD_NMOS 1 1865 #define HSM2_MOD_PMOS 2 1866 #define HSM2_MOD_LEVEL 3 1867 #define HSM2_MOD_INFO 4 1868 #define HSM2_MOD_NOISE 5 1869 #define HSM2_MOD_VERSION 6 1870 #define HSM2_MOD_SHOW 7 1871 #define HSM2_MOD_CORSRD 11 1872 #define HSM2_MOD_COIPRV 12 1873 #define HSM2_MOD_COPPRV 13 1874 #define HSM2_MOD_COADOV 17 1875 #define HSM2_MOD_COISUB 21 1876 #define HSM2_MOD_COIIGS 22 1877 #define HSM2_MOD_COGIDL 23 1878 #define HSM2_MOD_COOVLP 24 1879 #define HSM2_MOD_COFLICK 25 1880 #define HSM2_MOD_COISTI 26 1881 #define HSM2_MOD_CONQS 29 /* HiSIM2 */ 1882 #define HSM2_MOD_COTHRML 30 1883 #define HSM2_MOD_COIGN 31 /* induced gate noise */ 1884 #define HSM2_MOD_CORG 32 1885 #define HSM2_MOD_CORBNET 33 1886 #define HSM2_MOD_CODFM 36 /* DFM */ 1887 #define HSM2_MOD_CORECIP 37 1888 #define HSM2_MOD_COQY 38 1889 #define HSM2_MOD_COQOVSM 39 1890 #define HSM2_MOD_COERRREP 153 1891 #define HSM2_MOD_CODEP 45 1892 #define HSM2_MOD_CODDLT 40 1893 1894 /* device parameters */ 1895 #define HSM2_L 51 1896 #define HSM2_W 52 1897 #define HSM2_AD 53 1898 #define HSM2_AS 54 1899 #define HSM2_PD 55 1900 #define HSM2_PS 56 1901 #define HSM2_NRD 57 1902 #define HSM2_NRS 58 1903 #define HSM2_TEMP 59 1904 #define HSM2_DTEMP 60 1905 #define HSM2_OFF 61 1906 #define HSM2_IC_VBS 62 1907 #define HSM2_IC_VDS 63 1908 #define HSM2_IC_VGS 64 1909 #define HSM2_IC 65 1910 #define HSM2_CORBNET 66 1911 #define HSM2_RBPB 67 1912 #define HSM2_RBPD 68 1913 #define HSM2_RBPS 69 1914 #define HSM2_RBDB 70 1915 #define HSM2_RBSB 71 1916 #define HSM2_CORG 72 1917 /* #define HSM2_RSHG 73 */ 1918 #define HSM2_NGCON 74 1919 #define HSM2_XGW 75 1920 #define HSM2_XGL 76 1921 #define HSM2_NF 77 1922 #define HSM2_SA 78 1923 #define HSM2_SB 79 1924 #define HSM2_SD 80 1925 #define HSM2_NSUBCDFM 82 1926 #define HSM2_MPHDFM 84 1927 #define HSM2_M 83 1928 1929 /* val symbol for WPE */ 1930 #define HSM2_SCA 85 /* sca */ 1931 #define HSM2_SCB 86 /* scb */ 1932 #define HSM2_SCC 87 /* scc */ 1933 1934 /* model parameters */ 1935 #define HSM2_MOD_VMAX 100 1936 #define HSM2_MOD_BGTMP1 101 1937 #define HSM2_MOD_BGTMP2 102 1938 #define HSM2_MOD_EG0 103 1939 #define HSM2_MOD_TOX 104 1940 #define HSM2_MOD_XLD 105 1941 #define HSM2_MOD_LOVER 106 1942 #define HSM2_MOD_DDLTMAX 421 /* Vdseff */ 1943 #define HSM2_MOD_DDLTSLP 422 /* Vdseff */ 1944 #define HSM2_MOD_DDLTICT 423 /* Vdseff */ 1945 #define HSM2_MOD_VFBOVER 428 1946 #define HSM2_MOD_NOVER 430 1947 #define HSM2_MOD_XWD 107 1948 #define HSM2_MOD_XL 112 1949 #define HSM2_MOD_XW 117 1950 #define HSM2_MOD_SAREF 433 1951 #define HSM2_MOD_SBREF 434 1952 #define HSM2_MOD_LL 108 1953 #define HSM2_MOD_LLD 109 1954 #define HSM2_MOD_LLN 110 1955 #define HSM2_MOD_WL 111 1956 #define HSM2_MOD_WL1 113 1957 #define HSM2_MOD_WL1P 114 1958 #define HSM2_MOD_WL2 407 1959 #define HSM2_MOD_WL2P 408 1960 #define HSM2_MOD_WLD 115 1961 #define HSM2_MOD_WLN 116 1962 1963 #define HSM2_MOD_XQY 178 1964 #define HSM2_MOD_XQY1 118 1965 #define HSM2_MOD_XQY2 120 1966 #define HSM2_MOD_QYRAT 991 1967 1968 #define HSM2_MOD_RSH 119 1969 #define HSM2_MOD_RSHG 384 1970 /* #define HSM2_MOD_NGCON 385 */ 1971 /* #define HSM2_MOD_XGW 386 */ 1972 /* #define HSM2_MOD_XGL 387 */ 1973 /* #define HSM2_MOD_NF 388 */ 1974 #define HSM2_MOD_RS 398 1975 #define HSM2_MOD_RD 399 1976 1977 #define HSM2_MOD_VFBC 121 1978 #define HSM2_MOD_VBI 122 1979 #define HSM2_MOD_NSUBC 123 1980 #define HSM2_MOD_VFBCL 272 1981 #define HSM2_MOD_VFBCLP 273 1982 #define HSM2_MOD_TNOM 124 1983 #define HSM2_MOD_PARL2 125 1984 #define HSM2_MOD_SC1 126 1985 #define HSM2_MOD_SC2 127 1986 #define HSM2_MOD_SC3 128 1987 #define HSM2_MOD_SC4 460 1988 #define HSM2_MOD_NDEP 129 1989 #define HSM2_MOD_NDEPL 419 1990 #define HSM2_MOD_NDEPLP 420 1991 #define HSM2_MOD_NDEPW 469 1992 #define HSM2_MOD_NDEPWP 470 1993 #define HSM2_MOD_NINV 130 1994 #define HSM2_MOD_NINVD 300 1995 #define HSM2_MOD_NINVDL 301 1996 #define HSM2_MOD_NINVDLP 302 1997 #define HSM2_MOD_MUECB0 131 1998 #define HSM2_MOD_MUECB1 132 1999 #define HSM2_MOD_MUEPH1 133 2000 #define HSM2_MOD_MUEPH0 134 2001 #define HSM2_MOD_MUEPHW 135 2002 #define HSM2_MOD_MUEPWP 136 2003 #define HSM2_MOD_MUEPWD 333 2004 #define HSM2_MOD_MUEPHL 137 2005 #define HSM2_MOD_MUEPLP 138 2006 #define HSM2_MOD_MUEPLD 150 2007 #define HSM2_MOD_MUEPHS 139 2008 #define HSM2_MOD_MUEPSP 140 2009 #define HSM2_MOD_VTMP 141 2010 #define HSM2_MOD_WVTH0 142 2011 #define HSM2_MOD_MUESR1 143 2012 #define HSM2_MOD_MUESR0 144 2013 #define HSM2_MOD_MUESRL 145 2014 #define HSM2_MOD_MUESLP 146 2015 #define HSM2_MOD_MUESRW 147 2016 #define HSM2_MOD_MUESWP 148 2017 #define HSM2_MOD_BB 149 2018 2019 #define HSM2_MOD_SUB1 151 2020 #define HSM2_MOD_SUB2 152 2021 #define HSM2_MOD_CGSO 154 2022 #define HSM2_MOD_CGDO 155 2023 #define HSM2_MOD_CGBO 156 2024 #define HSM2_MOD_JS0 157 2025 #define HSM2_MOD_JS0SW 158 2026 #define HSM2_MOD_NJ 159 2027 #define HSM2_MOD_NJSW 160 2028 #define HSM2_MOD_XTI 161 2029 #define HSM2_MOD_CJ 162 2030 #define HSM2_MOD_CJSW 163 2031 #define HSM2_MOD_CJSWG 164 2032 #define HSM2_MOD_MJ 165 2033 #define HSM2_MOD_MJSW 166 2034 #define HSM2_MOD_MJSWG 167 2035 #define HSM2_MOD_XTI2 168 2036 #define HSM2_MOD_CISB 169 2037 #define HSM2_MOD_CVB 170 2038 #define HSM2_MOD_CTEMP 171 2039 #define HSM2_MOD_CISBK 172 2040 #define HSM2_MOD_CVBK 173 2041 #define HSM2_MOD_DIVX 174 2042 #define HSM2_MOD_PB 175 2043 #define HSM2_MOD_PBSW 176 2044 #define HSM2_MOD_PBSWG 177 2045 #define HSM2_MOD_TPOLY 179 2046 #define HSM2_MOD_LP 180 2047 #define HSM2_MOD_NSUBP 181 2048 #define HSM2_MOD_NSUBPL 196 2049 #define HSM2_MOD_NSUBPFAC 197 2050 #define HSM2_MOD_NSUBPDLT 274 2051 #define HSM2_MOD_NSUBPW 182 2052 #define HSM2_MOD_NSUBPWP 183 2053 #define HSM2_MOD_SCP1 184 2054 #define HSM2_MOD_SCP2 185 2055 #define HSM2_MOD_SCP3 186 2056 #define HSM2_MOD_PGD1 187 2057 #define HSM2_MOD_PGD2 188 2058 //#define HSM2_MOD_PGD3 189 2059 #define HSM2_MOD_PGD4 190 2060 #define HSM2_MOD_CLM1 191 2061 #define HSM2_MOD_CLM2 192 2062 #define HSM2_MOD_CLM3 193 2063 #define HSM2_MOD_CLM5 402 2064 #define HSM2_MOD_CLM6 403 2065 #define HSM2_MOD_MUETMP 195 2066 2067 #define HSM2_MOD_VOVER 199 2068 #define HSM2_MOD_VOVERP 200 2069 #define HSM2_MOD_WFC 201 2070 #define HSM2_MOD_NSUBCW 249 2071 #define HSM2_MOD_NSUBCWP 250 2072 #define HSM2_MOD_NSUBCMAX 248 2073 #define HSM2_MOD_QME1 202 2074 #define HSM2_MOD_QME2 203 2075 #define HSM2_MOD_QME3 204 2076 #define HSM2_MOD_GIDL1 205 2077 #define HSM2_MOD_GIDL2 206 2078 #define HSM2_MOD_GIDL3 207 2079 #define HSM2_MOD_GLEAK1 208 2080 #define HSM2_MOD_GLEAK2 209 2081 #define HSM2_MOD_GLEAK3 210 2082 #define HSM2_MOD_GLEAK4 211 2083 #define HSM2_MOD_GLEAK5 212 2084 #define HSM2_MOD_GLEAK6 213 2085 #define HSM2_MOD_GLEAK7 214 2086 #define HSM2_MOD_GLKSD1 215 2087 #define HSM2_MOD_GLKSD2 216 2088 #define HSM2_MOD_GLKSD3 217 2089 #define HSM2_MOD_GLKB1 218 2090 #define HSM2_MOD_GLKB2 219 2091 #define HSM2_MOD_GLKB3 429 2092 #define HSM2_MOD_EGIG 220 2093 #define HSM2_MOD_IGTEMP2 221 2094 #define HSM2_MOD_IGTEMP3 222 2095 #define HSM2_MOD_VZADD0 223 2096 #define HSM2_MOD_PZADD0 224 2097 #define HSM2_MOD_NSTI 225 2098 #define HSM2_MOD_WSTI 226 2099 #define HSM2_MOD_WSTIL 227 2100 #define HSM2_MOD_WSTILP 231 2101 #define HSM2_MOD_WSTIW 234 2102 #define HSM2_MOD_WSTIWP 228 2103 #define HSM2_MOD_SCSTI1 229 2104 #define HSM2_MOD_SCSTI2 230 2105 #define HSM2_MOD_VTHSTI 232 2106 #define HSM2_MOD_VDSTI 233 2107 #define HSM2_MOD_MUESTI1 235 2108 #define HSM2_MOD_MUESTI2 236 2109 #define HSM2_MOD_MUESTI3 237 2110 #define HSM2_MOD_NSUBPSTI1 238 2111 #define HSM2_MOD_NSUBPSTI2 239 2112 #define HSM2_MOD_NSUBPSTI3 240 2113 #define HSM2_MOD_NSUBCSTI1 198 2114 #define HSM2_MOD_NSUBCSTI2 247 2115 #define HSM2_MOD_NSUBCSTI3 252 2116 #define HSM2_MOD_LPEXT 241 2117 #define HSM2_MOD_NPEXT 242 2118 #define HSM2_MOD_NPEXTW 471 2119 #define HSM2_MOD_NPEXTWP 472 2120 #define HSM2_MOD_SCP22 243 2121 #define HSM2_MOD_SCP21 244 2122 #define HSM2_MOD_BS1 245 2123 #define HSM2_MOD_BS2 246 2124 #define HSM2_MOD_KAPPA 251 2125 #define HSM2_MOD_VDIFFJ 254 2126 #define HSM2_MOD_DLY1 255 2127 #define HSM2_MOD_DLY2 256 2128 #define HSM2_MOD_DLY3 257 2129 #define HSM2_MOD_NFTRP 258 2130 #define HSM2_MOD_NFALP 259 2131 #define HSM2_MOD_FALPH 263 2132 #define HSM2_MOD_CIT 260 2133 #define HSM2_MOD_OVSLP 261 2134 #define HSM2_MOD_OVMAG 262 2135 #define HSM2_MOD_GIDL4 281 2136 #define HSM2_MOD_GIDL5 282 2137 #define HSM2_MOD_GIDL6 189 2138 #define HSM2_MOD_GIDL7 194 2139 #define HSM2_MOD_SVGS 283 2140 #define HSM2_MOD_SVBS 284 2141 #define HSM2_MOD_SVBSL 285 2142 #define HSM2_MOD_SVDS 286 2143 #define HSM2_MOD_SLG 287 2144 #define HSM2_MOD_SUB1L 290 2145 #define HSM2_MOD_SUB2L 292 2146 #define HSM2_MOD_VOVERS 303 2147 #define HSM2_MOD_VOVERSP 304 2148 #define HSM2_MOD_SVGSL 305 2149 #define HSM2_MOD_SVGSLP 306 2150 #define HSM2_MOD_SVGSWP 307 2151 #define HSM2_MOD_SVGSW 308 2152 #define HSM2_MOD_SVBSLP 309 2153 #define HSM2_MOD_SLGL 310 2154 #define HSM2_MOD_SLGLP 311 2155 #define HSM2_MOD_SUB1LP 312 2156 #define HSM2_MOD_IBPC1 404 2157 #define HSM2_MOD_IBPC2 405 2158 #define HSM2_MOD_MPHDFM 409 2159 2160 #define HSM2_MOD_PTL 450 2161 #define HSM2_MOD_PTP 451 2162 #define HSM2_MOD_PT2 452 2163 #define HSM2_MOD_PTLP 455 2164 #define HSM2_MOD_GDL 453 2165 #define HSM2_MOD_GDLP 454 2166 2167 #define HSM2_MOD_GDLD 456 2168 #define HSM2_MOD_PT4 457 2169 #define HSM2_MOD_PT4P 465 2170 #define HSM2_MOD_MUEPHL2 458 2171 #define HSM2_MOD_MUEPLP2 459 2172 #define HSM2_MOD_NSUBCW2 461 2173 #define HSM2_MOD_NSUBCWP2 462 2174 #define HSM2_MOD_MUEPHW2 463 2175 #define HSM2_MOD_MUEPWP2 464 2176 2177 /* val symbol for WPE */ 2178 #define HSM2_MOD_WEB 88 2179 #define HSM2_MOD_WEC 89 2180 #define HSM2_MOD_NSUBCWPE 91 2181 #define HSM2_MOD_NPEXTWPE 41 2182 #define HSM2_MOD_NSUBPWPE 43 2183 2184 #define HSM2_MOD_VGSMIN 466 2185 #define HSM2_MOD_SC3VBS 467 2186 #define HSM2_MOD_BYPTOL 468 2187 #define HSM2_MOD_MUECB0LP 473 2188 #define HSM2_MOD_MUECB1LP 474 2189 2190 #define HSM2_MOD_NDEPM 600 2191 #define HSM2_MOD_NDEPML 610 2192 #define HSM2_MOD_NDEPMLP 611 2193 #define HSM2_MOD_TNDEP 601 2194 #define HSM2_MOD_DEPLEAK 608 2195 #define HSM2_MOD_DEPLEAKL 614 2196 #define HSM2_MOD_DEPLEAKLP 615 2197 #define HSM2_MOD_DEPETA 609 2198 #define HSM2_MOD_DEPMUE0 275 2199 #define HSM2_MOD_DEPMUE0L 276 2200 #define HSM2_MOD_DEPMUE0LP 277 2201 #define HSM2_MOD_DEPMUE1 278 2202 #define HSM2_MOD_DEPMUE1L 279 2203 #define HSM2_MOD_DEPMUE1LP 280 2204 #define HSM2_MOD_DEPMUEBACK0 288 2205 #define HSM2_MOD_DEPMUEBACK0L 289 2206 #define HSM2_MOD_DEPMUEBACK0LP 291 2207 #define HSM2_MOD_DEPMUEBACK1 293 2208 #define HSM2_MOD_DEPMUEBACK1L 294 2209 #define HSM2_MOD_DEPMUEBACK1LP 295 2210 #define HSM2_MOD_DEPMUEPH0 296 2211 #define HSM2_MOD_DEPMUEPH1 297 2212 #define HSM2_MOD_DEPVMAX 298 2213 #define HSM2_MOD_DEPVMAXL 299 2214 #define HSM2_MOD_DEPVMAXLP 313 2215 #define HSM2_MOD_DEPVDSEF1 314 2216 #define HSM2_MOD_DEPVDSEF1L 315 2217 #define HSM2_MOD_DEPVDSEF1LP 316 2218 #define HSM2_MOD_DEPVDSEF2 317 2219 #define HSM2_MOD_DEPVDSEF2L 318 2220 #define HSM2_MOD_DEPVDSEF2LP 319 2221 #define HSM2_MOD_DEPBB 320 2222 #define HSM2_MOD_DEPMUETMP 321 2223 2224 2225 /* binning parameters */ 2226 #define HSM2_MOD_LMIN 1000 2227 #define HSM2_MOD_LMAX 1001 2228 #define HSM2_MOD_WMIN 1002 2229 #define HSM2_MOD_WMAX 1003 2230 #define HSM2_MOD_LBINN 1004 2231 #define HSM2_MOD_WBINN 1005 2232 2233 /* Length dependence */ 2234 #define HSM2_MOD_LVMAX 1100 2235 #define HSM2_MOD_LBGTMP1 1101 2236 #define HSM2_MOD_LBGTMP2 1102 2237 #define HSM2_MOD_LEG0 1103 2238 #define HSM2_MOD_LLOVER 1106 2239 #define HSM2_MOD_LVFBOVER 1428 2240 #define HSM2_MOD_LNOVER 1430 2241 #define HSM2_MOD_LWL2 1407 2242 #define HSM2_MOD_LVFBC 1121 2243 #define HSM2_MOD_LNSUBC 1123 2244 #define HSM2_MOD_LNSUBP 1181 2245 #define HSM2_MOD_LSCP1 1184 2246 #define HSM2_MOD_LSCP2 1185 2247 #define HSM2_MOD_LSCP3 1186 2248 #define HSM2_MOD_LSC1 1126 2249 #define HSM2_MOD_LSC2 1127 2250 #define HSM2_MOD_LSC3 1128 2251 #define HSM2_MOD_LSC4 1270 2252 #define HSM2_MOD_LPGD1 1187 2253 //#define HSM2_MOD_LPGD3 1189 2254 #define HSM2_MOD_LNDEP 1129 2255 #define HSM2_MOD_LNINV 1130 2256 #define HSM2_MOD_LMUECB0 1131 2257 #define HSM2_MOD_LMUECB1 1132 2258 #define HSM2_MOD_LMUEPH1 1133 2259 #define HSM2_MOD_LVTMP 1141 2260 #define HSM2_MOD_LWVTH0 1142 2261 #define HSM2_MOD_LMUESR1 1143 2262 #define HSM2_MOD_LMUETMP 1195 2263 #define HSM2_MOD_LSUB1 1151 2264 #define HSM2_MOD_LSUB2 1152 2265 #define HSM2_MOD_LSVDS 1286 2266 #define HSM2_MOD_LSVBS 1284 2267 #define HSM2_MOD_LSVGS 1283 2268 #define HSM2_MOD_LNSTI 1225 2269 #define HSM2_MOD_LWSTI 1226 2270 #define HSM2_MOD_LSCSTI1 1229 2271 #define HSM2_MOD_LSCSTI2 1230 2272 #define HSM2_MOD_LVTHSTI 1232 2273 #define HSM2_MOD_LMUESTI1 1235 2274 #define HSM2_MOD_LMUESTI2 1236 2275 #define HSM2_MOD_LMUESTI3 1237 2276 #define HSM2_MOD_LNSUBPSTI1 1238 2277 #define HSM2_MOD_LNSUBPSTI2 1239 2278 #define HSM2_MOD_LNSUBPSTI3 1240 2279 #define HSM2_MOD_LNSUBCSTI1 253 2280 #define HSM2_MOD_LNSUBCSTI2 264 2281 #define HSM2_MOD_LNSUBCSTI3 265 2282 #define HSM2_MOD_LCGSO 1154 2283 #define HSM2_MOD_LCGDO 1155 2284 #define HSM2_MOD_LJS0 1157 2285 #define HSM2_MOD_LJS0SW 1158 2286 #define HSM2_MOD_LNJ 1159 2287 #define HSM2_MOD_LCISBK 1172 2288 #define HSM2_MOD_LCLM1 1191 2289 #define HSM2_MOD_LCLM2 1192 2290 #define HSM2_MOD_LCLM3 1193 2291 #define HSM2_MOD_LWFC 1201 2292 #define HSM2_MOD_LGIDL1 1205 2293 #define HSM2_MOD_LGIDL2 1206 2294 #define HSM2_MOD_LGLEAK1 1208 2295 #define HSM2_MOD_LGLEAK2 1209 2296 #define HSM2_MOD_LGLEAK3 1210 2297 #define HSM2_MOD_LGLEAK6 1213 2298 #define HSM2_MOD_LGLKSD1 1215 2299 #define HSM2_MOD_LGLKSD2 1216 2300 #define HSM2_MOD_LGLKB1 1218 2301 #define HSM2_MOD_LGLKB2 1219 2302 #define HSM2_MOD_LNFTRP 1258 2303 #define HSM2_MOD_LNFALP 1259 2304 #define HSM2_MOD_LVDIFFJ 1254 2305 #define HSM2_MOD_LIBPC1 1404 2306 #define HSM2_MOD_LIBPC2 1405 2307 2308 /* Width dependence */ 2309 #define HSM2_MOD_WVMAX 2100 2310 #define HSM2_MOD_WBGTMP1 2101 2311 #define HSM2_MOD_WBGTMP2 2102 2312 #define HSM2_MOD_WEG0 2103 2313 #define HSM2_MOD_WLOVER 2106 2314 #define HSM2_MOD_WVFBOVER 2428 2315 #define HSM2_MOD_WNOVER 2430 2316 #define HSM2_MOD_WWL2 2407 2317 #define HSM2_MOD_WVFBC 2121 2318 #define HSM2_MOD_WNSUBC 2123 2319 #define HSM2_MOD_WNSUBP 2181 2320 #define HSM2_MOD_WSCP1 2184 2321 #define HSM2_MOD_WSCP2 2185 2322 #define HSM2_MOD_WSCP3 2186 2323 #define HSM2_MOD_WSC1 2126 2324 #define HSM2_MOD_WSC2 2127 2325 #define HSM2_MOD_WSC3 2128 2326 #define HSM2_MOD_WSC4 2270 2327 #define HSM2_MOD_WPGD1 2187 2328 //#define HSM2_MOD_WPGD3 2189 2329 #define HSM2_MOD_WNDEP 2129 2330 #define HSM2_MOD_WNINV 2130 2331 #define HSM2_MOD_WMUECB0 2131 2332 #define HSM2_MOD_WMUECB1 2132 2333 #define HSM2_MOD_WMUEPH1 2133 2334 #define HSM2_MOD_WVTMP 2141 2335 #define HSM2_MOD_WWVTH0 2142 2336 #define HSM2_MOD_WMUESR1 2143 2337 #define HSM2_MOD_WMUETMP 2195 2338 #define HSM2_MOD_WSUB1 2151 2339 #define HSM2_MOD_WSUB2 2152 2340 #define HSM2_MOD_WSVDS 2286 2341 #define HSM2_MOD_WSVBS 2284 2342 #define HSM2_MOD_WSVGS 2283 2343 #define HSM2_MOD_WNSTI 2225 2344 #define HSM2_MOD_WWSTI 2226 2345 #define HSM2_MOD_WSCSTI1 2229 2346 #define HSM2_MOD_WSCSTI2 2230 2347 #define HSM2_MOD_WVTHSTI 2232 2348 #define HSM2_MOD_WMUESTI1 2235 2349 #define HSM2_MOD_WMUESTI2 2236 2350 #define HSM2_MOD_WMUESTI3 2237 2351 #define HSM2_MOD_WNSUBPSTI1 2238 2352 #define HSM2_MOD_WNSUBPSTI2 2239 2353 #define HSM2_MOD_WNSUBPSTI3 2240 2354 #define HSM2_MOD_WNSUBCSTI1 266 2355 #define HSM2_MOD_WNSUBCSTI2 267 2356 #define HSM2_MOD_WNSUBCSTI3 268 2357 #define HSM2_MOD_WCGSO 2154 2358 #define HSM2_MOD_WCGDO 2155 2359 #define HSM2_MOD_WJS0 2157 2360 #define HSM2_MOD_WJS0SW 2158 2361 #define HSM2_MOD_WNJ 2159 2362 #define HSM2_MOD_WCISBK 2172 2363 #define HSM2_MOD_WCLM1 2191 2364 #define HSM2_MOD_WCLM2 2192 2365 #define HSM2_MOD_WCLM3 2193 2366 #define HSM2_MOD_WWFC 2201 2367 #define HSM2_MOD_WGIDL1 2205 2368 #define HSM2_MOD_WGIDL2 2206 2369 #define HSM2_MOD_WGLEAK1 2208 2370 #define HSM2_MOD_WGLEAK2 2209 2371 #define HSM2_MOD_WGLEAK3 2210 2372 #define HSM2_MOD_WGLEAK6 2213 2373 #define HSM2_MOD_WGLKSD1 2215 2374 #define HSM2_MOD_WGLKSD2 2216 2375 #define HSM2_MOD_WGLKB1 2218 2376 #define HSM2_MOD_WGLKB2 2219 2377 #define HSM2_MOD_WNFTRP 2258 2378 #define HSM2_MOD_WNFALP 2259 2379 #define HSM2_MOD_WVDIFFJ 2254 2380 #define HSM2_MOD_WIBPC1 2404 2381 #define HSM2_MOD_WIBPC2 2405 2382 2383 /* Cross-term dependence */ 2384 #define HSM2_MOD_PVMAX 3100 2385 #define HSM2_MOD_PBGTMP1 3101 2386 #define HSM2_MOD_PBGTMP2 3102 2387 #define HSM2_MOD_PEG0 3103 2388 #define HSM2_MOD_PLOVER 3106 2389 #define HSM2_MOD_PVFBOVER 3428 2390 #define HSM2_MOD_PNOVER 3430 2391 #define HSM2_MOD_PWL2 3407 2392 #define HSM2_MOD_PVFBC 3121 2393 #define HSM2_MOD_PNSUBC 3123 2394 #define HSM2_MOD_PNSUBP 3181 2395 #define HSM2_MOD_PSCP1 3184 2396 #define HSM2_MOD_PSCP2 3185 2397 #define HSM2_MOD_PSCP3 3186 2398 #define HSM2_MOD_PSC1 3126 2399 #define HSM2_MOD_PSC2 3127 2400 #define HSM2_MOD_PSC3 3128 2401 #define HSM2_MOD_PSC4 3270 2402 #define HSM2_MOD_PPGD1 3187 2403 //#define HSM2_MOD_PPGD3 3189 2404 #define HSM2_MOD_PNDEP 3129 2405 #define HSM2_MOD_PNINV 3130 2406 #define HSM2_MOD_PMUECB0 3131 2407 #define HSM2_MOD_PMUECB1 3132 2408 #define HSM2_MOD_PMUEPH1 3133 2409 #define HSM2_MOD_PVTMP 3141 2410 #define HSM2_MOD_PWVTH0 3142 2411 #define HSM2_MOD_PMUESR1 3143 2412 #define HSM2_MOD_PMUETMP 3195 2413 #define HSM2_MOD_PSUB1 3151 2414 #define HSM2_MOD_PSUB2 3152 2415 #define HSM2_MOD_PSVDS 3286 2416 #define HSM2_MOD_PSVBS 3284 2417 #define HSM2_MOD_PSVGS 3283 2418 #define HSM2_MOD_PNSTI 3225 2419 #define HSM2_MOD_PWSTI 3226 2420 #define HSM2_MOD_PSCSTI1 3229 2421 #define HSM2_MOD_PSCSTI2 3230 2422 #define HSM2_MOD_PVTHSTI 3232 2423 #define HSM2_MOD_PMUESTI1 3235 2424 #define HSM2_MOD_PMUESTI2 3236 2425 #define HSM2_MOD_PMUESTI3 3237 2426 #define HSM2_MOD_PNSUBPSTI1 3238 2427 #define HSM2_MOD_PNSUBPSTI2 3239 2428 #define HSM2_MOD_PNSUBPSTI3 3240 2429 #define HSM2_MOD_PNSUBCSTI1 269 2430 #define HSM2_MOD_PNSUBCSTI2 270 2431 #define HSM2_MOD_PNSUBCSTI3 271 2432 #define HSM2_MOD_PCGSO 3154 2433 #define HSM2_MOD_PCGDO 3155 2434 #define HSM2_MOD_PJS0 3157 2435 #define HSM2_MOD_PJS0SW 3158 2436 #define HSM2_MOD_PNJ 3159 2437 #define HSM2_MOD_PCISBK 3172 2438 #define HSM2_MOD_PCLM1 3191 2439 #define HSM2_MOD_PCLM2 3192 2440 #define HSM2_MOD_PCLM3 3193 2441 #define HSM2_MOD_PWFC 3201 2442 #define HSM2_MOD_PGIDL1 3205 2443 #define HSM2_MOD_PGIDL2 3206 2444 #define HSM2_MOD_PGLEAK1 3208 2445 #define HSM2_MOD_PGLEAK2 3209 2446 #define HSM2_MOD_PGLEAK3 3210 2447 #define HSM2_MOD_PGLEAK6 3213 2448 #define HSM2_MOD_PGLKSD1 3215 2449 #define HSM2_MOD_PGLKSD2 3216 2450 #define HSM2_MOD_PGLKB1 3218 2451 #define HSM2_MOD_PGLKB2 3219 2452 #define HSM2_MOD_PNFTRP 3258 2453 #define HSM2_MOD_PNFALP 3259 2454 #define HSM2_MOD_PVDIFFJ 3254 2455 #define HSM2_MOD_PIBPC1 3404 2456 #define HSM2_MOD_PIBPC2 3405 2457 2458 /* device questions */ 2459 #define HSM2_DNODE 341 2460 #define HSM2_GNODE 342 2461 #define HSM2_SNODE 343 2462 #define HSM2_BNODE 344 2463 #define HSM2_DNODEPRIME 345 2464 #define HSM2_SNODEPRIME 346 2465 #define HSM2_BNODEPRIME 395 2466 #define HSM2_DBNODE 396 2467 #define HSM2_SBNODE 397 2468 #define HSM2_VBD 347 2469 #define HSM2_VBS 348 2470 #define HSM2_VGS 349 2471 #define HSM2_VDS 350 2472 #define HSM2_CD 351 2473 #define HSM2_CBS 352 2474 #define HSM2_CBD 353 2475 #define HSM2_GM 354 2476 #define HSM2_GDS 355 2477 #define HSM2_GMBS 356 2478 #define HSM2_GBD 357 2479 #define HSM2_GBS 358 2480 #define HSM2_QB 359 2481 #define HSM2_CQB 360 2482 #define HSM2_QG 361 2483 #define HSM2_CQG 362 2484 #define HSM2_QD 363 2485 #define HSM2_CQD 364 2486 #define HSM2_CGG 365 2487 #define HSM2_CGD 366 2488 #define HSM2_CGS 367 2489 #define HSM2_CBG 368 2490 #define HSM2_CAPBD 369 2491 #define HSM2_CQBD 370 2492 #define HSM2_CAPBS 371 2493 #define HSM2_CQBS 372 2494 #define HSM2_CDG 373 2495 #define HSM2_CDD 374 2496 #define HSM2_CDS 375 2497 #define HSM2_VON 376 2498 #define HSM2_VDSAT 377 2499 #define HSM2_QBS 378 2500 #define HSM2_QBD 379 2501 #define HSM2_SOURCECONDUCT 380 2502 #define HSM2_DRAINCONDUCT 381 2503 #define HSM2_CBDB 382 2504 #define HSM2_CBSB 383 2505 #define HSM2_MOD_RBPB 389 2506 #define HSM2_MOD_RBPD 390 2507 #define HSM2_MOD_RBPS 391 2508 #define HSM2_MOD_RBDB 392 2509 #define HSM2_MOD_RBSB 393 2510 #define HSM2_MOD_GBMIN 394 2511 2512 #define HSM2_ISUB 410 2513 #define HSM2_IGIDL 411 2514 #define HSM2_IGISL 412 2515 #define HSM2_IGD 413 2516 #define HSM2_IGS 414 2517 #define HSM2_IGB 415 2518 #define HSM2_CGSO 416 2519 #define HSM2_CGBO 417 2520 #define HSM2_CGDO 418 2521 2522 #define HSM2_MOD_TCJBD 92 2523 #define HSM2_MOD_TCJBS 93 2524 #define HSM2_MOD_TCJBDSW 94 2525 #define HSM2_MOD_TCJBSSW 95 2526 #define HSM2_MOD_TCJBDSWG 96 2527 #define HSM2_MOD_TCJBSSWG 97 2528 2529 #define HSM2_MOD_VGS_MAX 4001 2530 #define HSM2_MOD_VGD_MAX 4002 2531 #define HSM2_MOD_VGB_MAX 4003 2532 #define HSM2_MOD_VDS_MAX 4004 2533 #define HSM2_MOD_VBS_MAX 4005 2534 #define HSM2_MOD_VBD_MAX 4006 2535 #define HSM2_MOD_VGSR_MAX 4007 2536 #define HSM2_MOD_VGDR_MAX 4008 2537 #define HSM2_MOD_VGBR_MAX 4009 2538 #define HSM2_MOD_VBSR_MAX 4010 2539 #define HSM2_MOD_VBDR_MAX 4011 2540 2541 #include "hsm2ext.h" 2542 2543 /* 2544 #ifdef __STDC__ 2545 extern void HSM2evaluate(double,double,double,HSM2instance*,HSM2model*, 2546 double*,double*,double*, double*, double*, double*, double*, 2547 double*, double*, double*, double*, double*, double*, double*, 2548 double*, double*, double*, double*, CKTcircuit*); 2549 #else 2550 extern void HSM2evaluate(); 2551 #endif 2552 */ 2553 2554 #endif /*HSM2*/ 2555 2556