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