1 /**********
2  * Copyright 1990 Regents of the University of California. All rights reserved.
3  * File: b3mpar.c
4  * Author: 1995 Min-Chie Jeng and Mansun Chan.
5  * Modified by Paolo Nenzi 2002
6  **********/
7 
8 /*
9  * Release Notes:
10  * BSIM3v1v3.1,   Released by yuhua  96/12/08
11  */
12 
13 #include "ngspice/ngspice.h"
14 #include "bsim3v1def.h"
15 #include "ngspice/ifsim.h"
16 #include "ngspice/sperror.h"
17 #include "ngspice/suffix.h"
18 
19 
20 int
BSIM3v1mParam(int param,IFvalue * value,GENmodel * inMod)21 BSIM3v1mParam(int param, IFvalue *value, GENmodel *inMod)
22 {
23     BSIM3v1model *mod = (BSIM3v1model*)inMod;
24     switch(param)
25     {   case  BSIM3v1_MOD_MOBMOD :
26             mod->BSIM3v1mobMod = value->iValue;
27             mod->BSIM3v1mobModGiven = TRUE;
28             break;
29         case  BSIM3v1_MOD_BINUNIT :
30             mod->BSIM3v1binUnit = value->iValue;
31             mod->BSIM3v1binUnitGiven = TRUE;
32             break;
33         case  BSIM3v1_MOD_PARAMCHK :
34             mod->BSIM3v1paramChk = value->iValue;
35             mod->BSIM3v1paramChkGiven = TRUE;
36             break;
37         case  BSIM3v1_MOD_CAPMOD :
38             mod->BSIM3v1capMod = value->iValue;
39             mod->BSIM3v1capModGiven = TRUE;
40             break;
41         case  BSIM3v1_MOD_NQSMOD :
42             mod->BSIM3v1nqsMod = value->iValue;
43             mod->BSIM3v1nqsModGiven = TRUE;
44             break;
45         case  BSIM3v1_MOD_NOIMOD :
46             mod->BSIM3v1noiMod = value->iValue;
47             mod->BSIM3v1noiModGiven = TRUE;
48             break;
49         case  BSIM3v1_MOD_VERSION :
50             mod->BSIM3v1version = value->rValue;
51             mod->BSIM3v1versionGiven = TRUE;
52             break;
53         case  BSIM3v1_MOD_TOX :
54             mod->BSIM3v1tox = value->rValue;
55             mod->BSIM3v1toxGiven = TRUE;
56             break;
57 
58         case  BSIM3v1_MOD_CDSC :
59             mod->BSIM3v1cdsc = value->rValue;
60             mod->BSIM3v1cdscGiven = TRUE;
61             break;
62         case  BSIM3v1_MOD_CDSCB :
63             mod->BSIM3v1cdscb = value->rValue;
64             mod->BSIM3v1cdscbGiven = TRUE;
65             break;
66 
67         case  BSIM3v1_MOD_CDSCD :
68             mod->BSIM3v1cdscd = value->rValue;
69             mod->BSIM3v1cdscdGiven = TRUE;
70             break;
71 
72         case  BSIM3v1_MOD_CIT :
73             mod->BSIM3v1cit = value->rValue;
74             mod->BSIM3v1citGiven = TRUE;
75             break;
76         case  BSIM3v1_MOD_NFACTOR :
77             mod->BSIM3v1nfactor = value->rValue;
78             mod->BSIM3v1nfactorGiven = TRUE;
79             break;
80         case BSIM3v1_MOD_XJ:
81             mod->BSIM3v1xj = value->rValue;
82             mod->BSIM3v1xjGiven = TRUE;
83             break;
84         case BSIM3v1_MOD_VSAT:
85             mod->BSIM3v1vsat = value->rValue;
86             mod->BSIM3v1vsatGiven = TRUE;
87             break;
88         case BSIM3v1_MOD_A0:
89             mod->BSIM3v1a0 = value->rValue;
90             mod->BSIM3v1a0Given = TRUE;
91             break;
92 
93         case BSIM3v1_MOD_AGS:
94             mod->BSIM3v1ags= value->rValue;
95             mod->BSIM3v1agsGiven = TRUE;
96             break;
97 
98         case BSIM3v1_MOD_A1:
99             mod->BSIM3v1a1 = value->rValue;
100             mod->BSIM3v1a1Given = TRUE;
101             break;
102         case BSIM3v1_MOD_A2:
103             mod->BSIM3v1a2 = value->rValue;
104             mod->BSIM3v1a2Given = TRUE;
105             break;
106         case BSIM3v1_MOD_AT:
107             mod->BSIM3v1at = value->rValue;
108             mod->BSIM3v1atGiven = TRUE;
109             break;
110         case BSIM3v1_MOD_KETA:
111             mod->BSIM3v1keta = value->rValue;
112             mod->BSIM3v1ketaGiven = TRUE;
113             break;
114         case BSIM3v1_MOD_NSUB:
115             mod->BSIM3v1nsub = value->rValue;
116             mod->BSIM3v1nsubGiven = TRUE;
117             break;
118         case BSIM3v1_MOD_NPEAK:
119             mod->BSIM3v1npeak = value->rValue;
120             mod->BSIM3v1npeakGiven = TRUE;
121             if (mod->BSIM3v1npeak > 1.0e20)
122               mod->BSIM3v1npeak *= 1.0e-6;
123             break;
124         case BSIM3v1_MOD_NGATE:
125             mod->BSIM3v1ngate = value->rValue;
126             mod->BSIM3v1ngateGiven = TRUE;
127             if (mod->BSIM3v1ngate > 1.000001e24)
128               mod->BSIM3v1ngate *= 1.0e-6;
129             break;
130         case BSIM3v1_MOD_GAMMA1:
131             mod->BSIM3v1gamma1 = value->rValue;
132             mod->BSIM3v1gamma1Given = TRUE;
133             break;
134         case BSIM3v1_MOD_GAMMA2:
135             mod->BSIM3v1gamma2 = value->rValue;
136             mod->BSIM3v1gamma2Given = TRUE;
137             break;
138         case BSIM3v1_MOD_VBX:
139             mod->BSIM3v1vbx = value->rValue;
140             mod->BSIM3v1vbxGiven = TRUE;
141             break;
142         case BSIM3v1_MOD_VBM:
143             mod->BSIM3v1vbm = value->rValue;
144             mod->BSIM3v1vbmGiven = TRUE;
145             break;
146         case BSIM3v1_MOD_XT:
147             mod->BSIM3v1xt = value->rValue;
148             mod->BSIM3v1xtGiven = TRUE;
149             break;
150         case  BSIM3v1_MOD_K1:
151             mod->BSIM3v1k1 = value->rValue;
152             mod->BSIM3v1k1Given = TRUE;
153             break;
154         case  BSIM3v1_MOD_KT1:
155             mod->BSIM3v1kt1 = value->rValue;
156             mod->BSIM3v1kt1Given = TRUE;
157             break;
158         case  BSIM3v1_MOD_KT1L:
159             mod->BSIM3v1kt1l = value->rValue;
160             mod->BSIM3v1kt1lGiven = TRUE;
161             break;
162         case  BSIM3v1_MOD_KT2:
163             mod->BSIM3v1kt2 = value->rValue;
164             mod->BSIM3v1kt2Given = TRUE;
165             break;
166         case  BSIM3v1_MOD_K2:
167             mod->BSIM3v1k2 = value->rValue;
168             mod->BSIM3v1k2Given = TRUE;
169             break;
170         case  BSIM3v1_MOD_K3:
171             mod->BSIM3v1k3 = value->rValue;
172             mod->BSIM3v1k3Given = TRUE;
173             break;
174         case  BSIM3v1_MOD_K3B:
175             mod->BSIM3v1k3b = value->rValue;
176             mod->BSIM3v1k3bGiven = TRUE;
177             break;
178         case  BSIM3v1_MOD_NLX:
179             mod->BSIM3v1nlx = value->rValue;
180             mod->BSIM3v1nlxGiven = TRUE;
181             break;
182         case  BSIM3v1_MOD_W0:
183             mod->BSIM3v1w0 = value->rValue;
184             mod->BSIM3v1w0Given = TRUE;
185             break;
186         case  BSIM3v1_MOD_DVT0:
187             mod->BSIM3v1dvt0 = value->rValue;
188             mod->BSIM3v1dvt0Given = TRUE;
189             break;
190         case  BSIM3v1_MOD_DVT1:
191             mod->BSIM3v1dvt1 = value->rValue;
192             mod->BSIM3v1dvt1Given = TRUE;
193             break;
194         case  BSIM3v1_MOD_DVT2:
195             mod->BSIM3v1dvt2 = value->rValue;
196             mod->BSIM3v1dvt2Given = TRUE;
197             break;
198         case  BSIM3v1_MOD_DVT0W:
199             mod->BSIM3v1dvt0w = value->rValue;
200             mod->BSIM3v1dvt0wGiven = TRUE;
201             break;
202         case  BSIM3v1_MOD_DVT1W:
203             mod->BSIM3v1dvt1w = value->rValue;
204             mod->BSIM3v1dvt1wGiven = TRUE;
205             break;
206         case  BSIM3v1_MOD_DVT2W:
207             mod->BSIM3v1dvt2w = value->rValue;
208             mod->BSIM3v1dvt2wGiven = TRUE;
209             break;
210         case  BSIM3v1_MOD_DROUT:
211             mod->BSIM3v1drout = value->rValue;
212             mod->BSIM3v1droutGiven = TRUE;
213             break;
214         case  BSIM3v1_MOD_DSUB:
215             mod->BSIM3v1dsub = value->rValue;
216             mod->BSIM3v1dsubGiven = TRUE;
217             break;
218         case BSIM3v1_MOD_VTH0:
219             mod->BSIM3v1vth0 = value->rValue;
220             mod->BSIM3v1vth0Given = TRUE;
221             break;
222         case BSIM3v1_MOD_UA:
223             mod->BSIM3v1ua = value->rValue;
224             mod->BSIM3v1uaGiven = TRUE;
225             break;
226         case BSIM3v1_MOD_UA1:
227             mod->BSIM3v1ua1 = value->rValue;
228             mod->BSIM3v1ua1Given = TRUE;
229             break;
230         case BSIM3v1_MOD_UB:
231             mod->BSIM3v1ub = value->rValue;
232             mod->BSIM3v1ubGiven = TRUE;
233             break;
234         case BSIM3v1_MOD_UB1:
235             mod->BSIM3v1ub1 = value->rValue;
236             mod->BSIM3v1ub1Given = TRUE;
237             break;
238         case BSIM3v1_MOD_UC:
239             mod->BSIM3v1uc = value->rValue;
240             mod->BSIM3v1ucGiven = TRUE;
241             break;
242         case BSIM3v1_MOD_UC1:
243             mod->BSIM3v1uc1 = value->rValue;
244             mod->BSIM3v1uc1Given = TRUE;
245             break;
246         case  BSIM3v1_MOD_U0 :
247             mod->BSIM3v1u0 = value->rValue;
248             mod->BSIM3v1u0Given = TRUE;
249             break;
250         case  BSIM3v1_MOD_UTE :
251             mod->BSIM3v1ute = value->rValue;
252             mod->BSIM3v1uteGiven = TRUE;
253             break;
254         case BSIM3v1_MOD_VOFF:
255             mod->BSIM3v1voff = value->rValue;
256             mod->BSIM3v1voffGiven = TRUE;
257             break;
258         case  BSIM3v1_MOD_DELTA :
259             mod->BSIM3v1delta = value->rValue;
260             mod->BSIM3v1deltaGiven = TRUE;
261             break;
262         case BSIM3v1_MOD_RDSW:
263             mod->BSIM3v1rdsw = value->rValue;
264             mod->BSIM3v1rdswGiven = TRUE;
265             break;
266         case BSIM3v1_MOD_PRWG:
267             mod->BSIM3v1prwg = value->rValue;
268             mod->BSIM3v1prwgGiven = TRUE;
269             break;
270         case BSIM3v1_MOD_PRWB:
271             mod->BSIM3v1prwb = value->rValue;
272             mod->BSIM3v1prwbGiven = TRUE;
273             break;
274         case BSIM3v1_MOD_PRT:
275             mod->BSIM3v1prt = value->rValue;
276             mod->BSIM3v1prtGiven = TRUE;
277             break;
278         case BSIM3v1_MOD_ETA0:
279             mod->BSIM3v1eta0 = value->rValue;
280             mod->BSIM3v1eta0Given = TRUE;
281             break;
282         case BSIM3v1_MOD_ETAB:
283             mod->BSIM3v1etab = value->rValue;
284             mod->BSIM3v1etabGiven = TRUE;
285             break;
286         case BSIM3v1_MOD_PCLM:
287             mod->BSIM3v1pclm = value->rValue;
288             mod->BSIM3v1pclmGiven = TRUE;
289             break;
290         case BSIM3v1_MOD_PDIBL1:
291             mod->BSIM3v1pdibl1 = value->rValue;
292             mod->BSIM3v1pdibl1Given = TRUE;
293             break;
294         case BSIM3v1_MOD_PDIBL2:
295             mod->BSIM3v1pdibl2 = value->rValue;
296             mod->BSIM3v1pdibl2Given = TRUE;
297             break;
298         case BSIM3v1_MOD_PDIBLB:
299             mod->BSIM3v1pdiblb = value->rValue;
300             mod->BSIM3v1pdiblbGiven = TRUE;
301             break;
302         case BSIM3v1_MOD_PSCBE1:
303             mod->BSIM3v1pscbe1 = value->rValue;
304             mod->BSIM3v1pscbe1Given = TRUE;
305             break;
306         case BSIM3v1_MOD_PSCBE2:
307             mod->BSIM3v1pscbe2 = value->rValue;
308             mod->BSIM3v1pscbe2Given = TRUE;
309             break;
310         case BSIM3v1_MOD_PVAG:
311             mod->BSIM3v1pvag = value->rValue;
312             mod->BSIM3v1pvagGiven = TRUE;
313             break;
314         case  BSIM3v1_MOD_WR :
315             mod->BSIM3v1wr = value->rValue;
316             mod->BSIM3v1wrGiven = TRUE;
317             break;
318         case  BSIM3v1_MOD_DWG :
319             mod->BSIM3v1dwg = value->rValue;
320             mod->BSIM3v1dwgGiven = TRUE;
321             break;
322         case  BSIM3v1_MOD_DWB :
323             mod->BSIM3v1dwb = value->rValue;
324             mod->BSIM3v1dwbGiven = TRUE;
325             break;
326         case  BSIM3v1_MOD_B0 :
327             mod->BSIM3v1b0 = value->rValue;
328             mod->BSIM3v1b0Given = TRUE;
329             break;
330         case  BSIM3v1_MOD_B1 :
331             mod->BSIM3v1b1 = value->rValue;
332             mod->BSIM3v1b1Given = TRUE;
333             break;
334         case  BSIM3v1_MOD_ALPHA0 :
335             mod->BSIM3v1alpha0 = value->rValue;
336             mod->BSIM3v1alpha0Given = TRUE;
337             break;
338         case  BSIM3v1_MOD_BETA0 :
339             mod->BSIM3v1beta0 = value->rValue;
340             mod->BSIM3v1beta0Given = TRUE;
341             break;
342 
343         case  BSIM3v1_MOD_ELM :
344             mod->BSIM3v1elm = value->rValue;
345             mod->BSIM3v1elmGiven = TRUE;
346             break;
347         case  BSIM3v1_MOD_CGSL :
348             mod->BSIM3v1cgsl = value->rValue;
349             mod->BSIM3v1cgslGiven = TRUE;
350             break;
351         case  BSIM3v1_MOD_CGDL :
352             mod->BSIM3v1cgdl = value->rValue;
353             mod->BSIM3v1cgdlGiven = TRUE;
354             break;
355         case  BSIM3v1_MOD_CKAPPA :
356             mod->BSIM3v1ckappa = value->rValue;
357             mod->BSIM3v1ckappaGiven = TRUE;
358             break;
359         case  BSIM3v1_MOD_CF :
360             mod->BSIM3v1cf = value->rValue;
361             mod->BSIM3v1cfGiven = TRUE;
362             break;
363         case  BSIM3v1_MOD_CLC :
364             mod->BSIM3v1clc = value->rValue;
365             mod->BSIM3v1clcGiven = TRUE;
366             break;
367         case  BSIM3v1_MOD_CLE :
368             mod->BSIM3v1cle = value->rValue;
369             mod->BSIM3v1cleGiven = TRUE;
370             break;
371         case  BSIM3v1_MOD_DWC :
372             mod->BSIM3v1dwc = value->rValue;
373             mod->BSIM3v1dwcGiven = TRUE;
374             break;
375         case  BSIM3v1_MOD_DLC :
376             mod->BSIM3v1dlc = value->rValue;
377             mod->BSIM3v1dlcGiven = TRUE;
378             break;
379         case  BSIM3v1_MOD_VFBCV :
380             mod->BSIM3v1vfbcv = value->rValue;
381             mod->BSIM3v1vfbcvGiven = TRUE;
382             break;
383 
384 	/* Length dependence */
385         case  BSIM3v1_MOD_LCDSC :
386             mod->BSIM3v1lcdsc = value->rValue;
387             mod->BSIM3v1lcdscGiven = TRUE;
388             break;
389 
390 
391         case  BSIM3v1_MOD_LCDSCB :
392             mod->BSIM3v1lcdscb = value->rValue;
393             mod->BSIM3v1lcdscbGiven = TRUE;
394             break;
395         case  BSIM3v1_MOD_LCDSCD :
396             mod->BSIM3v1lcdscd = value->rValue;
397             mod->BSIM3v1lcdscdGiven = TRUE;
398             break;
399         case  BSIM3v1_MOD_LCIT :
400             mod->BSIM3v1lcit = value->rValue;
401             mod->BSIM3v1lcitGiven = TRUE;
402             break;
403         case  BSIM3v1_MOD_LNFACTOR :
404             mod->BSIM3v1lnfactor = value->rValue;
405             mod->BSIM3v1lnfactorGiven = TRUE;
406             break;
407         case BSIM3v1_MOD_LXJ:
408             mod->BSIM3v1lxj = value->rValue;
409             mod->BSIM3v1lxjGiven = TRUE;
410             break;
411         case BSIM3v1_MOD_LVSAT:
412             mod->BSIM3v1lvsat = value->rValue;
413             mod->BSIM3v1lvsatGiven = TRUE;
414             break;
415 
416 
417         case BSIM3v1_MOD_LA0:
418             mod->BSIM3v1la0 = value->rValue;
419             mod->BSIM3v1la0Given = TRUE;
420             break;
421         case BSIM3v1_MOD_LAGS:
422             mod->BSIM3v1lags = value->rValue;
423             mod->BSIM3v1lagsGiven = TRUE;
424             break;
425         case BSIM3v1_MOD_LA1:
426             mod->BSIM3v1la1 = value->rValue;
427             mod->BSIM3v1la1Given = TRUE;
428             break;
429         case BSIM3v1_MOD_LA2:
430             mod->BSIM3v1la2 = value->rValue;
431             mod->BSIM3v1la2Given = TRUE;
432             break;
433         case BSIM3v1_MOD_LAT:
434             mod->BSIM3v1lat = value->rValue;
435             mod->BSIM3v1latGiven = TRUE;
436             break;
437         case BSIM3v1_MOD_LKETA:
438             mod->BSIM3v1lketa = value->rValue;
439             mod->BSIM3v1lketaGiven = TRUE;
440             break;
441         case BSIM3v1_MOD_LNSUB:
442             mod->BSIM3v1lnsub = value->rValue;
443             mod->BSIM3v1lnsubGiven = TRUE;
444             break;
445         case BSIM3v1_MOD_LNPEAK:
446             mod->BSIM3v1lnpeak = value->rValue;
447             mod->BSIM3v1lnpeakGiven = TRUE;
448             if (mod->BSIM3v1lnpeak > 1.0e20)
449               mod->BSIM3v1lnpeak *= 1.0e-6;
450             break;
451         case BSIM3v1_MOD_LNGATE:
452             mod->BSIM3v1lngate = value->rValue;
453             mod->BSIM3v1lngateGiven = TRUE;
454             if (mod->BSIM3v1lngate > 1.0e23)
455               mod->BSIM3v1lngate *= 1.0e-6;
456             break;
457         case BSIM3v1_MOD_LGAMMA1:
458             mod->BSIM3v1lgamma1 = value->rValue;
459             mod->BSIM3v1lgamma1Given = TRUE;
460             break;
461         case BSIM3v1_MOD_LGAMMA2:
462             mod->BSIM3v1lgamma2 = value->rValue;
463             mod->BSIM3v1lgamma2Given = TRUE;
464             break;
465         case BSIM3v1_MOD_LVBX:
466             mod->BSIM3v1lvbx = value->rValue;
467             mod->BSIM3v1lvbxGiven = TRUE;
468             break;
469         case BSIM3v1_MOD_LVBM:
470             mod->BSIM3v1lvbm = value->rValue;
471             mod->BSIM3v1lvbmGiven = TRUE;
472             break;
473         case BSIM3v1_MOD_LXT:
474             mod->BSIM3v1lxt = value->rValue;
475             mod->BSIM3v1lxtGiven = TRUE;
476             break;
477         case  BSIM3v1_MOD_LK1:
478             mod->BSIM3v1lk1 = value->rValue;
479             mod->BSIM3v1lk1Given = TRUE;
480             break;
481         case  BSIM3v1_MOD_LKT1:
482             mod->BSIM3v1lkt1 = value->rValue;
483             mod->BSIM3v1lkt1Given = TRUE;
484             break;
485         case  BSIM3v1_MOD_LKT1L:
486             mod->BSIM3v1lkt1l = value->rValue;
487             mod->BSIM3v1lkt1lGiven = TRUE;
488             break;
489         case  BSIM3v1_MOD_LKT2:
490             mod->BSIM3v1lkt2 = value->rValue;
491             mod->BSIM3v1lkt2Given = TRUE;
492             break;
493         case  BSIM3v1_MOD_LK2:
494             mod->BSIM3v1lk2 = value->rValue;
495             mod->BSIM3v1lk2Given = TRUE;
496             break;
497         case  BSIM3v1_MOD_LK3:
498             mod->BSIM3v1lk3 = value->rValue;
499             mod->BSIM3v1lk3Given = TRUE;
500             break;
501         case  BSIM3v1_MOD_LK3B:
502             mod->BSIM3v1lk3b = value->rValue;
503             mod->BSIM3v1lk3bGiven = TRUE;
504             break;
505         case  BSIM3v1_MOD_LNLX:
506             mod->BSIM3v1lnlx = value->rValue;
507             mod->BSIM3v1lnlxGiven = TRUE;
508             break;
509         case  BSIM3v1_MOD_LW0:
510             mod->BSIM3v1lw0 = value->rValue;
511             mod->BSIM3v1lw0Given = TRUE;
512             break;
513         case  BSIM3v1_MOD_LDVT0:
514             mod->BSIM3v1ldvt0 = value->rValue;
515             mod->BSIM3v1ldvt0Given = TRUE;
516             break;
517         case  BSIM3v1_MOD_LDVT1:
518             mod->BSIM3v1ldvt1 = value->rValue;
519             mod->BSIM3v1ldvt1Given = TRUE;
520             break;
521         case  BSIM3v1_MOD_LDVT2:
522             mod->BSIM3v1ldvt2 = value->rValue;
523             mod->BSIM3v1ldvt2Given = TRUE;
524             break;
525         case  BSIM3v1_MOD_LDVT0W:
526             mod->BSIM3v1ldvt0w = value->rValue;
527             mod->BSIM3v1ldvt0Given = TRUE;
528             break;
529         case  BSIM3v1_MOD_LDVT1W:
530             mod->BSIM3v1ldvt1w = value->rValue;
531             mod->BSIM3v1ldvt1wGiven = TRUE;
532             break;
533         case  BSIM3v1_MOD_LDVT2W:
534             mod->BSIM3v1ldvt2w = value->rValue;
535             mod->BSIM3v1ldvt2wGiven = TRUE;
536             break;
537         case  BSIM3v1_MOD_LDROUT:
538             mod->BSIM3v1ldrout = value->rValue;
539             mod->BSIM3v1ldroutGiven = TRUE;
540             break;
541         case  BSIM3v1_MOD_LDSUB:
542             mod->BSIM3v1ldsub = value->rValue;
543             mod->BSIM3v1ldsubGiven = TRUE;
544             break;
545         case BSIM3v1_MOD_LVTH0:
546             mod->BSIM3v1lvth0 = value->rValue;
547             mod->BSIM3v1lvth0Given = TRUE;
548             break;
549         case BSIM3v1_MOD_LUA:
550             mod->BSIM3v1lua = value->rValue;
551             mod->BSIM3v1luaGiven = TRUE;
552             break;
553         case BSIM3v1_MOD_LUA1:
554             mod->BSIM3v1lua1 = value->rValue;
555             mod->BSIM3v1lua1Given = TRUE;
556             break;
557         case BSIM3v1_MOD_LUB:
558             mod->BSIM3v1lub = value->rValue;
559             mod->BSIM3v1lubGiven = TRUE;
560             break;
561         case BSIM3v1_MOD_LUB1:
562             mod->BSIM3v1lub1 = value->rValue;
563             mod->BSIM3v1lub1Given = TRUE;
564             break;
565         case BSIM3v1_MOD_LUC:
566             mod->BSIM3v1luc = value->rValue;
567             mod->BSIM3v1lucGiven = TRUE;
568             break;
569         case BSIM3v1_MOD_LUC1:
570             mod->BSIM3v1luc1 = value->rValue;
571             mod->BSIM3v1luc1Given = TRUE;
572             break;
573         case  BSIM3v1_MOD_LU0 :
574             mod->BSIM3v1lu0 = value->rValue;
575             mod->BSIM3v1lu0Given = TRUE;
576             break;
577         case  BSIM3v1_MOD_LUTE :
578             mod->BSIM3v1lute = value->rValue;
579             mod->BSIM3v1luteGiven = TRUE;
580             break;
581         case BSIM3v1_MOD_LVOFF:
582             mod->BSIM3v1lvoff = value->rValue;
583             mod->BSIM3v1lvoffGiven = TRUE;
584             break;
585         case  BSIM3v1_MOD_LDELTA :
586             mod->BSIM3v1ldelta = value->rValue;
587             mod->BSIM3v1ldeltaGiven = TRUE;
588             break;
589         case BSIM3v1_MOD_LRDSW:
590             mod->BSIM3v1lrdsw = value->rValue;
591             mod->BSIM3v1lrdswGiven = TRUE;
592             break;
593         case BSIM3v1_MOD_LPRWB:
594             mod->BSIM3v1lprwb = value->rValue;
595             mod->BSIM3v1lprwbGiven = TRUE;
596             break;
597         case BSIM3v1_MOD_LPRWG:
598             mod->BSIM3v1lprwg = value->rValue;
599             mod->BSIM3v1lprwgGiven = TRUE;
600             break;
601         case BSIM3v1_MOD_LPRT:
602             mod->BSIM3v1lprt = value->rValue;
603             mod->BSIM3v1lprtGiven = TRUE;
604             break;
605         case BSIM3v1_MOD_LETA0:
606             mod->BSIM3v1leta0 = value->rValue;
607             mod->BSIM3v1leta0Given = TRUE;
608             break;
609         case BSIM3v1_MOD_LETAB:
610             mod->BSIM3v1letab = value->rValue;
611             mod->BSIM3v1letabGiven = TRUE;
612             break;
613         case BSIM3v1_MOD_LPCLM:
614             mod->BSIM3v1lpclm = value->rValue;
615             mod->BSIM3v1lpclmGiven = TRUE;
616             break;
617         case BSIM3v1_MOD_LPDIBL1:
618             mod->BSIM3v1lpdibl1 = value->rValue;
619             mod->BSIM3v1lpdibl1Given = TRUE;
620             break;
621         case BSIM3v1_MOD_LPDIBL2:
622             mod->BSIM3v1lpdibl2 = value->rValue;
623             mod->BSIM3v1lpdibl2Given = TRUE;
624             break;
625         case BSIM3v1_MOD_LPDIBLB:
626             mod->BSIM3v1lpdiblb = value->rValue;
627             mod->BSIM3v1lpdiblbGiven = TRUE;
628             break;
629         case BSIM3v1_MOD_LPSCBE1:
630             mod->BSIM3v1lpscbe1 = value->rValue;
631             mod->BSIM3v1lpscbe1Given = TRUE;
632             break;
633         case BSIM3v1_MOD_LPSCBE2:
634             mod->BSIM3v1lpscbe2 = value->rValue;
635             mod->BSIM3v1lpscbe2Given = TRUE;
636             break;
637         case BSIM3v1_MOD_LPVAG:
638             mod->BSIM3v1lpvag = value->rValue;
639             mod->BSIM3v1lpvagGiven = TRUE;
640             break;
641         case  BSIM3v1_MOD_LWR :
642             mod->BSIM3v1lwr = value->rValue;
643             mod->BSIM3v1lwrGiven = TRUE;
644             break;
645         case  BSIM3v1_MOD_LDWG :
646             mod->BSIM3v1ldwg = value->rValue;
647             mod->BSIM3v1ldwgGiven = TRUE;
648             break;
649         case  BSIM3v1_MOD_LDWB :
650             mod->BSIM3v1ldwb = value->rValue;
651             mod->BSIM3v1ldwbGiven = TRUE;
652             break;
653         case  BSIM3v1_MOD_LB0 :
654             mod->BSIM3v1lb0 = value->rValue;
655             mod->BSIM3v1lb0Given = TRUE;
656             break;
657         case  BSIM3v1_MOD_LB1 :
658             mod->BSIM3v1lb1 = value->rValue;
659             mod->BSIM3v1lb1Given = TRUE;
660             break;
661         case  BSIM3v1_MOD_LALPHA0 :
662             mod->BSIM3v1lalpha0 = value->rValue;
663             mod->BSIM3v1lalpha0Given = TRUE;
664             break;
665         case  BSIM3v1_MOD_LBETA0 :
666             mod->BSIM3v1lbeta0 = value->rValue;
667             mod->BSIM3v1lbeta0Given = TRUE;
668             break;
669 
670         case  BSIM3v1_MOD_LELM :
671             mod->BSIM3v1lelm = value->rValue;
672             mod->BSIM3v1lelmGiven = TRUE;
673             break;
674         case  BSIM3v1_MOD_LCGSL :
675             mod->BSIM3v1lcgsl = value->rValue;
676             mod->BSIM3v1lcgslGiven = TRUE;
677             break;
678         case  BSIM3v1_MOD_LCGDL :
679             mod->BSIM3v1lcgdl = value->rValue;
680             mod->BSIM3v1lcgdlGiven = TRUE;
681             break;
682         case  BSIM3v1_MOD_LCKAPPA :
683             mod->BSIM3v1lckappa = value->rValue;
684             mod->BSIM3v1lckappaGiven = TRUE;
685             break;
686         case  BSIM3v1_MOD_LCF :
687             mod->BSIM3v1lcf = value->rValue;
688             mod->BSIM3v1lcfGiven = TRUE;
689             break;
690         case  BSIM3v1_MOD_LCLC :
691             mod->BSIM3v1lclc = value->rValue;
692             mod->BSIM3v1lclcGiven = TRUE;
693             break;
694         case  BSIM3v1_MOD_LCLE :
695             mod->BSIM3v1lcle = value->rValue;
696             mod->BSIM3v1lcleGiven = TRUE;
697             break;
698         case  BSIM3v1_MOD_LVFBCV :
699             mod->BSIM3v1lvfbcv = value->rValue;
700             mod->BSIM3v1lvfbcvGiven = TRUE;
701             break;
702 
703 	/* Width dependence */
704         case  BSIM3v1_MOD_WCDSC :
705             mod->BSIM3v1wcdsc = value->rValue;
706             mod->BSIM3v1wcdscGiven = TRUE;
707             break;
708 
709 
710          case  BSIM3v1_MOD_WCDSCB :
711             mod->BSIM3v1wcdscb = value->rValue;
712             mod->BSIM3v1wcdscbGiven = TRUE;
713             break;
714          case  BSIM3v1_MOD_WCDSCD :
715             mod->BSIM3v1wcdscd = value->rValue;
716             mod->BSIM3v1wcdscdGiven = TRUE;
717             break;
718         case  BSIM3v1_MOD_WCIT :
719             mod->BSIM3v1wcit = value->rValue;
720             mod->BSIM3v1wcitGiven = TRUE;
721             break;
722         case  BSIM3v1_MOD_WNFACTOR :
723             mod->BSIM3v1wnfactor = value->rValue;
724             mod->BSIM3v1wnfactorGiven = TRUE;
725             break;
726         case BSIM3v1_MOD_WXJ:
727             mod->BSIM3v1wxj = value->rValue;
728             mod->BSIM3v1wxjGiven = TRUE;
729             break;
730         case BSIM3v1_MOD_WVSAT:
731             mod->BSIM3v1wvsat = value->rValue;
732             mod->BSIM3v1wvsatGiven = TRUE;
733             break;
734 
735 
736         case BSIM3v1_MOD_WA0:
737             mod->BSIM3v1wa0 = value->rValue;
738             mod->BSIM3v1wa0Given = TRUE;
739             break;
740         case BSIM3v1_MOD_WAGS:
741             mod->BSIM3v1wags = value->rValue;
742             mod->BSIM3v1wagsGiven = TRUE;
743             break;
744         case BSIM3v1_MOD_WA1:
745             mod->BSIM3v1wa1 = value->rValue;
746             mod->BSIM3v1wa1Given = TRUE;
747             break;
748         case BSIM3v1_MOD_WA2:
749             mod->BSIM3v1wa2 = value->rValue;
750             mod->BSIM3v1wa2Given = TRUE;
751             break;
752         case BSIM3v1_MOD_WAT:
753             mod->BSIM3v1wat = value->rValue;
754             mod->BSIM3v1watGiven = TRUE;
755             break;
756         case BSIM3v1_MOD_WKETA:
757             mod->BSIM3v1wketa = value->rValue;
758             mod->BSIM3v1wketaGiven = TRUE;
759             break;
760         case BSIM3v1_MOD_WNSUB:
761             mod->BSIM3v1wnsub = value->rValue;
762             mod->BSIM3v1wnsubGiven = TRUE;
763             break;
764         case BSIM3v1_MOD_WNPEAK:
765             mod->BSIM3v1wnpeak = value->rValue;
766             mod->BSIM3v1wnpeakGiven = TRUE;
767             if (mod->BSIM3v1wnpeak > 1.0e20)
768               mod->BSIM3v1wnpeak *= 1.0e-6;
769             break;
770         case BSIM3v1_MOD_WNGATE:
771             mod->BSIM3v1wngate = value->rValue;
772             mod->BSIM3v1wngateGiven = TRUE;
773             if (mod->BSIM3v1wngate > 1.0e23)
774               mod->BSIM3v1wngate *= 1.0e-6;
775             break;
776         case BSIM3v1_MOD_WGAMMA1:
777             mod->BSIM3v1wgamma1 = value->rValue;
778             mod->BSIM3v1wgamma1Given = TRUE;
779             break;
780         case BSIM3v1_MOD_WGAMMA2:
781             mod->BSIM3v1wgamma2 = value->rValue;
782             mod->BSIM3v1wgamma2Given = TRUE;
783             break;
784         case BSIM3v1_MOD_WVBX:
785             mod->BSIM3v1wvbx = value->rValue;
786             mod->BSIM3v1wvbxGiven = TRUE;
787             break;
788         case BSIM3v1_MOD_WVBM:
789             mod->BSIM3v1wvbm = value->rValue;
790             mod->BSIM3v1wvbmGiven = TRUE;
791             break;
792         case BSIM3v1_MOD_WXT:
793             mod->BSIM3v1wxt = value->rValue;
794             mod->BSIM3v1wxtGiven = TRUE;
795             break;
796         case  BSIM3v1_MOD_WK1:
797             mod->BSIM3v1wk1 = value->rValue;
798             mod->BSIM3v1wk1Given = TRUE;
799             break;
800         case  BSIM3v1_MOD_WKT1:
801             mod->BSIM3v1wkt1 = value->rValue;
802             mod->BSIM3v1wkt1Given = TRUE;
803             break;
804         case  BSIM3v1_MOD_WKT1L:
805             mod->BSIM3v1wkt1l = value->rValue;
806             mod->BSIM3v1wkt1lGiven = TRUE;
807             break;
808         case  BSIM3v1_MOD_WKT2:
809             mod->BSIM3v1wkt2 = value->rValue;
810             mod->BSIM3v1wkt2Given = TRUE;
811             break;
812         case  BSIM3v1_MOD_WK2:
813             mod->BSIM3v1wk2 = value->rValue;
814             mod->BSIM3v1wk2Given = TRUE;
815             break;
816         case  BSIM3v1_MOD_WK3:
817             mod->BSIM3v1wk3 = value->rValue;
818             mod->BSIM3v1wk3Given = TRUE;
819             break;
820         case  BSIM3v1_MOD_WK3B:
821             mod->BSIM3v1wk3b = value->rValue;
822             mod->BSIM3v1wk3bGiven = TRUE;
823             break;
824         case  BSIM3v1_MOD_WNLX:
825             mod->BSIM3v1wnlx = value->rValue;
826             mod->BSIM3v1wnlxGiven = TRUE;
827             break;
828         case  BSIM3v1_MOD_WW0:
829             mod->BSIM3v1ww0 = value->rValue;
830             mod->BSIM3v1ww0Given = TRUE;
831             break;
832         case  BSIM3v1_MOD_WDVT0:
833             mod->BSIM3v1wdvt0 = value->rValue;
834             mod->BSIM3v1wdvt0Given = TRUE;
835             break;
836         case  BSIM3v1_MOD_WDVT1:
837             mod->BSIM3v1wdvt1 = value->rValue;
838             mod->BSIM3v1wdvt1Given = TRUE;
839             break;
840         case  BSIM3v1_MOD_WDVT2:
841             mod->BSIM3v1wdvt2 = value->rValue;
842             mod->BSIM3v1wdvt2Given = TRUE;
843             break;
844         case  BSIM3v1_MOD_WDVT0W:
845             mod->BSIM3v1wdvt0w = value->rValue;
846             mod->BSIM3v1wdvt0wGiven = TRUE;
847             break;
848         case  BSIM3v1_MOD_WDVT1W:
849             mod->BSIM3v1wdvt1w = value->rValue;
850             mod->BSIM3v1wdvt1wGiven = TRUE;
851             break;
852         case  BSIM3v1_MOD_WDVT2W:
853             mod->BSIM3v1wdvt2w = value->rValue;
854             mod->BSIM3v1wdvt2wGiven = TRUE;
855             break;
856         case  BSIM3v1_MOD_WDROUT:
857             mod->BSIM3v1wdrout = value->rValue;
858             mod->BSIM3v1wdroutGiven = TRUE;
859             break;
860         case  BSIM3v1_MOD_WDSUB:
861             mod->BSIM3v1wdsub = value->rValue;
862             mod->BSIM3v1wdsubGiven = TRUE;
863             break;
864         case BSIM3v1_MOD_WVTH0:
865             mod->BSIM3v1wvth0 = value->rValue;
866             mod->BSIM3v1wvth0Given = TRUE;
867             break;
868         case BSIM3v1_MOD_WUA:
869             mod->BSIM3v1wua = value->rValue;
870             mod->BSIM3v1wuaGiven = TRUE;
871             break;
872         case BSIM3v1_MOD_WUA1:
873             mod->BSIM3v1wua1 = value->rValue;
874             mod->BSIM3v1wua1Given = TRUE;
875             break;
876         case BSIM3v1_MOD_WUB:
877             mod->BSIM3v1wub = value->rValue;
878             mod->BSIM3v1wubGiven = TRUE;
879             break;
880         case BSIM3v1_MOD_WUB1:
881             mod->BSIM3v1wub1 = value->rValue;
882             mod->BSIM3v1wub1Given = TRUE;
883             break;
884         case BSIM3v1_MOD_WUC:
885             mod->BSIM3v1wuc = value->rValue;
886             mod->BSIM3v1wucGiven = TRUE;
887             break;
888         case BSIM3v1_MOD_WUC1:
889             mod->BSIM3v1wuc1 = value->rValue;
890             mod->BSIM3v1wuc1Given = TRUE;
891             break;
892         case  BSIM3v1_MOD_WU0 :
893             mod->BSIM3v1wu0 = value->rValue;
894             mod->BSIM3v1wu0Given = TRUE;
895             break;
896         case  BSIM3v1_MOD_WUTE :
897             mod->BSIM3v1wute = value->rValue;
898             mod->BSIM3v1wuteGiven = TRUE;
899             break;
900         case BSIM3v1_MOD_WVOFF:
901             mod->BSIM3v1wvoff = value->rValue;
902             mod->BSIM3v1wvoffGiven = TRUE;
903             break;
904         case  BSIM3v1_MOD_WDELTA :
905             mod->BSIM3v1wdelta = value->rValue;
906             mod->BSIM3v1wdeltaGiven = TRUE;
907             break;
908         case BSIM3v1_MOD_WRDSW:
909             mod->BSIM3v1wrdsw = value->rValue;
910             mod->BSIM3v1wrdswGiven = TRUE;
911             break;
912         case BSIM3v1_MOD_WPRWB:
913             mod->BSIM3v1wprwb = value->rValue;
914             mod->BSIM3v1wprwbGiven = TRUE;
915             break;
916         case BSIM3v1_MOD_WPRWG:
917             mod->BSIM3v1wprwg = value->rValue;
918             mod->BSIM3v1wprwgGiven = TRUE;
919             break;
920         case BSIM3v1_MOD_WPRT:
921             mod->BSIM3v1wprt = value->rValue;
922             mod->BSIM3v1wprtGiven = TRUE;
923             break;
924         case BSIM3v1_MOD_WETA0:
925             mod->BSIM3v1weta0 = value->rValue;
926             mod->BSIM3v1weta0Given = TRUE;
927             break;
928         case BSIM3v1_MOD_WETAB:
929             mod->BSIM3v1wetab = value->rValue;
930             mod->BSIM3v1wetabGiven = TRUE;
931             break;
932         case BSIM3v1_MOD_WPCLM:
933             mod->BSIM3v1wpclm = value->rValue;
934             mod->BSIM3v1wpclmGiven = TRUE;
935             break;
936         case BSIM3v1_MOD_WPDIBL1:
937             mod->BSIM3v1wpdibl1 = value->rValue;
938             mod->BSIM3v1wpdibl1Given = TRUE;
939             break;
940         case BSIM3v1_MOD_WPDIBL2:
941             mod->BSIM3v1wpdibl2 = value->rValue;
942             mod->BSIM3v1wpdibl2Given = TRUE;
943             break;
944         case BSIM3v1_MOD_WPDIBLB:
945             mod->BSIM3v1wpdiblb = value->rValue;
946             mod->BSIM3v1wpdiblbGiven = TRUE;
947             break;
948         case BSIM3v1_MOD_WPSCBE1:
949             mod->BSIM3v1wpscbe1 = value->rValue;
950             mod->BSIM3v1wpscbe1Given = TRUE;
951             break;
952         case BSIM3v1_MOD_WPSCBE2:
953             mod->BSIM3v1wpscbe2 = value->rValue;
954             mod->BSIM3v1wpscbe2Given = TRUE;
955             break;
956         case BSIM3v1_MOD_WPVAG:
957             mod->BSIM3v1wpvag = value->rValue;
958             mod->BSIM3v1wpvagGiven = TRUE;
959             break;
960         case  BSIM3v1_MOD_WWR :
961             mod->BSIM3v1wwr = value->rValue;
962             mod->BSIM3v1wwrGiven = TRUE;
963             break;
964         case  BSIM3v1_MOD_WDWG :
965             mod->BSIM3v1wdwg = value->rValue;
966             mod->BSIM3v1wdwgGiven = TRUE;
967             break;
968         case  BSIM3v1_MOD_WDWB :
969             mod->BSIM3v1wdwb = value->rValue;
970             mod->BSIM3v1wdwbGiven = TRUE;
971             break;
972         case  BSIM3v1_MOD_WB0 :
973             mod->BSIM3v1wb0 = value->rValue;
974             mod->BSIM3v1wb0Given = TRUE;
975             break;
976         case  BSIM3v1_MOD_WB1 :
977             mod->BSIM3v1wb1 = value->rValue;
978             mod->BSIM3v1wb1Given = TRUE;
979             break;
980         case  BSIM3v1_MOD_WALPHA0 :
981             mod->BSIM3v1walpha0 = value->rValue;
982             mod->BSIM3v1walpha0Given = TRUE;
983             break;
984         case  BSIM3v1_MOD_WBETA0 :
985             mod->BSIM3v1wbeta0 = value->rValue;
986             mod->BSIM3v1wbeta0Given = TRUE;
987             break;
988 
989         case  BSIM3v1_MOD_WELM :
990             mod->BSIM3v1welm = value->rValue;
991             mod->BSIM3v1welmGiven = TRUE;
992             break;
993         case  BSIM3v1_MOD_WCGSL :
994             mod->BSIM3v1wcgsl = value->rValue;
995             mod->BSIM3v1wcgslGiven = TRUE;
996             break;
997         case  BSIM3v1_MOD_WCGDL :
998             mod->BSIM3v1wcgdl = value->rValue;
999             mod->BSIM3v1wcgdlGiven = TRUE;
1000             break;
1001         case  BSIM3v1_MOD_WCKAPPA :
1002             mod->BSIM3v1wckappa = value->rValue;
1003             mod->BSIM3v1wckappaGiven = TRUE;
1004             break;
1005         case  BSIM3v1_MOD_WCF :
1006             mod->BSIM3v1wcf = value->rValue;
1007             mod->BSIM3v1wcfGiven = TRUE;
1008             break;
1009         case  BSIM3v1_MOD_WCLC :
1010             mod->BSIM3v1wclc = value->rValue;
1011             mod->BSIM3v1wclcGiven = TRUE;
1012             break;
1013         case  BSIM3v1_MOD_WCLE :
1014             mod->BSIM3v1wcle = value->rValue;
1015             mod->BSIM3v1wcleGiven = TRUE;
1016             break;
1017         case  BSIM3v1_MOD_WVFBCV :
1018             mod->BSIM3v1wvfbcv = value->rValue;
1019             mod->BSIM3v1wvfbcvGiven = TRUE;
1020             break;
1021 
1022 	/* Cross-term dependence */
1023         case  BSIM3v1_MOD_PCDSC :
1024             mod->BSIM3v1pcdsc = value->rValue;
1025             mod->BSIM3v1pcdscGiven = TRUE;
1026             break;
1027 
1028 
1029         case  BSIM3v1_MOD_PCDSCB :
1030             mod->BSIM3v1pcdscb = value->rValue;
1031             mod->BSIM3v1pcdscbGiven = TRUE;
1032             break;
1033         case  BSIM3v1_MOD_PCDSCD :
1034             mod->BSIM3v1pcdscd = value->rValue;
1035             mod->BSIM3v1pcdscdGiven = TRUE;
1036             break;
1037         case  BSIM3v1_MOD_PCIT :
1038             mod->BSIM3v1pcit = value->rValue;
1039             mod->BSIM3v1pcitGiven = TRUE;
1040             break;
1041         case  BSIM3v1_MOD_PNFACTOR :
1042             mod->BSIM3v1pnfactor = value->rValue;
1043             mod->BSIM3v1pnfactorGiven = TRUE;
1044             break;
1045         case BSIM3v1_MOD_PXJ:
1046             mod->BSIM3v1pxj = value->rValue;
1047             mod->BSIM3v1pxjGiven = TRUE;
1048             break;
1049         case BSIM3v1_MOD_PVSAT:
1050             mod->BSIM3v1pvsat = value->rValue;
1051             mod->BSIM3v1pvsatGiven = TRUE;
1052             break;
1053 
1054 
1055         case BSIM3v1_MOD_PA0:
1056             mod->BSIM3v1pa0 = value->rValue;
1057             mod->BSIM3v1pa0Given = TRUE;
1058             break;
1059         case BSIM3v1_MOD_PAGS:
1060             mod->BSIM3v1pags = value->rValue;
1061             mod->BSIM3v1pagsGiven = TRUE;
1062             break;
1063         case BSIM3v1_MOD_PA1:
1064             mod->BSIM3v1pa1 = value->rValue;
1065             mod->BSIM3v1pa1Given = TRUE;
1066             break;
1067         case BSIM3v1_MOD_PA2:
1068             mod->BSIM3v1pa2 = value->rValue;
1069             mod->BSIM3v1pa2Given = TRUE;
1070             break;
1071         case BSIM3v1_MOD_PAT:
1072             mod->BSIM3v1pat = value->rValue;
1073             mod->BSIM3v1patGiven = TRUE;
1074             break;
1075         case BSIM3v1_MOD_PKETA:
1076             mod->BSIM3v1pketa = value->rValue;
1077             mod->BSIM3v1pketaGiven = TRUE;
1078             break;
1079         case BSIM3v1_MOD_PNSUB:
1080             mod->BSIM3v1pnsub = value->rValue;
1081             mod->BSIM3v1pnsubGiven = TRUE;
1082             break;
1083         case BSIM3v1_MOD_PNPEAK:
1084             mod->BSIM3v1pnpeak = value->rValue;
1085             mod->BSIM3v1pnpeakGiven = TRUE;
1086             if (mod->BSIM3v1pnpeak > 1.0e20)
1087               mod->BSIM3v1pnpeak *= 1.0e-6;
1088             break;
1089         case BSIM3v1_MOD_PNGATE:
1090             mod->BSIM3v1pngate = value->rValue;
1091             mod->BSIM3v1pngateGiven = TRUE;
1092             if (mod->BSIM3v1pngate > 1.0e23)
1093               mod->BSIM3v1pngate *= 1.0e-6;
1094             break;
1095         case BSIM3v1_MOD_PGAMMA1:
1096             mod->BSIM3v1pgamma1 = value->rValue;
1097             mod->BSIM3v1pgamma1Given = TRUE;
1098             break;
1099         case BSIM3v1_MOD_PGAMMA2:
1100             mod->BSIM3v1pgamma2 = value->rValue;
1101             mod->BSIM3v1pgamma2Given = TRUE;
1102             break;
1103         case BSIM3v1_MOD_PVBX:
1104             mod->BSIM3v1pvbx = value->rValue;
1105             mod->BSIM3v1pvbxGiven = TRUE;
1106             break;
1107         case BSIM3v1_MOD_PVBM:
1108             mod->BSIM3v1pvbm = value->rValue;
1109             mod->BSIM3v1pvbmGiven = TRUE;
1110             break;
1111         case BSIM3v1_MOD_PXT:
1112             mod->BSIM3v1pxt = value->rValue;
1113             mod->BSIM3v1pxtGiven = TRUE;
1114             break;
1115         case  BSIM3v1_MOD_PK1:
1116             mod->BSIM3v1pk1 = value->rValue;
1117             mod->BSIM3v1pk1Given = TRUE;
1118             break;
1119         case  BSIM3v1_MOD_PKT1:
1120             mod->BSIM3v1pkt1 = value->rValue;
1121             mod->BSIM3v1pkt1Given = TRUE;
1122             break;
1123         case  BSIM3v1_MOD_PKT1L:
1124             mod->BSIM3v1pkt1l = value->rValue;
1125             mod->BSIM3v1pkt1lGiven = TRUE;
1126             break;
1127         case  BSIM3v1_MOD_PKT2:
1128             mod->BSIM3v1pkt2 = value->rValue;
1129             mod->BSIM3v1pkt2Given = TRUE;
1130             break;
1131         case  BSIM3v1_MOD_PK2:
1132             mod->BSIM3v1pk2 = value->rValue;
1133             mod->BSIM3v1pk2Given = TRUE;
1134             break;
1135         case  BSIM3v1_MOD_PK3:
1136             mod->BSIM3v1pk3 = value->rValue;
1137             mod->BSIM3v1pk3Given = TRUE;
1138             break;
1139         case  BSIM3v1_MOD_PK3B:
1140             mod->BSIM3v1pk3b = value->rValue;
1141             mod->BSIM3v1pk3bGiven = TRUE;
1142             break;
1143         case  BSIM3v1_MOD_PNLX:
1144             mod->BSIM3v1pnlx = value->rValue;
1145             mod->BSIM3v1pnlxGiven = TRUE;
1146             break;
1147         case  BSIM3v1_MOD_PW0:
1148             mod->BSIM3v1pw0 = value->rValue;
1149             mod->BSIM3v1pw0Given = TRUE;
1150             break;
1151         case  BSIM3v1_MOD_PDVT0:
1152             mod->BSIM3v1pdvt0 = value->rValue;
1153             mod->BSIM3v1pdvt0Given = TRUE;
1154             break;
1155         case  BSIM3v1_MOD_PDVT1:
1156             mod->BSIM3v1pdvt1 = value->rValue;
1157             mod->BSIM3v1pdvt1Given = TRUE;
1158             break;
1159         case  BSIM3v1_MOD_PDVT2:
1160             mod->BSIM3v1pdvt2 = value->rValue;
1161             mod->BSIM3v1pdvt2Given = TRUE;
1162             break;
1163         case  BSIM3v1_MOD_PDVT0W:
1164             mod->BSIM3v1pdvt0w = value->rValue;
1165             mod->BSIM3v1pdvt0wGiven = TRUE;
1166             break;
1167         case  BSIM3v1_MOD_PDVT1W:
1168             mod->BSIM3v1pdvt1w = value->rValue;
1169             mod->BSIM3v1pdvt1wGiven = TRUE;
1170             break;
1171         case  BSIM3v1_MOD_PDVT2W:
1172             mod->BSIM3v1pdvt2w = value->rValue;
1173             mod->BSIM3v1pdvt2wGiven = TRUE;
1174             break;
1175         case  BSIM3v1_MOD_PDROUT:
1176             mod->BSIM3v1pdrout = value->rValue;
1177             mod->BSIM3v1pdroutGiven = TRUE;
1178             break;
1179         case  BSIM3v1_MOD_PDSUB:
1180             mod->BSIM3v1pdsub = value->rValue;
1181             mod->BSIM3v1pdsubGiven = TRUE;
1182             break;
1183         case BSIM3v1_MOD_PVTH0:
1184             mod->BSIM3v1pvth0 = value->rValue;
1185             mod->BSIM3v1pvth0Given = TRUE;
1186             break;
1187         case BSIM3v1_MOD_PUA:
1188             mod->BSIM3v1pua = value->rValue;
1189             mod->BSIM3v1puaGiven = TRUE;
1190             break;
1191         case BSIM3v1_MOD_PUA1:
1192             mod->BSIM3v1pua1 = value->rValue;
1193             mod->BSIM3v1pua1Given = TRUE;
1194             break;
1195         case BSIM3v1_MOD_PUB:
1196             mod->BSIM3v1pub = value->rValue;
1197             mod->BSIM3v1pubGiven = TRUE;
1198             break;
1199         case BSIM3v1_MOD_PUB1:
1200             mod->BSIM3v1pub1 = value->rValue;
1201             mod->BSIM3v1pub1Given = TRUE;
1202             break;
1203         case BSIM3v1_MOD_PUC:
1204             mod->BSIM3v1puc = value->rValue;
1205             mod->BSIM3v1pucGiven = TRUE;
1206             break;
1207         case BSIM3v1_MOD_PUC1:
1208             mod->BSIM3v1puc1 = value->rValue;
1209             mod->BSIM3v1puc1Given = TRUE;
1210             break;
1211         case  BSIM3v1_MOD_PU0 :
1212             mod->BSIM3v1pu0 = value->rValue;
1213             mod->BSIM3v1pu0Given = TRUE;
1214             break;
1215         case  BSIM3v1_MOD_PUTE :
1216             mod->BSIM3v1pute = value->rValue;
1217             mod->BSIM3v1puteGiven = TRUE;
1218             break;
1219         case BSIM3v1_MOD_PVOFF:
1220             mod->BSIM3v1pvoff = value->rValue;
1221             mod->BSIM3v1pvoffGiven = TRUE;
1222             break;
1223         case  BSIM3v1_MOD_PDELTA :
1224             mod->BSIM3v1pdelta = value->rValue;
1225             mod->BSIM3v1pdeltaGiven = TRUE;
1226             break;
1227         case BSIM3v1_MOD_PRDSW:
1228             mod->BSIM3v1prdsw = value->rValue;
1229             mod->BSIM3v1prdswGiven = TRUE;
1230             break;
1231         case BSIM3v1_MOD_PPRWB:
1232             mod->BSIM3v1pprwb = value->rValue;
1233             mod->BSIM3v1pprwbGiven = TRUE;
1234             break;
1235         case BSIM3v1_MOD_PPRWG:
1236             mod->BSIM3v1pprwg = value->rValue;
1237             mod->BSIM3v1pprwgGiven = TRUE;
1238             break;
1239         case BSIM3v1_MOD_PPRT:
1240             mod->BSIM3v1pprt = value->rValue;
1241             mod->BSIM3v1pprtGiven = TRUE;
1242             break;
1243         case BSIM3v1_MOD_PETA0:
1244             mod->BSIM3v1peta0 = value->rValue;
1245             mod->BSIM3v1peta0Given = TRUE;
1246             break;
1247         case BSIM3v1_MOD_PETAB:
1248             mod->BSIM3v1petab = value->rValue;
1249             mod->BSIM3v1petabGiven = TRUE;
1250             break;
1251         case BSIM3v1_MOD_PPCLM:
1252             mod->BSIM3v1ppclm = value->rValue;
1253             mod->BSIM3v1ppclmGiven = TRUE;
1254             break;
1255         case BSIM3v1_MOD_PPDIBL1:
1256             mod->BSIM3v1ppdibl1 = value->rValue;
1257             mod->BSIM3v1ppdibl1Given = TRUE;
1258             break;
1259         case BSIM3v1_MOD_PPDIBL2:
1260             mod->BSIM3v1ppdibl2 = value->rValue;
1261             mod->BSIM3v1ppdibl2Given = TRUE;
1262             break;
1263         case BSIM3v1_MOD_PPDIBLB:
1264             mod->BSIM3v1ppdiblb = value->rValue;
1265             mod->BSIM3v1ppdiblbGiven = TRUE;
1266             break;
1267         case BSIM3v1_MOD_PPSCBE1:
1268             mod->BSIM3v1ppscbe1 = value->rValue;
1269             mod->BSIM3v1ppscbe1Given = TRUE;
1270             break;
1271         case BSIM3v1_MOD_PPSCBE2:
1272             mod->BSIM3v1ppscbe2 = value->rValue;
1273             mod->BSIM3v1ppscbe2Given = TRUE;
1274             break;
1275         case BSIM3v1_MOD_PPVAG:
1276             mod->BSIM3v1ppvag = value->rValue;
1277             mod->BSIM3v1ppvagGiven = TRUE;
1278             break;
1279         case  BSIM3v1_MOD_PWR :
1280             mod->BSIM3v1pwr = value->rValue;
1281             mod->BSIM3v1pwrGiven = TRUE;
1282             break;
1283         case  BSIM3v1_MOD_PDWG :
1284             mod->BSIM3v1pdwg = value->rValue;
1285             mod->BSIM3v1pdwgGiven = TRUE;
1286             break;
1287         case  BSIM3v1_MOD_PDWB :
1288             mod->BSIM3v1pdwb = value->rValue;
1289             mod->BSIM3v1pdwbGiven = TRUE;
1290             break;
1291         case  BSIM3v1_MOD_PB0 :
1292             mod->BSIM3v1pb0 = value->rValue;
1293             mod->BSIM3v1pb0Given = TRUE;
1294             break;
1295         case  BSIM3v1_MOD_PB1 :
1296             mod->BSIM3v1pb1 = value->rValue;
1297             mod->BSIM3v1pb1Given = TRUE;
1298             break;
1299         case  BSIM3v1_MOD_PALPHA0 :
1300             mod->BSIM3v1palpha0 = value->rValue;
1301             mod->BSIM3v1palpha0Given = TRUE;
1302             break;
1303         case  BSIM3v1_MOD_PBETA0 :
1304             mod->BSIM3v1pbeta0 = value->rValue;
1305             mod->BSIM3v1pbeta0Given = TRUE;
1306             break;
1307 
1308         case  BSIM3v1_MOD_PELM :
1309             mod->BSIM3v1pelm = value->rValue;
1310             mod->BSIM3v1pelmGiven = TRUE;
1311             break;
1312         case  BSIM3v1_MOD_PCGSL :
1313             mod->BSIM3v1pcgsl = value->rValue;
1314             mod->BSIM3v1pcgslGiven = TRUE;
1315             break;
1316         case  BSIM3v1_MOD_PCGDL :
1317             mod->BSIM3v1pcgdl = value->rValue;
1318             mod->BSIM3v1pcgdlGiven = TRUE;
1319             break;
1320         case  BSIM3v1_MOD_PCKAPPA :
1321             mod->BSIM3v1pckappa = value->rValue;
1322             mod->BSIM3v1pckappaGiven = TRUE;
1323             break;
1324         case  BSIM3v1_MOD_PCF :
1325             mod->BSIM3v1pcf = value->rValue;
1326             mod->BSIM3v1pcfGiven = TRUE;
1327             break;
1328         case  BSIM3v1_MOD_PCLC :
1329             mod->BSIM3v1pclc = value->rValue;
1330             mod->BSIM3v1pclcGiven = TRUE;
1331             break;
1332         case  BSIM3v1_MOD_PCLE :
1333             mod->BSIM3v1pcle = value->rValue;
1334             mod->BSIM3v1pcleGiven = TRUE;
1335             break;
1336         case  BSIM3v1_MOD_PVFBCV :
1337             mod->BSIM3v1pvfbcv = value->rValue;
1338             mod->BSIM3v1pvfbcvGiven = TRUE;
1339             break;
1340 
1341         case  BSIM3v1_MOD_TNOM :
1342             mod->BSIM3v1tnom = value->rValue + 273.15;
1343             mod->BSIM3v1tnomGiven = TRUE;
1344             break;
1345         case  BSIM3v1_MOD_CGSO :
1346             mod->BSIM3v1cgso = value->rValue;
1347             mod->BSIM3v1cgsoGiven = TRUE;
1348             break;
1349         case  BSIM3v1_MOD_CGDO :
1350             mod->BSIM3v1cgdo = value->rValue;
1351             mod->BSIM3v1cgdoGiven = TRUE;
1352             break;
1353         case  BSIM3v1_MOD_CGBO :
1354             mod->BSIM3v1cgbo = value->rValue;
1355             mod->BSIM3v1cgboGiven = TRUE;
1356             break;
1357         case  BSIM3v1_MOD_XPART :
1358             mod->BSIM3v1xpart = value->rValue;
1359             mod->BSIM3v1xpartGiven = TRUE;
1360             break;
1361         case  BSIM3v1_MOD_RSH :
1362             mod->BSIM3v1sheetResistance = value->rValue;
1363             mod->BSIM3v1sheetResistanceGiven = TRUE;
1364             break;
1365         case  BSIM3v1_MOD_JS :
1366             mod->BSIM3v1jctSatCurDensity = value->rValue;
1367             mod->BSIM3v1jctSatCurDensityGiven = TRUE;
1368             break;
1369         case  BSIM3v1_MOD_JSW :
1370             mod->BSIM3v1jctSidewallSatCurDensity = value->rValue;
1371             mod->BSIM3v1jctSidewallSatCurDensityGiven = TRUE;
1372             break;
1373         case  BSIM3v1_MOD_PB :
1374             mod->BSIM3v1bulkJctPotential = value->rValue;
1375             mod->BSIM3v1bulkJctPotentialGiven = TRUE;
1376             break;
1377         case  BSIM3v1_MOD_MJ :
1378             mod->BSIM3v1bulkJctBotGradingCoeff = value->rValue;
1379             mod->BSIM3v1bulkJctBotGradingCoeffGiven = TRUE;
1380             break;
1381         case  BSIM3v1_MOD_PBSW :
1382             mod->BSIM3v1sidewallJctPotential = value->rValue;
1383             mod->BSIM3v1sidewallJctPotentialGiven = TRUE;
1384             break;
1385         case  BSIM3v1_MOD_MJSW :
1386             mod->BSIM3v1bulkJctSideGradingCoeff = value->rValue;
1387             mod->BSIM3v1bulkJctSideGradingCoeffGiven = TRUE;
1388             break;
1389         case  BSIM3v1_MOD_CJ :
1390             mod->BSIM3v1unitAreaJctCap = value->rValue;
1391             mod->BSIM3v1unitAreaJctCapGiven = TRUE;
1392             break;
1393         case  BSIM3v1_MOD_CJSW :
1394             mod->BSIM3v1unitLengthSidewallJctCap = value->rValue;
1395             mod->BSIM3v1unitLengthSidewallJctCapGiven = TRUE;
1396             break;
1397         case  BSIM3v1_MOD_NJ :
1398             mod->BSIM3v1jctEmissionCoeff = value->rValue;
1399             mod->BSIM3v1jctEmissionCoeffGiven = TRUE;
1400             break;
1401         case  BSIM3v1_MOD_PBSWG :
1402             mod->BSIM3v1GatesidewallJctPotential = value->rValue;
1403             mod->BSIM3v1GatesidewallJctPotentialGiven = TRUE;
1404             break;
1405         case  BSIM3v1_MOD_MJSWG :
1406             mod->BSIM3v1bulkJctGateSideGradingCoeff = value->rValue;
1407             mod->BSIM3v1bulkJctGateSideGradingCoeffGiven = TRUE;
1408             break;
1409         case  BSIM3v1_MOD_CJSWG :
1410             mod->BSIM3v1unitLengthGateSidewallJctCap = value->rValue;
1411             mod->BSIM3v1unitLengthGateSidewallJctCapGiven = TRUE;
1412             break;
1413         case  BSIM3v1_MOD_XTI :
1414             mod->BSIM3v1jctTempExponent = value->rValue;
1415             mod->BSIM3v1jctTempExponentGiven = TRUE;
1416             break;
1417         case  BSIM3v1_MOD_LINT :
1418             mod->BSIM3v1Lint = value->rValue;
1419             mod->BSIM3v1LintGiven = TRUE;
1420             break;
1421         case  BSIM3v1_MOD_LL :
1422             mod->BSIM3v1Ll = value->rValue;
1423             mod->BSIM3v1LlGiven = TRUE;
1424             break;
1425         case  BSIM3v1_MOD_LLN :
1426             mod->BSIM3v1Lln = value->rValue;
1427             mod->BSIM3v1LlnGiven = TRUE;
1428             break;
1429         case  BSIM3v1_MOD_LW :
1430             mod->BSIM3v1Lw = value->rValue;
1431             mod->BSIM3v1LwGiven = TRUE;
1432             break;
1433         case  BSIM3v1_MOD_LWN :
1434             mod->BSIM3v1Lwn = value->rValue;
1435             mod->BSIM3v1LwnGiven = TRUE;
1436             break;
1437         case  BSIM3v1_MOD_LWL :
1438             mod->BSIM3v1Lwl = value->rValue;
1439             mod->BSIM3v1LwlGiven = TRUE;
1440             break;
1441         case  BSIM3v1_MOD_LMIN :
1442             mod->BSIM3v1Lmin = value->rValue;
1443             mod->BSIM3v1LminGiven = TRUE;
1444             break;
1445         case  BSIM3v1_MOD_LMAX :
1446             mod->BSIM3v1Lmax = value->rValue;
1447             mod->BSIM3v1LmaxGiven = TRUE;
1448             break;
1449         case  BSIM3v1_MOD_WINT :
1450             mod->BSIM3v1Wint = value->rValue;
1451             mod->BSIM3v1WintGiven = TRUE;
1452             break;
1453         case  BSIM3v1_MOD_WL :
1454             mod->BSIM3v1Wl = value->rValue;
1455             mod->BSIM3v1WlGiven = TRUE;
1456             break;
1457         case  BSIM3v1_MOD_WLN :
1458             mod->BSIM3v1Wln = value->rValue;
1459             mod->BSIM3v1WlnGiven = TRUE;
1460             break;
1461         case  BSIM3v1_MOD_WW :
1462             mod->BSIM3v1Ww = value->rValue;
1463             mod->BSIM3v1WwGiven = TRUE;
1464             break;
1465         case  BSIM3v1_MOD_WWN :
1466             mod->BSIM3v1Wwn = value->rValue;
1467             mod->BSIM3v1WwnGiven = TRUE;
1468             break;
1469         case  BSIM3v1_MOD_WWL :
1470             mod->BSIM3v1Wwl = value->rValue;
1471             mod->BSIM3v1WwlGiven = TRUE;
1472             break;
1473         case  BSIM3v1_MOD_WMIN :
1474             mod->BSIM3v1Wmin = value->rValue;
1475             mod->BSIM3v1WminGiven = TRUE;
1476             break;
1477         case  BSIM3v1_MOD_WMAX :
1478             mod->BSIM3v1Wmax = value->rValue;
1479             mod->BSIM3v1WmaxGiven = TRUE;
1480             break;
1481 
1482         case  BSIM3v1_MOD_NOIA :
1483             mod->BSIM3v1oxideTrapDensityA = value->rValue;
1484             mod->BSIM3v1oxideTrapDensityAGiven = TRUE;
1485             break;
1486         case  BSIM3v1_MOD_NOIB :
1487             mod->BSIM3v1oxideTrapDensityB = value->rValue;
1488             mod->BSIM3v1oxideTrapDensityBGiven = TRUE;
1489             break;
1490         case  BSIM3v1_MOD_NOIC :
1491             mod->BSIM3v1oxideTrapDensityC = value->rValue;
1492             mod->BSIM3v1oxideTrapDensityCGiven = TRUE;
1493             break;
1494         case  BSIM3v1_MOD_EM :
1495             mod->BSIM3v1em = value->rValue;
1496             mod->BSIM3v1emGiven = TRUE;
1497             break;
1498         case  BSIM3v1_MOD_EF :
1499             mod->BSIM3v1ef = value->rValue;
1500             mod->BSIM3v1efGiven = TRUE;
1501             break;
1502         case  BSIM3v1_MOD_AF :
1503             mod->BSIM3v1af = value->rValue;
1504             mod->BSIM3v1afGiven = TRUE;
1505             break;
1506         case  BSIM3v1_MOD_KF :
1507             mod->BSIM3v1kf = value->rValue;
1508             mod->BSIM3v1kfGiven = TRUE;
1509             break;
1510         case  BSIM3v1_MOD_NMOS  :
1511             if(value->iValue) {
1512                 mod->BSIM3v1type = 1;
1513                 mod->BSIM3v1typeGiven = TRUE;
1514             }
1515             break;
1516         case  BSIM3v1_MOD_PMOS  :
1517             if(value->iValue) {
1518                 mod->BSIM3v1type = - 1;
1519                 mod->BSIM3v1typeGiven = TRUE;
1520             }
1521             break;
1522 /* serban */
1523         case  BSIM3v1_MOD_HDIF  :
1524             mod->BSIM3v1hdif = value->rValue;
1525             mod->BSIM3v1hdifGiven = TRUE;
1526             break;
1527         default:
1528             return(E_BADPARM);
1529     }
1530     return(OK);
1531 }
1532 
1533 
1534