-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbsim4def.h
3625 lines (3464 loc) · 114 KB
/
bsim4def.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/**** BSIM4.6.2 Released by Wenwei Yang 07/31/2008 ****/
/**********
Copyright 2006 Regents of the University of California. All rights reserved.
File: bsim4def.h
Author: 2000 Weidong Liu.
Authors: 2001- Xuemei Xi, Mohan Dunga, Ali Niknejad, Chenming Hu.
Authors: 2006- Mohan Dunga, Ali Niknejad, Chenming Hu
Authors: 2007- Mohan Dunga, Wenwei Yang, Ali Niknejad, Chenming Hu
Authors: 2008- Wenwei Yang, Ali Niknejad, Chenming Hu
Modified by Xuemei Xi, 11/15/2002.
Modified by Xuemei Xi, 05/09/2003.
Modified by Xuemei Xi, 03/04/2004.
Modified by Xuemei Xi, Mohan Dunga, 09/24/2004.
Modified by Xuemei Xi, 07/29/2005.
Modified by Mohan Dunga, 12/13/2006
Modified by Mohan Dunga, Wenwei Yang, 05/18/2007.
Modified by Wenwei Yang, 07/31/2008.
* Modified by Tanvir Morshed, Darsen Lu 03/27/2011
**********/
#ifndef BSIM4
#define BSIM4
#define NSTATVARS 3
/* #include "ifsim.h" */
/* #include "gendefs.h" */
/* #include "cktdefs.h" */
/* #include "complex.h" */
/* #include "noisedef.h" */
typedef struct sBSIM4instance
{
struct sBSIM4model *BSIM4modPtr;
struct sBSIM4instance *BSIM4nextInstance;
char BSIM4name;
int BSIM4states; /* index into state table for this device */
int BSIM4dNode;
int BSIM4gNodeExt;
int BSIM4sNode;
int BSIM4bNode;
int BSIM4dNodePrime;
int BSIM4gNodePrime;
int BSIM4gNodeMid;
int BSIM4sNodePrime;
int BSIM4bNodePrime;
int BSIM4dbNode;
int BSIM4sbNode;
int BSIM4qNode;
double BSIM4ueff;
double BSIM4thetavth;
double BSIM4von;
double BSIM4vdsat;
double BSIM4cgdo;
double BSIM4qgdo;
double BSIM4cgso;
double BSIM4qgso;
double BSIM4grbsb;
double BSIM4grbdb;
double BSIM4grbpb;
double BSIM4grbps;
double BSIM4grbpd;
double BSIM4vjsmFwd;
double BSIM4vjsmRev;
double BSIM4vjdmFwd;
double BSIM4vjdmRev;
double BSIM4XExpBVS;
double BSIM4XExpBVD;
double BSIM4SslpFwd;
double BSIM4SslpRev;
double BSIM4DslpFwd;
double BSIM4DslpRev;
double BSIM4IVjsmFwd;
double BSIM4IVjsmRev;
double BSIM4IVjdmFwd;
double BSIM4IVjdmRev;
double BSIM4grgeltd;
double BSIM4Pseff;
double BSIM4Pdeff;
double BSIM4Aseff;
double BSIM4Adeff;
double BSIM4l;
double BSIM4w;
double BSIM4drainArea;
double BSIM4sourceArea;
double BSIM4drainSquares;
double BSIM4sourceSquares;
double BSIM4drainPerimeter;
double BSIM4sourcePerimeter;
double BSIM4sourceConductance;
double BSIM4drainConductance;
/* stress effect instance param */
double BSIM4sa;
double BSIM4sb;
double BSIM4sd;
double BSIM4sca;
double BSIM4scb;
double BSIM4scc;
double BSIM4sc;
double BSIM4rbdb;
double BSIM4rbsb;
double BSIM4rbpb;
double BSIM4rbps;
double BSIM4rbpd;
double BSIM4delvto;
double BSIM4xgw;
double BSIM4ngcon;
/* added here to account stress effect instance dependence */
double BSIM4u0temp;
double BSIM4vsattemp;
double BSIM4vth0;
double BSIM4vfb;
double BSIM4vfbzb;
double BSIM4vtfbphi1;
double BSIM4vtfbphi2;
double BSIM4k2;
double BSIM4vbsc;
double BSIM4k2ox;
double BSIM4eta0;
double BSIM4icVDS;
double BSIM4icVGS;
double BSIM4icVBS;
double BSIM4nf;
int BSIM4off;
int BSIM4mode;
int BSIM4trnqsMod;
int BSIM4acnqsMod;
int BSIM4rbodyMod;
int BSIM4rgateMod;
int BSIM4geoMod;
int BSIM4rgeoMod;
int BSIM4min;
/* OP point */
double BSIM4Vgsteff;
double BSIM4vgs_eff;
double BSIM4vgd_eff;
double BSIM4dvgs_eff_dvg;
double BSIM4dvgd_eff_dvg;
double BSIM4Vdseff;
double BSIM4nstar;
double BSIM4Abulk;
double BSIM4EsatL;
double BSIM4AbovVgst2Vtm;
double BSIM4qinv;
double BSIM4cd;
double BSIM4cbs;
double BSIM4cbd;
double BSIM4csub;
double BSIM4Igidl;
double BSIM4Igisl;
double BSIM4gm;
double BSIM4gds;
double BSIM4gmbs;
double BSIM4gbd;
double BSIM4gbs;
double BSIM4noiGd0; /* tnoiMod=2 (v4.7) */
double BSIM4Coxeff;
double BSIM4gbbs;
double BSIM4gbgs;
double BSIM4gbds;
double BSIM4ggidld;
double BSIM4ggidlg;
double BSIM4ggidls;
double BSIM4ggidlb;
double BSIM4ggisld;
double BSIM4ggislg;
double BSIM4ggisls;
double BSIM4ggislb;
double BSIM4Igcs;
double BSIM4gIgcsg;
double BSIM4gIgcsd;
double BSIM4gIgcss;
double BSIM4gIgcsb;
double BSIM4Igcd;
double BSIM4gIgcdg;
double BSIM4gIgcdd;
double BSIM4gIgcds;
double BSIM4gIgcdb;
double BSIM4Igs;
double BSIM4gIgsg;
double BSIM4gIgss;
double BSIM4Igd;
double BSIM4gIgdg;
double BSIM4gIgdd;
double BSIM4Igb;
double BSIM4gIgbg;
double BSIM4gIgbd;
double BSIM4gIgbs;
double BSIM4gIgbb;
double BSIM4grdsw;
double BSIM4IdovVds;
double BSIM4gcrg;
double BSIM4gcrgd;
double BSIM4gcrgg;
double BSIM4gcrgs;
double BSIM4gcrgb;
double BSIM4gstot;
double BSIM4gstotd;
double BSIM4gstotg;
double BSIM4gstots;
double BSIM4gstotb;
double BSIM4gdtot;
double BSIM4gdtotd;
double BSIM4gdtotg;
double BSIM4gdtots;
double BSIM4gdtotb;
double BSIM4cggb;
double BSIM4cgdb;
double BSIM4cgsb;
double BSIM4cbgb;
double BSIM4cbdb;
double BSIM4cbsb;
double BSIM4cdgb;
double BSIM4cddb;
double BSIM4cdsb;
double BSIM4csgb;
double BSIM4csdb;
double BSIM4cssb;
double BSIM4cgbb;
double BSIM4cdbb;
double BSIM4csbb;
double BSIM4cbbb;
double BSIM4capbd;
double BSIM4capbs;
double BSIM4cqgb;
double BSIM4cqdb;
double BSIM4cqsb;
double BSIM4cqbb;
double BSIM4qgate;
double BSIM4qbulk;
double BSIM4qdrn;
double BSIM4qsrc;
double BSIM4qdef;
double BSIM4qchqs;
double BSIM4taunet;
double BSIM4gtau;
double BSIM4gtg;
double BSIM4gtd;
double BSIM4gts;
double BSIM4gtb;
double BSIM4SjctTempRevSatCur;
double BSIM4DjctTempRevSatCur;
double BSIM4SswTempRevSatCur;
double BSIM4DswTempRevSatCur;
double BSIM4SswgTempRevSatCur;
double BSIM4DswgTempRevSatCur;
struct bsim4SizeDependParam *pParam;
unsigned BSIM4lGiven :1;
unsigned BSIM4wGiven :1;
unsigned BSIM4nfGiven :1;
unsigned BSIM4minGiven :1;
unsigned BSIM4drainAreaGiven :1;
unsigned BSIM4sourceAreaGiven :1;
unsigned BSIM4drainSquaresGiven :1;
unsigned BSIM4sourceSquaresGiven :1;
unsigned BSIM4drainPerimeterGiven :1;
unsigned BSIM4sourcePerimeterGiven :1;
unsigned BSIM4saGiven :1;
unsigned BSIM4sbGiven :1;
unsigned BSIM4sdGiven :1;
unsigned BSIM4scaGiven :1;
unsigned BSIM4scbGiven :1;
unsigned BSIM4sccGiven :1;
unsigned BSIM4scGiven :1;
unsigned BSIM4rbdbGiven :1;
unsigned BSIM4rbsbGiven :1;
unsigned BSIM4rbpbGiven :1;
unsigned BSIM4rbpdGiven :1;
unsigned BSIM4rbpsGiven :1;
unsigned BSIM4delvtoGiven :1;
unsigned BSIM4xgwGiven :1;
unsigned BSIM4ngconGiven :1;
unsigned BSIM4icVDSGiven :1;
unsigned BSIM4icVGSGiven :1;
unsigned BSIM4icVBSGiven :1;
unsigned BSIM4trnqsModGiven :1;
unsigned BSIM4acnqsModGiven :1;
unsigned BSIM4rbodyModGiven :1;
unsigned BSIM4rgateModGiven :1;
unsigned BSIM4geoModGiven :1;
unsigned BSIM4rgeoModGiven :1;
double *BSIM4DPdPtr;
double *BSIM4DPdpPtr;
double *BSIM4DPgpPtr;
double *BSIM4DPgmPtr;
double *BSIM4DPspPtr;
double *BSIM4DPbpPtr;
double *BSIM4DPdbPtr;
double *BSIM4DdPtr;
double *BSIM4DdpPtr;
double *BSIM4GPdpPtr;
double *BSIM4GPgpPtr;
double *BSIM4GPgmPtr;
double *BSIM4GPgePtr;
double *BSIM4GPspPtr;
double *BSIM4GPbpPtr;
double *BSIM4GMdpPtr;
double *BSIM4GMgpPtr;
double *BSIM4GMgmPtr;
double *BSIM4GMgePtr;
double *BSIM4GMspPtr;
double *BSIM4GMbpPtr;
double *BSIM4GEdpPtr;
double *BSIM4GEgpPtr;
double *BSIM4GEgmPtr;
double *BSIM4GEgePtr;
double *BSIM4GEspPtr;
double *BSIM4GEbpPtr;
double *BSIM4SPdpPtr;
double *BSIM4SPgpPtr;
double *BSIM4SPgmPtr;
double *BSIM4SPsPtr;
double *BSIM4SPspPtr;
double *BSIM4SPbpPtr;
double *BSIM4SPsbPtr;
double *BSIM4SspPtr;
double *BSIM4SsPtr;
double *BSIM4BPdpPtr;
double *BSIM4BPgpPtr;
double *BSIM4BPgmPtr;
double *BSIM4BPspPtr;
double *BSIM4BPdbPtr;
double *BSIM4BPbPtr;
double *BSIM4BPsbPtr;
double *BSIM4BPbpPtr;
double *BSIM4DBdpPtr;
double *BSIM4DBdbPtr;
double *BSIM4DBbpPtr;
double *BSIM4DBbPtr;
double *BSIM4SBspPtr;
double *BSIM4SBbpPtr;
double *BSIM4SBbPtr;
double *BSIM4SBsbPtr;
double *BSIM4BdbPtr;
double *BSIM4BbpPtr;
double *BSIM4BsbPtr;
double *BSIM4BbPtr;
double *BSIM4DgpPtr;
double *BSIM4DspPtr;
double *BSIM4DbpPtr;
double *BSIM4SdpPtr;
double *BSIM4SgpPtr;
double *BSIM4SbpPtr;
double *BSIM4QdpPtr;
double *BSIM4QgpPtr;
double *BSIM4QspPtr;
double *BSIM4QbpPtr;
double *BSIM4QqPtr;
double *BSIM4DPqPtr;
double *BSIM4GPqPtr;
double *BSIM4SPqPtr;
#define BSIM4vbd BSIM4states+ 0
#define BSIM4vbs BSIM4states+ 1
#define BSIM4vgs BSIM4states+ 2
#define BSIM4vds BSIM4states+ 3
#define BSIM4vdbs BSIM4states+ 4
#define BSIM4vdbd BSIM4states+ 5
#define BSIM4vsbs BSIM4states+ 6
#define BSIM4vges BSIM4states+ 7
#define BSIM4vgms BSIM4states+ 8
#define BSIM4vses BSIM4states+ 9
#define BSIM4vdes BSIM4states+ 10
#define BSIM4qb BSIM4states+ 11
#define BSIM4cqb BSIM4states+ 12
#define BSIM4qg BSIM4states+ 13
#define BSIM4cqg BSIM4states+ 14
#define BSIM4qd BSIM4states+ 15
#define BSIM4cqd BSIM4states+ 16
#define BSIM4qgmid BSIM4states+ 17
#define BSIM4cqgmid BSIM4states+ 18
#define BSIM4qbs BSIM4states+ 19
#define BSIM4cqbs BSIM4states+ 20
#define BSIM4qbd BSIM4states+ 21
#define BSIM4cqbd BSIM4states+ 22
#define BSIM4qcheq BSIM4states+ 23
#define BSIM4cqcheq BSIM4states+ 24
#define BSIM4qcdump BSIM4states+ 25
#define BSIM4cqcdump BSIM4states+ 26
#define BSIM4qdef BSIM4states+ 27
#define BSIM4qs BSIM4states+ 28
#define BSIM4numStates 29
/* indices to the array of BSIM4 NOISE SOURCES */
#define BSIM4RDNOIZ 0
#define BSIM4RSNOIZ 1
#define BSIM4RGNOIZ 2
#define BSIM4RBPSNOIZ 3
#define BSIM4RBPDNOIZ 4
#define BSIM4RBPBNOIZ 5
#define BSIM4RBSBNOIZ 6
#define BSIM4RBDBNOIZ 7
#define BSIM4IDNOIZ 8
#define BSIM4FLNOIZ 9
#define BSIM4IGSNOIZ 10
#define BSIM4IGDNOIZ 11
#define BSIM4IGBNOIZ 12
#define BSIM4CORLNOIZ 13
#define BSIM4TOTNOIZ 14
#define BSIM4NSRCS 15 /* Number of BSIM4 noise sources */
#ifndef NONOISE
double BSIM4nVar[NSTATVARS][BSIM4NSRCS];
#else /* NONOISE */
double **BSIM4nVar;
#endif /* NONOISE */
} BSIM4instance ;
struct bsim4SizeDependParam
{
double Width;
double Length;
double NFinger;
double BSIM4cdsc;
double BSIM4cdscb;
double BSIM4cdscd;
double BSIM4cit;
double BSIM4nfactor;
double BSIM4xj;
double BSIM4vsat;
double BSIM4at;
double BSIM4a0;
double BSIM4ags;
double BSIM4a1;
double BSIM4a2;
double BSIM4keta;
double BSIM4nsub;
double BSIM4ndep;
double BSIM4nsd;
double BSIM4phin;
double BSIM4ngate;
double BSIM4gamma1;
double BSIM4gamma2;
double BSIM4vbx;
double BSIM4vbi;
double BSIM4vbm;
double BSIM4xt;
double BSIM4phi;
double BSIM4litl;
double BSIM4k1;
double BSIM4kt1;
double BSIM4kt1l;
double BSIM4kt2;
double BSIM4k2;
double BSIM4k3;
double BSIM4k3b;
double BSIM4w0;
double BSIM4dvtp0;
double BSIM4dvtp1;
double BSIM4dvtp2; /* New DIBL/Rout */
double BSIM4dvtp3;
double BSIM4dvtp4;
double BSIM4dvtp5;
double BSIM4lpe0;
double BSIM4lpeb;
double BSIM4dvt0;
double BSIM4dvt1;
double BSIM4dvt2;
double BSIM4dvt0w;
double BSIM4dvt1w;
double BSIM4dvt2w;
double BSIM4drout;
double BSIM4dsub;
double BSIM4vth0;
double BSIM4ua;
double BSIM4ua1;
double BSIM4ub;
double BSIM4ub1;
double BSIM4uc;
double BSIM4uc1;
double BSIM4ud;
double BSIM4ud1;
double BSIM4up;
double BSIM4lp;
double BSIM4u0;
double BSIM4eu;
double BSIM4ucs;
double BSIM4ute;
double BSIM4ucste;
double BSIM4voff;
double BSIM4tvoff;
double BSIM4tnfactor; /* v4.7 Temp dep of leakage current */
double BSIM4teta0; /* v4.7 temp dep of leakage current */
double BSIM4tvoffcv; /* v4.7 temp dep of leakage current */
double BSIM4minv;
double BSIM4minvcv;
double BSIM4vfb;
double BSIM4delta;
double BSIM4rdsw;
double BSIM4rds0;
double BSIM4rs0;
double BSIM4rd0;
double BSIM4rsw;
double BSIM4rdw;
double BSIM4prwg;
double BSIM4prwb;
double BSIM4prt;
double BSIM4eta0;
double BSIM4etab;
double BSIM4pclm;
double BSIM4pdibl1;
double BSIM4pdibl2;
double BSIM4pdiblb;
double BSIM4fprout;
double BSIM4pdits;
double BSIM4pditsd;
double BSIM4pscbe1;
double BSIM4pscbe2;
double BSIM4pvag;
double BSIM4wr;
double BSIM4dwg;
double BSIM4dwb;
double BSIM4b0;
double BSIM4b1;
double BSIM4alpha0;
double BSIM4alpha1;
double BSIM4beta0;
double BSIM4agidl;
double BSIM4bgidl;
double BSIM4cgidl;
double BSIM4egidl;
double BSIM4fgidl; /* v4.7 New GIDL/GISL */
double BSIM4kgidl; /* v4.7 New GIDL/GISL */
double BSIM4rgidl; /* v4.7 New GIDL/GISL */
double BSIM4agisl;
double BSIM4bgisl;
double BSIM4cgisl;
double BSIM4egisl;
double BSIM4fgisl; /* v4.7 New GIDL/GISL */
double BSIM4kgisl; /* v4.7 New GIDL/GISL */
double BSIM4rgisl; /* v4.7 New GIDL/GISL */
double BSIM4aigc;
double BSIM4bigc;
double BSIM4cigc;
double BSIM4aigs;
double BSIM4bigs;
double BSIM4cigs;
double BSIM4aigd;
double BSIM4bigd;
double BSIM4cigd;
double BSIM4aigbacc;
double BSIM4bigbacc;
double BSIM4cigbacc;
double BSIM4aigbinv;
double BSIM4bigbinv;
double BSIM4cigbinv;
double BSIM4nigc;
double BSIM4nigbacc;
double BSIM4nigbinv;
double BSIM4ntox;
double BSIM4eigbinv;
double BSIM4pigcd;
double BSIM4poxedge;
double BSIM4xrcrg1;
double BSIM4xrcrg2;
double BSIM4lambda; /* overshoot */
double BSIM4vtl; /* thermal velocity limit */
double BSIM4xn; /* back scattering parameter */
double BSIM4lc; /* back scattering parameter */
double BSIM4tfactor; /* ballistic transportation factor */
double BSIM4vfbsdoff; /* S/D flatband offset voltage */
double BSIM4tvfbsdoff;
/* added for stress effect */
double BSIM4ku0;
double BSIM4kvth0;
double BSIM4ku0temp;
double BSIM4rho_ref;
double BSIM4inv_od_ref;
/* added for well proximity effect */
double BSIM4kvth0we;
double BSIM4k2we;
double BSIM4ku0we;
/* CV model */
double BSIM4cgsl;
double BSIM4cgdl;
double BSIM4ckappas;
double BSIM4ckappad;
double BSIM4cf;
double BSIM4clc;
double BSIM4cle;
double BSIM4vfbcv;
double BSIM4noff;
double BSIM4voffcv;
double BSIM4acde;
double BSIM4moin;
/* Pre-calculated constants */
double BSIM4dw;
double BSIM4dl;
double BSIM4leff;
double BSIM4weff;
double BSIM4dwc;
double BSIM4dlc;
double BSIM4dwj;
double BSIM4leffCV;
double BSIM4weffCV;
double BSIM4weffCJ;
double BSIM4abulkCVfactor;
double BSIM4cgso;
double BSIM4cgdo;
double BSIM4cgbo;
double BSIM4u0temp;
double BSIM4vsattemp;
double BSIM4sqrtPhi;
double BSIM4phis3;
double BSIM4Xdep0;
double BSIM4sqrtXdep0;
double BSIM4theta0vb0;
double BSIM4thetaRout;
double BSIM4mstar;
double BSIM4VgsteffVth;
double BSIM4mstarcv;
double BSIM4voffcbn;
double BSIM4voffcbncv;
double BSIM4rdswmin;
double BSIM4rdwmin;
double BSIM4rswmin;
double BSIM4vfbsd;
double BSIM4cof1;
double BSIM4cof2;
double BSIM4cof3;
double BSIM4cof4;
double BSIM4cdep0;
double BSIM4ToxRatio;
double BSIM4Aechvb;
double BSIM4Bechvb;
double BSIM4ToxRatioEdge;
double BSIM4AechvbEdgeS;
double BSIM4AechvbEdgeD;
double BSIM4BechvbEdge;
double BSIM4ldeb;
double BSIM4k1ox;
double BSIM4k2ox;
double BSIM4vfbzbfactor;
double BSIM4dvtp2factor; /* v4.7 */
struct bsim4SizeDependParam *pNext;
};
typedef struct sBSIM4model
{
int BSIM4modType;
struct sBSIM4model *BSIM4nextModel;
BSIM4instance *BSIM4instances;
char BSIM4modName;
int BSIM4type;
int BSIM4mobMod;
int BSIM4cvchargeMod;
int BSIM4capMod;
int BSIM4dioMod;
int BSIM4trnqsMod;
int BSIM4acnqsMod;
int BSIM4fnoiMod;
int BSIM4tnoiMod;
int BSIM4rdsMod;
int BSIM4rbodyMod;
int BSIM4rgateMod;
int BSIM4perMod;
int BSIM4geoMod;
int BSIM4mtrlMod;
int BSIM4mtrlCompatMod; /* v4.7 */
int BSIM4gidlMod; /* v4.7 New GIDL/GISL */
int BSIM4igcMod;
int BSIM4igbMod;
int BSIM4tempMod;
int BSIM4binUnit;
int BSIM4paramChk;
char *BSIM4version;
double BSIM4eot;
double BSIM4vddeot;
double BSIM4tempeot;
double BSIM4leffeot;
double BSIM4weffeot;
double BSIM4ados;
double BSIM4bdos;
double BSIM4toxe;
double BSIM4toxp;
double BSIM4toxm;
double BSIM4dtox;
double BSIM4epsrox;
double BSIM4cdsc;
double BSIM4cdscb;
double BSIM4cdscd;
double BSIM4cit;
double BSIM4nfactor;
double BSIM4xj;
double BSIM4vsat;
double BSIM4at;
double BSIM4a0;
double BSIM4ags;
double BSIM4a1;
double BSIM4a2;
double BSIM4keta;
double BSIM4nsub;
double BSIM4phig;
double BSIM4epsrgate;
double BSIM4easub;
double BSIM4epsrsub;
double BSIM4ni0sub;
double BSIM4bg0sub;
double BSIM4tbgasub;
double BSIM4tbgbsub;
double BSIM4ndep;
double BSIM4nsd;
double BSIM4phin;
double BSIM4ngate;
double BSIM4gamma1;
double BSIM4gamma2;
double BSIM4vbx;
double BSIM4vbm;
double BSIM4xt;
double BSIM4k1;
double BSIM4kt1;
double BSIM4kt1l;
double BSIM4kt2;
double BSIM4k2;
double BSIM4k3;
double BSIM4k3b;
double BSIM4w0;
double BSIM4dvtp0;
double BSIM4dvtp1;
double BSIM4dvtp2; /* New DIBL/Rout */
double BSIM4dvtp3;
double BSIM4dvtp4;
double BSIM4dvtp5;
double BSIM4lpe0;
double BSIM4lpeb;
double BSIM4dvt0;
double BSIM4dvt1;
double BSIM4dvt2;
double BSIM4dvt0w;
double BSIM4dvt1w;
double BSIM4dvt2w;
double BSIM4drout;
double BSIM4dsub;
double BSIM4vth0;
double BSIM4eu;
double BSIM4ucs;
double BSIM4ua;
double BSIM4ua1;
double BSIM4ub;
double BSIM4ub1;
double BSIM4uc;
double BSIM4uc1;
double BSIM4ud;
double BSIM4ud1;
double BSIM4up;
double BSIM4lp;
double BSIM4u0;
double BSIM4ute;
double BSIM4ucste;
double BSIM4voff;
double BSIM4tvoff;
double BSIM4tnfactor; /* v4.7 Temp dep of leakage current */
double BSIM4teta0; /* v4.7 temp dep of leakage current */
double BSIM4tvoffcv; /* v4.7 temp dep of leakage current */
double BSIM4minv;
double BSIM4minvcv;
double BSIM4voffl;
double BSIM4voffcvl;
double BSIM4delta;
double BSIM4rdsw;
double BSIM4rdswmin;
double BSIM4rdwmin;
double BSIM4rswmin;
double BSIM4rsw;
double BSIM4rdw;
double BSIM4prwg;
double BSIM4prwb;
double BSIM4prt;
double BSIM4eta0;
double BSIM4etab;
double BSIM4pclm;
double BSIM4pdibl1;
double BSIM4pdibl2;
double BSIM4pdiblb;
double BSIM4fprout;
double BSIM4pdits;
double BSIM4pditsd;
double BSIM4pditsl;
double BSIM4pscbe1;
double BSIM4pscbe2;
double BSIM4pvag;
double BSIM4wr;
double BSIM4dwg;
double BSIM4dwb;
double BSIM4b0;
double BSIM4b1;
double BSIM4alpha0;
double BSIM4alpha1;
double BSIM4beta0;
double BSIM4agidl;
double BSIM4bgidl;
double BSIM4cgidl;
double BSIM4egidl;
double BSIM4fgidl; /* v4.7 New GIDL/GISL */
double BSIM4kgidl; /* v4.7 New GIDL/GISL */
double BSIM4rgidl; /* v4.7 New GIDL/GISL */
double BSIM4agisl;
double BSIM4bgisl;
double BSIM4cgisl;
double BSIM4egisl;
double BSIM4fgisl; /* v4.7 New GIDL/GISL */
double BSIM4kgisl; /* v4.7 New GIDL/GISL */
double BSIM4rgisl; /* v4.7 New GIDL/GISL */
double BSIM4aigc;
double BSIM4bigc;
double BSIM4cigc;
double BSIM4aigsd;
double BSIM4bigsd;
double BSIM4cigsd;
double BSIM4aigs;
double BSIM4bigs;
double BSIM4cigs;
double BSIM4aigd;
double BSIM4bigd;
double BSIM4cigd;
double BSIM4aigbacc;
double BSIM4bigbacc;
double BSIM4cigbacc;
double BSIM4aigbinv;
double BSIM4bigbinv;
double BSIM4cigbinv;
double BSIM4nigc;
double BSIM4nigbacc;
double BSIM4nigbinv;
double BSIM4ntox;
double BSIM4eigbinv;
double BSIM4pigcd;
double BSIM4poxedge;
double BSIM4toxref;
double BSIM4ijthdfwd;
double BSIM4ijthsfwd;
double BSIM4ijthdrev;
double BSIM4ijthsrev;
double BSIM4xjbvd;
double BSIM4xjbvs;
double BSIM4bvd;
double BSIM4bvs;
double BSIM4jtss;
double BSIM4jtsd;
double BSIM4jtssws;
double BSIM4jtsswd;
double BSIM4jtsswgs;
double BSIM4jtsswgd;
double BSIM4jtweff;
double BSIM4njts;
double BSIM4njtssw;
double BSIM4njtsswg;
double BSIM4njtsd;
double BSIM4njtsswd;
double BSIM4njtsswgd;
double BSIM4xtss;
double BSIM4xtsd;
double BSIM4xtssws;
double BSIM4xtsswd;
double BSIM4xtsswgs;
double BSIM4xtsswgd;
double BSIM4tnjts;
double BSIM4tnjtssw;
double BSIM4tnjtsswg;
double BSIM4tnjtsd;
double BSIM4tnjtsswd;
double BSIM4tnjtsswgd;
double BSIM4vtss;
double BSIM4vtsd;
double BSIM4vtssws;
double BSIM4vtsswd;
double BSIM4vtsswgs;
double BSIM4vtsswgd;
double BSIM4xrcrg1;
double BSIM4xrcrg2;
double BSIM4lambda;
double BSIM4vtl;
double BSIM4lc;
double BSIM4xn;
double BSIM4vfbsdoff; /* S/D flatband offset voltage */
double BSIM4lintnoi; /* lint offset for noise calculation */
double BSIM4tvfbsdoff;
double BSIM4vfb;
double BSIM4gbmin;
double BSIM4rbdb;
double BSIM4rbsb;
double BSIM4rbpb;
double BSIM4rbps;
double BSIM4rbpd;
double BSIM4rbps0;
double BSIM4rbpsl;
double BSIM4rbpsw;
double BSIM4rbpsnf;
double BSIM4rbpd0;
double BSIM4rbpdl;
double BSIM4rbpdw;
double BSIM4rbpdnf;
double BSIM4rbpbx0;
double BSIM4rbpbxl;
double BSIM4rbpbxw;
double BSIM4rbpbxnf;
double BSIM4rbpby0;
double BSIM4rbpbyl;
double BSIM4rbpbyw;
double BSIM4rbpbynf;
double BSIM4rbsbx0;
double BSIM4rbsby0;
double BSIM4rbdbx0;
double BSIM4rbdby0;
double BSIM4rbsdbxl;
double BSIM4rbsdbxw;
double BSIM4rbsdbxnf;
double BSIM4rbsdbyl;
double BSIM4rbsdbyw;
double BSIM4rbsdbynf;
double BSIM4tnoia;
double BSIM4tnoib;
double BSIM4tnoic;
double BSIM4rnoia;
double BSIM4rnoib;
double BSIM4rnoic;
double BSIM4ntnoi;
/* CV model and Parasitics */
double BSIM4cgsl;
double BSIM4cgdl;
double BSIM4ckappas;
double BSIM4ckappad;
double BSIM4cf;
double BSIM4vfbcv;
double BSIM4clc;
double BSIM4cle;
double BSIM4dwc;
double BSIM4dlc;
double BSIM4xw;
double BSIM4xl;
double BSIM4dlcig;
double BSIM4dlcigd;
double BSIM4dwj;
double BSIM4noff;