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