Jspice3
mosmpar.c
Go to the documentation of this file.
1 /***************************************************************************
2 JSPICE3 adaptation of Spice3f2 - Copyright (c) Stephen R. Whiteley 1992
3 Copyright 1990 Regents of the University of California. All rights reserved.
4 Authors: 1985 Thomas L. Quarles
5  1989 Takayasu Sakurai
6  1993 Stephen R. Whiteley
7 ****************************************************************************/
8 
9 #include "spice.h"
10 #include <stdio.h>
11 #include "mosdefs.h"
12 #include "const.h"
13 #include "sperror.h"
14 #include "util.h"
15 
16 
17 int
18 MOSmParam(param,value,inModel)
19 
20 int param;
21 IFvalue *value;
22 GENmodel *inModel;
23 {
24  MOSmodel *model = (MOSmodel *)inModel;
25 
26  switch (param) {
27 
28  case MOS_MOD_LEVEL:
29  model->MOSlevel = value->iValue;
30  model->MOSlevelGiven = TRUE;
31  break;
32  case MOS_MOD_TNOM:
33  model->MOStnom = value->rValue+CONSTCtoK;
34  model->MOStnomGiven = TRUE;
35  break;
36  case MOS_MOD_VTO:
37  model->MOSvt0 = value->rValue;
38  model->MOSvt0Given = TRUE;
39  break;
40  case MOS_MOD_KP:
41  model->MOStransconductance = value->rValue;
43  break;
44  case MOS_MOD_GAMMA:
45  model->MOSgamma = value->rValue;
46  model->MOSgammaGiven = TRUE;
47  break;
48  case MOS_MOD_PHI:
49  model->MOSphi = value->rValue;
50  model->MOSphiGiven = TRUE;
51  break;
52  case MOS_MOD_RD:
53  model->MOSdrainResistance = value->rValue;
55  break;
56  case MOS_MOD_RS:
57  model->MOSsourceResistance = value->rValue;
59  break;
60  case MOS_MOD_CBD:
61  model->MOScapBD = value->rValue;
62  model->MOScapBDGiven = TRUE;
63  break;
64  case MOS_MOD_CBS:
65  model->MOScapBS = value->rValue;
66  model->MOScapBSGiven = TRUE;
67  break;
68  case MOS_MOD_IS:
69  model->MOSjctSatCur = value->rValue;
70  model->MOSjctSatCurGiven = TRUE;
71  break;
72  case MOS_MOD_PB:
73  model->MOSbulkJctPotential = value->rValue;
75  break;
76  case MOS_MOD_CGSO:
77  model->MOSgateSourceOverlapCapFactor = value->rValue;
79  break;
80  case MOS_MOD_CGDO:
81  model->MOSgateDrainOverlapCapFactor = value->rValue;
83  break;
84  case MOS_MOD_CGBO:
85  model->MOSgateBulkOverlapCapFactor = value->rValue;
87  break;
88  case MOS_MOD_CJ:
89  model->MOSbulkCapFactor = value->rValue;
90  model->MOSbulkCapFactorGiven = TRUE;
91  break;
92  case MOS_MOD_MJ:
93  model->MOSbulkJctBotGradingCoeff = value->rValue;
95  break;
96  case MOS_MOD_CJSW:
97  model->MOSsideWallCapFactor = value->rValue;
99  break;
100  case MOS_MOD_MJSW:
101  model->MOSbulkJctSideGradingCoeff = value->rValue;
103  break;
104  case MOS_MOD_JS:
105  model->MOSjctSatCurDensity = value->rValue;
107  break;
108  case MOS_MOD_TOX:
109  model->MOSoxideThickness = value->rValue;
110  model->MOSoxideThicknessGiven = TRUE;
111  break;
112  case MOS_MOD_LD:
113  model->MOSlatDiff = value->rValue;
114  model->MOSlatDiffGiven = TRUE;
115  break;
116  case MOS_MOD_RSH:
117  model->MOSsheetResistance = value->rValue;
118  model->MOSsheetResistanceGiven = TRUE;
119  break;
120  case MOS_MOD_U0:
121  model->MOSsurfaceMobility = value->rValue;
122  model->MOSsurfaceMobilityGiven = TRUE;
123  break;
124  case MOS_MOD_FC:
125  model->MOSfwdCapDepCoeff = value->rValue;
126  model->MOSfwdCapDepCoeffGiven = TRUE;
127  break;
128  case MOS_MOD_NSS:
129  model->MOSsurfaceStateDensity = value->rValue;
131  break;
132  case MOS_MOD_NSUB:
133  model->MOSsubstrateDoping = value->rValue;
134  model->MOSsubstrateDopingGiven = TRUE;
135  break;
136  case MOS_MOD_TPG:
137  model->MOSgateType = value->iValue;
138  model->MOSgateTypeGiven = TRUE;
139  break;
140  case MOS_MOD_NMOS:
141  if(value->iValue) {
142  model->MOStype = 1;
143  model->MOStypeGiven = TRUE;
144  }
145  break;
146  case MOS_MOD_PMOS:
147  if(value->iValue) {
148  model->MOStype = -1;
149  model->MOStypeGiven = TRUE;
150  }
151  break;
152  case MOS_MOD_KF:
153  model->MOSfNcoef = value->rValue;
154  model->MOSfNcoefGiven = TRUE;
155  break;
156  case MOS_MOD_AF:
157  model->MOSfNexp = value->rValue;
158  model->MOSfNexpGiven = TRUE;
159  break;
160  case MOS_MOD_LAMBDA:
161  /* levels 1 and 2 */
162  model->MOSlambda = value->rValue;
163  model->MOSlambdaGiven = TRUE;
164  break;
165  case MOS_MOD_UEXP:
166  /* level 2 */
167  model->MOScritFieldExp = value->rValue;
168  model->MOScritFieldExpGiven = TRUE;
169  break;
170  case MOS_MOD_NEFF:
171  /* level 2 */
172  model->MOSchannelCharge = value->rValue;
173  model->MOSchannelChargeGiven = TRUE;
174  break;
175  case MOS_MOD_UCRIT:
176  /* level 2 */
177  model->MOScritField = value->rValue;
178  model->MOScritFieldGiven = TRUE;
179  break;
180  case MOS_MOD_NFS:
181  /* levels 2 and 3 */
182  model->MOSfastSurfaceStateDensity = value->rValue;
184  break;
185  case MOS_MOD_DELTA:
186  /* levels 2 and 3 */
187  model->MOSnarrowFactor = value->rValue;
188  model->MOSnarrowFactorGiven = TRUE;
189  break;
190  case MOS_MOD_VMAX:
191  /* levels 2 and 3 */
192  model->MOSmaxDriftVel = value->rValue;
193  model->MOSmaxDriftVelGiven = TRUE;
194  break;
195  case MOS_MOD_XJ:
196  /* levels 2 and 3 */
197  model->MOSjunctionDepth = value->rValue;
198  model->MOSjunctionDepthGiven = TRUE;
199  break;
200  case MOS_MOD_ETA:
201  /* level 3 */
202  model->MOSeta = value->rValue;
203  model->MOSetaGiven = TRUE;
204  break;
205  case MOS_MOD_THETA:
206  /* level 3 */
207  model->MOStheta = value->rValue;
208  model->MOSthetaGiven = TRUE;
209  break;
210  case MOS_MOD_KAPPA:
211  /* level 3 */
212  model->MOSkappa = value->rValue;
213  model->MOSkappaGiven = TRUE;
214  break;
215  case MOS_MOD_KV:
216  /* level 6 */
217  model->MOSkv = value->rValue;
218  model->MOSkvGiven = TRUE;
219  break;
220  case MOS_MOD_NV:
221  /* level 6 */
222  model->MOSnv = value->rValue;
223  model->MOSnvGiven = TRUE;
224  break;
225  case MOS_MOD_KC:
226  /* level 6 */
227  model->MOSkc = value->rValue;
228  model->MOSkcGiven = TRUE;
229  break;
230  case MOS_MOD_NC:
231  /* level 6 */
232  model->MOSnc = value->rValue;
233  model->MOSncGiven = TRUE;
234  break;
235  case MOS_MOD_GAMMA1:
236  /* level 6 */
237  model->MOSgamma1 = value->rValue;
238  model->MOSgamma1Given = TRUE;
239  break;
240  case MOS_MOD_SIGMA:
241  /* level 6 */
242  model->MOSsigma = value->rValue;
243  model->MOSsigmaGiven = TRUE;
244  break;
245  case MOS_MOD_LAMDA0:
246  /* level 6 */
247  model->MOSlamda0 = value->rValue;
248  model->MOSlamda0Given = TRUE;
249  break;
250  case MOS_MOD_LAMDA1:
251  /* level 6 */
252  model->MOSlamda1 = value->rValue;
253  model->MOSlamda1Given = TRUE;
254  break;
255  case MOS_MOD_A1:
256  /* level 8, CryoMOS by Luong Huynh 1/19/95 */
257  model->MOSa1 = value->rValue;
258  model->MOSa1Given = TRUE;
259  break;
260  case MOS_MOD_A2:
261  /* level 8, CryoMOS by Luong Huynh 1/19/95 */
262  model->MOSa2 = value->rValue;
263  model->MOSa2Given = TRUE;
264  break;
265  case MOS_MOD_K1:
266  /* level 8, CryoMOS by Luong Huynh 1/19/95 */
267  model->MOSk1 = value->rValue;
268  model->MOSk1Given = TRUE;
269  break;
270  case MOS_MOD_K2:
271  /* level 8, CryoMOS by Luong Huynh 1/19/95 */
272  model->MOSk2 = value->rValue;
273  model->MOSk2Given = TRUE;
274  break;
275  case MOS_MOD_K3:
276  /* level 8, CryoMOS by Luong Huynh 1/19/95 */
277  model->MOSk3 = value->rValue;
278  model->MOSk3Given = TRUE;
279  break;
280  case MOS_MOD_K4:
281  /* level 8, CryoMOS by Luong Huynh 1/19/95 */
282  model->MOSk4 = value->rValue;
283  model->MOSk4Given = TRUE;
284  break;
285  case MOS_MOD_PCLM:
286  /* level 8, CryoMOS by Luong Huynh 1/19/95 */
287  model->MOSpclm = value->rValue;
288  model->MOSpclmGiven = TRUE;
289  break;
290  case MOS_MOD_EM:
291  /* level 8, CryoMOS by Luong Huynh 1/19/95 */
292  model->MOSem = value->rValue;
293  model->MOSemGiven = TRUE;
294  break;
295  default:
296  return (E_BADPARM);
297  }
298  return (OK);
299 }
unsigned MOSsigmaGiven
Definition: mosdefs.h:412
double MOSsourceResistance
Definition: mosdefs.h:289
#define MOS_MOD_RD
Definition: mosdefs.h:508
double MOSgamma
Definition: mosdefs.h:286
unsigned MOSsheetResistanceGiven
Definition: mosdefs.h:378
double MOSlatDiff
Definition: mosdefs.h:303
unsigned MOSpclmGiven
Definition: mosdefs.h:423
#define MOS_MOD_RS
Definition: mosdefs.h:509
#define MOS_MOD_PHI
Definition: mosdefs.h:507
double MOSbulkJctPotential
Definition: mosdefs.h:293
double MOSem
Definition: mosdefs.h:352
#define MOS_MOD_NFS
Definition: mosdefs.h:538
#define MOS_MOD_VMAX
Definition: mosdefs.h:540
#define MOS_MOD_CJ
Definition: mosdefs.h:517
unsigned MOSlatDiffGiven
Definition: mosdefs.h:377
#define MOS_MOD_K2
Definition: mosdefs.h:560
unsigned MOSk4Given
Definition: mosdefs.h:422
double MOSchannelCharge
Definition: mosdefs.h:317
unsigned MOScritFieldExpGiven
Definition: mosdefs.h:390
unsigned MOSk3Given
Definition: mosdefs.h:421
double MOSoxideThickness
Definition: mosdefs.h:302
#define MOS_MOD_DELTA
Definition: mosdefs.h:539
unsigned MOStypeGiven
Definition: mosdefs.h:354
#define MOS_MOD_GAMMA1
Definition: mosdefs.h:552
unsigned MOSoxideThicknessGiven
Definition: mosdefs.h:376
double MOSeta
Definition: mosdefs.h:328
#define MOS_MOD_NMOS
Definition: mosdefs.h:530
double MOSsurfaceStateDensity
Definition: mosdefs.h:307
#define MOS_MOD_FC
Definition: mosdefs.h:526
#define MOS_MOD_NSS
Definition: mosdefs.h:527
unsigned MOSkcGiven
Definition: mosdefs.h:409
double MOStransconductance
Definition: mosdefs.h:285
unsigned MOSbulkCapFactorGiven
Definition: mosdefs.h:371
unsigned MOSemGiven
Definition: mosdefs.h:424
double MOSvt0
Definition: mosdefs.h:284
double MOSa2
Definition: mosdefs.h:346
double MOSgamma1
Definition: mosdefs.h:339
#define MOS_MOD_NC
Definition: mosdefs.h:551
double MOSlamda0
Definition: mosdefs.h:341
unsigned MOSfNexpGiven
Definition: mosdefs.h:384
#define CONSTCtoK
Definition: const.h:11
#define MOS_MOD_TPG
Definition: mosdefs.h:529
double MOSk3
Definition: mosdefs.h:349
double MOSsigma
Definition: mosdefs.h:340
#define MOS_MOD_RSH
Definition: mosdefs.h:524
double MOSbulkJctBotGradingCoeff
Definition: mosdefs.h:298
int MOSgateType
Definition: mosdefs.h:281
double MOSkc
Definition: mosdefs.h:337
#define MOS_MOD_THETA
Definition: mosdefs.h:543
int MOStype
Definition: mosdefs.h:279
double MOSkappa
Definition: mosdefs.h:330
#define MOS_MOD_NEFF
Definition: mosdefs.h:536
#define E_BADPARM
Definition: iferrmsg.h:26
#define MOS_MOD_VTO
Definition: mosdefs.h:504
unsigned MOSsubstrateDopingGiven
Definition: mosdefs.h:382
double MOSa1
Definition: mosdefs.h:345
#define MOS_MOD_PMOS
Definition: mosdefs.h:531
unsigned MOSsurfaceMobilityGiven
Definition: mosdefs.h:379
unsigned MOSsurfaceStateDensityGiven
Definition: mosdefs.h:381
double MOSmaxDriftVel
Definition: mosdefs.h:323
double MOSfNexp
Definition: mosdefs.h:310
#define TRUE
Definition: util.h:27
#define MOS_MOD_K1
Definition: mosdefs.h:559
double MOSbulkJctSideGradingCoeff
Definition: mosdefs.h:300
int iValue
Definition: ifsim.h:232
double rValue
Definition: ifsim.h:233
double MOSnarrowFactor
Definition: mosdefs.h:322
unsigned MOScapBSGiven
Definition: mosdefs.h:365
unsigned MOSncGiven
Definition: mosdefs.h:410
#define MOS_MOD_A1
Definition: mosdefs.h:557
#define MOS_MOD_ETA
Definition: mosdefs.h:542
double MOSjunctionDepth
Definition: mosdefs.h:324
#define MOS_MOD_CBD
Definition: mosdefs.h:510
#define MOS_MOD_PCLM
Definition: mosdefs.h:563
unsigned MOSbulkJctSideGradingCoeffGiven
Definition: mosdefs.h:374
#define MOS_MOD_LAMBDA
Definition: mosdefs.h:534
unsigned MOStransconductanceGiven
Definition: mosdefs.h:359
unsigned MOSgamma1Given
Definition: mosdefs.h:411
#define MOS_MOD_CGDO
Definition: mosdefs.h:515
double MOSk4
Definition: mosdefs.h:350
unsigned MOSgateDrainOverlapCapFactorGiven
Definition: mosdefs.h:369
#define OK
Definition: iferrmsg.h:17
double MOSnc
Definition: mosdefs.h:338
double MOSk1
Definition: mosdefs.h:347
double MOSphi
Definition: mosdefs.h:287
#define MOS_MOD_XJ
Definition: mosdefs.h:541
double MOSdrainResistance
Definition: mosdefs.h:288
#define MOS_MOD_CGBO
Definition: mosdefs.h:516
unsigned MOSfwdCapDepCoeffGiven
Definition: mosdefs.h:380
#define MOS_MOD_LEVEL
Definition: mosdefs.h:502
#define MOS_MOD_CJSW
Definition: mosdefs.h:519
unsigned MOSgateBulkOverlapCapFactorGiven
Definition: mosdefs.h:370
double MOSjctSatCurDensity
Definition: mosdefs.h:301
#define MOS_MOD_K4
Definition: mosdefs.h:562
double MOSpclm
Definition: mosdefs.h:351
double MOSk2
Definition: mosdefs.h:348
unsigned MOSlamda0Given
Definition: mosdefs.h:413
double MOScapBD
Definition: mosdefs.h:290
unsigned MOSmaxDriftVelGiven
Definition: mosdefs.h:397
unsigned MOSjctSatCurGiven
Definition: mosdefs.h:366
unsigned MOSa1Given
Definition: mosdefs.h:417
unsigned MOSk2Given
Definition: mosdefs.h:420
unsigned MOSvt0Given
Definition: mosdefs.h:358
#define MOS_MOD_PB
Definition: mosdefs.h:513
double MOStnom
Definition: mosdefs.h:283
unsigned MOSgateTypeGiven
Definition: mosdefs.h:355
#define MOS_MOD_K3
Definition: mosdefs.h:561
#define MOS_MOD_NV
Definition: mosdefs.h:549
unsigned MOSdrainResistanceGiven
Definition: mosdefs.h:362
double MOScapBS
Definition: mosdefs.h:291
#define MOS_MOD_KP
Definition: mosdefs.h:505
double MOSsubstrateDoping
Definition: mosdefs.h:308
#define MOS_MOD_IS
Definition: mosdefs.h:512
int MOSlevel
Definition: mosdefs.h:280
double MOSsideWallCapFactor
Definition: mosdefs.h:299
#define MOS_MOD_KV
Definition: mosdefs.h:548
unsigned MOSchannelChargeGiven
Definition: mosdefs.h:391
unsigned MOSnarrowFactorGiven
Definition: mosdefs.h:396
#define MOS_MOD_UCRIT
Definition: mosdefs.h:537
#define MOS_MOD_JS
Definition: mosdefs.h:521
double MOScritField
Definition: mosdefs.h:318
#define MOS_MOD_KAPPA
Definition: mosdefs.h:545
double MOSjctSatCur
Definition: mosdefs.h:292
unsigned MOStnomGiven
Definition: mosdefs.h:357
unsigned MOSk1Given
Definition: mosdefs.h:419
#define MOS_MOD_CBS
Definition: mosdefs.h:511
unsigned MOSa2Given
Definition: mosdefs.h:418
#define MOS_MOD_MJ
Definition: mosdefs.h:518
double MOSfNcoef
Definition: mosdefs.h:309
#define MOS_MOD_EM
Definition: mosdefs.h:564
unsigned MOSfNcoefGiven
Definition: mosdefs.h:383
unsigned MOSthetaGiven
Definition: mosdefs.h:402
unsigned MOSsideWallCapFactorGiven
Definition: mosdefs.h:373
static char model[32]
Definition: subckt.c:76
double MOSfastSurfaceStateDensity
Definition: mosdefs.h:321
#define MOS_MOD_U0
Definition: mosdefs.h:525
int MOSmParam(int param, IFvalue *value, GENmodel *inModel)
Definition: mosmpar.c:18
#define MOS_MOD_LAMDA1
Definition: mosdefs.h:555
#define MOS_MOD_GAMMA
Definition: mosdefs.h:506
#define MOS_MOD_CGSO
Definition: mosdefs.h:514
double MOSgateSourceOverlapCapFactor
Definition: mosdefs.h:294
double MOSkv
Definition: mosdefs.h:335
unsigned MOSjunctionDepthGiven
Definition: mosdefs.h:398
unsigned MOSgammaGiven
Definition: mosdefs.h:360
double MOSsheetResistance
Definition: mosdefs.h:304
unsigned MOSkvGiven
Definition: mosdefs.h:407
unsigned MOSlambdaGiven
Definition: mosdefs.h:387
unsigned MOSgateSourceOverlapCapFactorGiven
Definition: mosdefs.h:368
unsigned MOSsourceResistanceGiven
Definition: mosdefs.h:363
double MOScritFieldExp
Definition: mosdefs.h:316
double MOSlambda
Definition: mosdefs.h:313
#define MOS_MOD_LAMDA0
Definition: mosdefs.h:554
#define MOS_MOD_AF
Definition: mosdefs.h:533
unsigned MOSkappaGiven
Definition: mosdefs.h:403
unsigned MOSfastSurfaceStateDensityGiven
Definition: mosdefs.h:395
#define MOS_MOD_KF
Definition: mosdefs.h:532
unsigned MOSbulkJctPotentialGiven
Definition: mosdefs.h:367
unsigned MOSlamda1Given
Definition: mosdefs.h:414
#define MOS_MOD_UEXP
Definition: mosdefs.h:535
#define MOS_MOD_TNOM
Definition: mosdefs.h:503
double MOStheta
Definition: mosdefs.h:329
double MOSbulkCapFactor
Definition: mosdefs.h:297
#define MOS_MOD_SIGMA
Definition: mosdefs.h:553
#define MOS_MOD_A2
Definition: mosdefs.h:558
#define MOS_MOD_TOX
Definition: mosdefs.h:522
double MOSlamda1
Definition: mosdefs.h:342
unsigned MOSphiGiven
Definition: mosdefs.h:361
#define MOS_MOD_KC
Definition: mosdefs.h:550
unsigned MOSlevelGiven
Definition: mosdefs.h:356
double MOSgateBulkOverlapCapFactor
Definition: mosdefs.h:296
double MOSsurfaceMobility
Definition: mosdefs.h:305
double MOSgateDrainOverlapCapFactor
Definition: mosdefs.h:295
double MOSfwdCapDepCoeff
Definition: mosdefs.h:306
unsigned MOScritFieldGiven
Definition: mosdefs.h:392
unsigned MOSnvGiven
Definition: mosdefs.h:408
unsigned MOSbulkJctBotGradingCoeffGiven
Definition: mosdefs.h:372
#define MOS_MOD_LD
Definition: mosdefs.h:523
double MOSnv
Definition: mosdefs.h:336
unsigned MOSetaGiven
Definition: mosdefs.h:401
unsigned MOSjctSatCurDensityGiven
Definition: mosdefs.h:375
#define MOS_MOD_NSUB
Definition: mosdefs.h:528
#define MOS_MOD_MJSW
Definition: mosdefs.h:520
unsigned MOScapBDGiven
Definition: mosdefs.h:364