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