Jspice3
mosdefs.h
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 #ifndef MOS
10 #define MOS
11 
12 #include "devdefs.h"
13 
14  /* declarations for analytical MOSFETs */
15 
16 /* information needed for each instance */
17 
18 typedef struct sMOSinstance {
19  struct sMOSmodel *MOSmodPtr; /* backpointer to model */
20  struct sMOSinstance *MOSnextInstance; /* pointer to next instance of
21  * current model */
22  IFuid MOSname; /* pointer to character string naming this instance */
23  int MOSstates; /* index into state table for this device */
24 
25  int MOSdNode; /* number of the gate node of the mosfet */
26  int MOSgNode; /* number of the gate node of the mosfet */
27  int MOSsNode; /* number of the source node of the mosfet */
28  int MOSbNode; /* number of the bulk node of the mosfet */
29  int MOSdNodePrime; /* number of the internal drain node of the mosfet */
30  int MOSsNodePrime; /* number of the internal source node of the mosfet */
31 
32  int MOSmode; /* device mode : 1 = normal, -1 = inverse */
33 
34  double MOSl; /* the length of the channel region */
35  double MOSw; /* the width of the channel region */
36  double MOSdrainArea; /* the area of the drain diffusion */
37  double MOSsourceArea; /* the area of the source diffusion */
38  double MOSdrainSquares; /* the length of the drain in squares */
39  double MOSsourceSquares; /* the length of the source in squares */
42  double MOSsourceConductance; /* conductance of source, set in setup */
43  double MOSdrainConductance; /* conductance of drain, set in setup */
44  double MOStemp; /* operating temperature of this instance */
45 
46  /* temperature corrected ... */
47  double MOStTransconductance; /* transconductance */
48  double MOStSurfMob; /* surface mobility */
49  double MOStPhi; /* Phi */
50  double MOStVto; /* Vto */
51  double MOStSatCur; /* saturation Cur. */
52  double MOStSatCurDens; /* saturation Cur. density*/
53  double MOStCbd; /* B-D Capacitance */
54  double MOStCbs; /* B-S Capacitance */
55  double MOStCj; /* Bulk bottom Capacitance */
56  double MOStCjsw; /* Bulk side Capacitance */
57  double MOStBulkPot; /* Bulk potential */
58  double MOStDepCap; /* transition point in the curve matching Fc*Vj */
59  double MOStVbi; /* Vbi */
62 
63  double MOSicVBS; /* initial condition B-S voltage */
64  double MOSicVDS; /* initial condition D-S voltage */
65  double MOSicVGS; /* initial condition G-S voltage */
66  double MOSvon;
67  double MOSvdsat;
68  double MOSsourceVcrit; /* vcrit for pos. vds */
69  double MOSdrainVcrit; /* vcrit for neg. vds */
70  double MOScd;
71  double MOScbs;
72  double MOScbd;
73  double MOSgmbs;
74  double MOSgm;
75  double MOSgds;
76  double MOSgbd;
77  double MOSgbs;
78  double MOScapbd;
79  double MOScapbs;
80  double MOSCbd;
81  double MOSCbdsw;
82  double MOSCbs;
83  double MOSCbssw;
84  double MOSf2d;
85  double MOSf3d;
86  double MOSf4d;
87  double MOSf2s;
88  double MOSf3s;
89  double MOSf4s;
90 
95  double MOSbeta;
96  double MOSoxideCap;
97 
98  double *MOSDdPtr; /* pointer to sparse matrix element at
99  * (Drain node,drain node) */
100  double *MOSGgPtr; /* pointer to sparse matrix element at
101  * (gate node,gate node) */
102  double *MOSSsPtr; /* pointer to sparse matrix element at
103  * (source node,source node) */
104  double *MOSBbPtr; /* pointer to sparse matrix element at
105  * (bulk node,bulk node) */
106  double *MOSDPdpPtr; /* pointer to sparse matrix element at
107  * (drain prime node,drain prime node) */
108  double *MOSSPspPtr; /* pointer to sparse matrix element at
109  * (source prime node,source prime node) */
110  double *MOSDdpPtr; /* pointer to sparse matrix element at
111  * (drain node,drain prime node) */
112  double *MOSGbPtr; /* pointer to sparse matrix element at
113  * (gate node,bulk node) */
114  double *MOSGdpPtr; /* pointer to sparse matrix element at
115  * (gate node,drain prime node) */
116  double *MOSGspPtr; /* pointer to sparse matrix element at
117  * (gate node,source prime node) */
118  double *MOSSspPtr; /* pointer to sparse matrix element at
119  * (source node,source prime node) */
120  double *MOSBdpPtr; /* pointer to sparse matrix element at
121  * (bulk node,drain prime node) */
122  double *MOSBspPtr; /* pointer to sparse matrix element at
123  * (bulk node,source prime node) */
124  double *MOSDPspPtr; /* pointer to sparse matrix element at
125  * (drain prime node,source prime node) */
126  double *MOSDPdPtr; /* pointer to sparse matrix element at
127  * (drain prime node,drain node) */
128  double *MOSBgPtr; /* pointer to sparse matrix element at
129  * (bulk node,gate node) */
130  double *MOSDPgPtr; /* pointer to sparse matrix element at
131  * (drain prime node,gate node) */
132 
133  double *MOSSPgPtr; /* pointer to sparse matrix element at
134  * (source prime node,gate node) */
135  double *MOSSPsPtr; /* pointer to sparse matrix element at
136  * (source prime node,source node) */
137  double *MOSDPbPtr; /* pointer to sparse matrix element at
138  * (drain prime node,bulk node) */
139  double *MOSSPbPtr; /* pointer to sparse matrix element at
140  * (source prime node,bulk node) */
141  double *MOSSPdpPtr; /* pointer to sparse matrix element at
142  * (source prime node,drain prime node) */
143 
144  /* distortion stuff */
145 /*
146  * naming convention:
147  * x = vgs
148  * y = vbs
149  * z = vds
150  * cdr = cdrain
151  */
152 
153 
154 #define MOSNDCOEFFS 30
155 
156 #ifndef NODISTO
158 #else /* NODISTO */
159  double *MOSdCoeffs;
160 #endif /* NODISTO */
161 
162 #ifndef CONFIG
163 
164 #define capbs2 MOSdCoeffs[0]
165 #define capbs3 MOSdCoeffs[1]
166 #define capbd2 MOSdCoeffs[2]
167 #define capbd3 MOSdCoeffs[3]
168 #define gbs2 MOSdCoeffs[4]
169 #define gbs3 MOSdCoeffs[5]
170 #define gbd2 MOSdCoeffs[6]
171 #define gbd3 MOSdCoeffs[7]
172 #define capgb2 MOSdCoeffs[8]
173 #define capgb3 MOSdCoeffs[9]
174 #define cdr_x2 MOSdCoeffs[10]
175 #define cdr_y2 MOSdCoeffs[11]
176 #define cdr_z2 MOSdCoeffs[12]
177 #define cdr_xy MOSdCoeffs[13]
178 #define cdr_yz MOSdCoeffs[14]
179 #define cdr_xz MOSdCoeffs[15]
180 #define cdr_x3 MOSdCoeffs[16]
181 #define cdr_y3 MOSdCoeffs[17]
182 #define cdr_z3 MOSdCoeffs[18]
183 #define cdr_x2z MOSdCoeffs[19]
184 #define cdr_x2y MOSdCoeffs[20]
185 #define cdr_y2z MOSdCoeffs[21]
186 #define cdr_xy2 MOSdCoeffs[22]
187 #define cdr_xz2 MOSdCoeffs[23]
188 #define cdr_yz2 MOSdCoeffs[24]
189 #define cdr_xyz MOSdCoeffs[25]
190 #define capgs2 MOSdCoeffs[26]
191 #define capgs3 MOSdCoeffs[27]
192 #define capgd2 MOSdCoeffs[28]
193 #define capgd3 MOSdCoeffs[29]
194 
195 #endif
196 
197  /* end distortion coeffs. */
198 
199 /* indices to the array of MOSFET(3) noise sources */
200 
201 #define MOSRDNOIZ 0
202 #define MOSRSNOIZ 1
203 #define MOSIDNOIZ 2
204 #define MOSFLNOIZ 3
205 #define MOSTOTNOIZ 4
206 
207 #define MOSNSRCS 5 /* the number of MOSFET(3) noise sources */
208 
209 #ifndef NONOISE
211 #else /* NONOISE */
212  double **MOSnVar;
213 #endif /* NONOISE */
214 
215  unsigned MOSoff :1; /* device is off for dc analysis */
216  unsigned MOStempGiven :1; /* instance temperature specified */
217  unsigned MOSlGiven :1;
218  unsigned MOSwGiven :1;
219  unsigned MOSdrainAreaGiven :1;
220  unsigned MOSsourceAreaGiven :1;
221  unsigned MOSdrainSquaresGiven :1;
225  unsigned MOSdNodePrimeSet :1;
226  unsigned MOSsNodePrimeSet :1;
227  unsigned MOSicVBSGiven :1;
228  unsigned MOSicVDSGiven :1;
229  unsigned MOSicVGSGiven :1;
230  unsigned MOSvonGiven :1;
231  unsigned MOSvdsatGiven :1;
232  unsigned MOSmodeGiven :1;
233 
234 } MOSinstance ;
235 
236 #define MOSvbd MOSstates
237 #define MOSvbs MOSstates + 1
238 #define MOSvgs MOSstates + 2
239 #define MOSvds MOSstates + 3
240 
241 /* meyer capacitances */
242 #define MOScapgs MOSstates + 4 /* gate-source capacitor value */
243 #define MOSqgs MOSstates + 5 /* gate-source capacitor charge */
244 #define MOScqgs MOSstates + 6 /* gate-source capacitor current */
245 
246 #define MOScapgd MOSstates + 7 /* gate-drain capacitor value */
247 #define MOSqgd MOSstates + 8 /* gate-drain capacitor charge */
248 #define MOScqgd MOSstates + 9 /* gate-drain capacitor current */
249 
250 #define MOScapgb MOSstates + 10 /* gate-bulk capacitor value */
251 #define MOSqgb MOSstates + 11 /* gate-bulk capacitor charge */
252 #define MOScqgb MOSstates + 12 /* gate-bulk capacitor current */
253 
254 /* diode capacitances */
255 #define MOSqbd MOSstates + 13 /* bulk-drain capacitor charge */
256 #define MOScqbd MOSstates + 14 /* bulk-drain capacitor current */
257 
258 #define MOSqbs MOSstates + 15 /* bulk-source capacitor charge */
259 #define MOScqbs MOSstates + 16 /* bulk-source capacitor current */
260 
261 #define MOSnumStates 17
262 
263 
264 /* per model data */
265 
266  /* NOTE: parameters marked 'input - use xxxx' are paramters for
267  * which a temperature correction is applied in MOStemp, thus
268  * the MOSxxxx value in the per-instance structure should be used
269  * instead in all calculations
270  */
271 
272 typedef struct sMOSmodel { /* model structure for a resistor */
273  int MOSmodType; /* type index of this device type */
274  struct sMOSmodel *MOSnextModel; /* pointer to next possible model
275  * in linked list */
276  MOSinstance * MOSinstances; /* pointer to list of instances
277  * that have this model */
278  IFuid MOSmodName; /* pointer to character string naming this model */
279  int MOStype; /* device type : 1 = nmos, -1 = pmos */
280  int MOSlevel; /* UCB model complexity level, 1-3 */
283  double MOStnom; /* temperature at which parameters measured */
284  double MOSvt0; /* input - use tVto */
285  double MOStransconductance; /* input - use tTransconductance */
286  double MOSgamma;
287  double MOSphi; /* input - use tPhi */
290  double MOScapBD; /* input - use tCbs */
291  double MOScapBS; /* input - use tCbd */
292  double MOSjctSatCur; /* input - use tSatCur instead */
293  double MOSbulkJctPotential; /* input - use tBulkPot */
297  double MOSbulkCapFactor; /* input - use tCj */
299  double MOSsideWallCapFactor; /* input - use tCjsw */
301  double MOSjctSatCurDensity; /* input - use tSatCurDens*/
303  double MOSlatDiff;
305  double MOSsurfaceMobility; /* input - use tSurfMob */
309  double MOSfNcoef;
310  double MOSfNexp;
311 
312  /* levels 1,2 and 6 */
313  double MOSlambda;
314 
315  /* level 2 */
316  double MOScritFieldExp; /* uexp */
317  double MOSchannelCharge; /* neff */
318  double MOScritField; /* ucrit */
319 
320  /* levels 2 and 3 */
321  double MOSfastSurfaceStateDensity; /* nfs */
322  double MOSnarrowFactor; /* delta */
323  double MOSmaxDriftVel; /* vmax */
325  double MOSxd;
326 
327  /* level 3 */
328  double MOSeta;
329  double MOStheta; /* theta */
330  double MOSkappa; /* kappa */
331  double MOSdelta; /* input delta */
332  double MOSalpha; /* alpha */
333 
334  /* level 6 */
335  double MOSkv; /* input - use tKv */
336  double MOSnv; /* drain linear conductance factor*/
337  double MOSkc; /* input - use tKc */
338  double MOSnc; /* saturation current coeff.*/
339  double MOSgamma1; /* secondary back-gate effect parametr */
340  double MOSsigma;
341  double MOSlamda0;
342  double MOSlamda1;
343 
344  /* level 8, CryoMOS by Luong Huynh 1/19/95 */
345  double MOSa1;
346  double MOSa2;
347  double MOSk1;
348  double MOSk2;
349  double MOSk3;
350  double MOSk4;
351  double MOSpclm;
352  double MOSem;
353 
354  unsigned MOStypeGiven :1;
355  unsigned MOSgateTypeGiven :1;
356  unsigned MOSlevelGiven :1;
357  unsigned MOStnomGiven :1;
358  unsigned MOSvt0Given :1;
360  unsigned MOSgammaGiven :1;
361  unsigned MOSphiGiven :1;
364  unsigned MOScapBDGiven :1;
365  unsigned MOScapBSGiven :1;
366  unsigned MOSjctSatCurGiven :1;
377  unsigned MOSlatDiffGiven :1;
383  unsigned MOSfNcoefGiven :1;
384  unsigned MOSfNexpGiven :1;
385 
386  /* levels 1,2, and 6 */
387  unsigned MOSlambdaGiven :1;
388 
389  /* level 2 */
390  unsigned MOScritFieldExpGiven :1; /* uexp */
391  unsigned MOSchannelChargeGiven :1; /* neff */
392  unsigned MOScritFieldGiven :1; /* ucrit */
393 
394  /* levels 2 and 3 */
395  unsigned MOSfastSurfaceStateDensityGiven :1; /* nfs */
396  unsigned MOSnarrowFactorGiven :1; /* delta */
397  unsigned MOSmaxDriftVelGiven :1; /* vmax */
399 
400  /* level 3 */
401  unsigned MOSetaGiven :1;
402  unsigned MOSthetaGiven :1; /* theta */
403  unsigned MOSkappaGiven :1; /* kappa */
404  unsigned MOSdeltaGiven :1; /* delta */
405 
406  /* level 6 */
407  unsigned MOSkvGiven :1;
408  unsigned MOSnvGiven :1;
409  unsigned MOSkcGiven :1;
410  unsigned MOSncGiven :1;
411  unsigned MOSgamma1Given :1;
412  unsigned MOSsigmaGiven :1;
413  unsigned MOSlamda0Given :1;
414  unsigned MOSlamda1Given :1;
415 
416  /* level 8, CryoMOS by Luong Huynh 1/19/95 */
417  unsigned MOSa1Given :1;
418  unsigned MOSa2Given :1;
419  unsigned MOSk1Given :1;
420  unsigned MOSk2Given :1;
421  unsigned MOSk3Given :1;
422  unsigned MOSk4Given :1;
423  unsigned MOSpclmGiven :1;
424  unsigned MOSemGiven :1;
425 
426 } MOSmodel;
427 
428 #ifndef NMOS
429 #define NMOS 1
430 #define PMOS -1
431 #endif /*NMOS*/
432 
433 /* device parameters */
434 #define MOS_TEMP 1
435 #define MOS_L 2
436 #define MOS_W 3
437 #define MOS_AD 4
438 #define MOS_AS 5
439 #define MOS_PD 6
440 #define MOS_PS 7
441 #define MOS_NRD 8
442 #define MOS_NRS 9
443 #define MOS_OFF 10
444 #define MOS_IC_VDS 11
445 #define MOS_IC_VGS 12
446 #define MOS_IC_VBS 13
447 #define MOS_IC 14
448 #define MOS_CGD 15
449 #define MOS_CGS 16
450 #define MOS_DNODE 17
451 #define MOS_GNODE 18
452 #define MOS_SNODE 19
453 #define MOS_BNODE 20
454 #define MOS_DNODEPRIME 21
455 #define MOS_SNODEPRIME 22
456 #define MOS_DRAINCONDUCT 23
457 #define MOS_SOURCECONDUCT 24
458 #define MOS_VON 25
459 #define MOS_VDSAT 26
460 #define MOS_DRAINVCRIT 27
461 #define MOS_SOURCEVCRIT 28
462 #define MOS_CD 29
463 #define MOS_CBD 30
464 #define MOS_CBS 31
465 #define MOS_GMBS 32
466 #define MOS_GM 33
467 #define MOS_GDS 34
468 #define MOS_GBD 35
469 #define MOS_GBS 36
470 #define MOS_CAPBD 37
471 #define MOS_CAPBS 38
472 #define MOS_CAPZEROBIASBD 39
473 #define MOS_CAPZEROBIASBDSW 40
474 #define MOS_CAPZEROBIASBS 41
475 #define MOS_CAPZEROBIASBSSW 42
476 #define MOS_VBD 43
477 #define MOS_VBS 44
478 #define MOS_VGS 45
479 #define MOS_VDS 46
480 #define MOS_CAPGD 47
481 #define MOS_QGD 48
482 #define MOS_CQGD 49
483 #define MOS_CAPGS 50
484 #define MOS_QGS 51
485 #define MOS_CQGS 52
486 #define MOS_CAPGB 53
487 #define MOS_QGB 54
488 #define MOS_CQGB 55
489 #define MOS_QBD 56
490 #define MOS_CQBD 57
491 #define MOS_QBS 58
492 #define MOS_CQBS 59
493 #define MOS_CG 60
494 #define MOS_CS 61
495 #define MOS_CB 62
496 #define MOS_POWER 63
497 #define MOS_DRAINRESIST 64
498 #define MOS_SOURCERESIST 65
499 
500 /* model parameters */
501 #define MOS_MOD_TYPE 100
502 #define MOS_MOD_LEVEL 101
503 #define MOS_MOD_TNOM 102
504 #define MOS_MOD_VTO 103
505 #define MOS_MOD_KP 104
506 #define MOS_MOD_GAMMA 105
507 #define MOS_MOD_PHI 106
508 #define MOS_MOD_RD 107
509 #define MOS_MOD_RS 108
510 #define MOS_MOD_CBD 109
511 #define MOS_MOD_CBS 110
512 #define MOS_MOD_IS 111
513 #define MOS_MOD_PB 112
514 #define MOS_MOD_CGSO 113
515 #define MOS_MOD_CGDO 114
516 #define MOS_MOD_CGBO 115
517 #define MOS_MOD_CJ 116
518 #define MOS_MOD_MJ 117
519 #define MOS_MOD_CJSW 118
520 #define MOS_MOD_MJSW 119
521 #define MOS_MOD_JS 120
522 #define MOS_MOD_TOX 121
523 #define MOS_MOD_LD 122
524 #define MOS_MOD_RSH 123
525 #define MOS_MOD_U0 124
526 #define MOS_MOD_FC 125
527 #define MOS_MOD_NSS 126
528 #define MOS_MOD_NSUB 127
529 #define MOS_MOD_TPG 128
530 #define MOS_MOD_NMOS 129
531 #define MOS_MOD_PMOS 130
532 #define MOS_MOD_KF 131
533 #define MOS_MOD_AF 132
534 #define MOS_MOD_LAMBDA 133
535 #define MOS_MOD_UEXP 134
536 #define MOS_MOD_NEFF 135
537 #define MOS_MOD_UCRIT 136
538 #define MOS_MOD_NFS 137
539 #define MOS_MOD_DELTA 138
540 #define MOS_MOD_VMAX 139
541 #define MOS_MOD_XJ 140
542 #define MOS_MOD_ETA 141
543 #define MOS_MOD_THETA 142
544 #define MOS_MOD_ALPHA 143
545 #define MOS_MOD_KAPPA 144
546 #define MOS_MOD_XD 145
547 #define MOS_DELTA 146
548 #define MOS_MOD_KV 147
549 #define MOS_MOD_NV 148
550 #define MOS_MOD_KC 149
551 #define MOS_MOD_NC 150
552 #define MOS_MOD_GAMMA1 151
553 #define MOS_MOD_SIGMA 152
554 #define MOS_MOD_LAMDA0 153
555 #define MOS_MOD_LAMDA1 154
556 /* level 8, CryoMOS by Luong Huynh, 1/19/95 */
557 #define MOS_MOD_A1 155
558 #define MOS_MOD_A2 156
559 #define MOS_MOD_K1 157
560 #define MOS_MOD_K2 158
561 #define MOS_MOD_K3 159
562 #define MOS_MOD_K4 160
563 #define MOS_MOD_PCLM 161
564 #define MOS_MOD_EM 162
565 
566 
567 #ifdef __STDC__
568 
569 extern int MOSacLoad(GENmodel*,CKTcircuit*);
570 extern int MOSask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*);
571 extern int MOSconvTest(GENmodel*,CKTcircuit*);
572 extern int MOSdisto(int,GENmodel*,CKTcircuit*);
573 extern int MOSgetic(GENmodel*,CKTcircuit*);
574 extern int MOSload(GENmodel*,CKTcircuit*);
575 extern int MOSmAsk(CKTcircuit*,GENmodel*,int,IFvalue*);
576 extern int MOSmParam(int,IFvalue*,GENmodel*);
577 extern int MOSnoise(int,int,GENmodel*,CKTcircuit*,GENERIC*,double*);
578 extern int MOSparam(CKTcircuit*,int,IFvalue*,GENinstance*,IFvalue*);
579 extern int MOSpzLoad(GENmodel*,CKTcircuit*,SPcomplex*);
580 extern int MOSsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
581 extern int MOStemp(GENmodel*,CKTcircuit*);
582 extern int MOStrunc(GENmodel*,CKTcircuit*,double*);
583 
584 #else /* stdc */
585 
586 extern int MOSacLoad();
587 extern int MOSask();
588 extern int MOSconvTest();
589 extern int MOSdisto();
590 extern int MOSgetic();
591 extern int MOSload();
592 extern int MOSmAsk();
593 extern int MOSmParam();
594 extern int MOSnoise();
595 extern int MOSparam();
596 extern int MOSpzLoad();
597 extern int MOSsetup();
598 extern int MOStemp();
599 extern int MOStrunc();
600 
601 #endif /* stdc */
602 
603 
604 /* store some things to pass to functions */
605 struct mosstuff {
606  double ms_vt;
607  double ms_von;
608  double ms_vdsat;
609  double ms_vgs;
610  double ms_vds;
611  double ms_vbs;
612  double ms_vbd;
613  double ms_vgb;
614  double ms_vgd;
615  double ms_ceqgs;
616  double ms_ceqgd;
617  double ms_ceqgb;
618  double ms_cdrain;
619  double ms_gcgs;
620  double ms_gcgd;
621  double ms_gcgb;
622  double ms_capgs;
623  double ms_capgd;
624  double ms_capgb;
625 };
626 
627 /* semi-private functions... */
628 #ifdef __STDC__
629 extern void MOSfd(MOSmodel*,MOSinstance*);
630 extern void MOSfs(MOSmodel*,MOSinstance*);
631 extern double MOSeq1(MOSmodel*,MOSinstance*,struct mosstuff*);
632 extern double MOSeq2(MOSmodel*,MOSinstance*,struct mosstuff*);
633 extern double MOSeq3(MOSmodel*,MOSinstance*,struct mosstuff*);
634 extern double MOSeq6(MOSmodel*,MOSinstance*,struct mosstuff*);
635 /* level 8, CryoMOS by Luong Huynh 1/19/95 */
636 extern double cryoMOSeq(MOSmodel*,MOSinstance*,struct mosstuff*);
637 /**/
638 #else
639 extern void MOSfd();
640 extern void MOSfs();
641 extern double MOSeq1();
642 extern double MOSeq2();
643 extern double MOSeq3();
644 extern double MOSeq6();
645 /* level 8, CryoMOS by Luong Huynh 1/19/95 */
646 extern double cryoMOSeq();
647 /**/
648 #endif
649 
650 /* ...and a macro */
651 #define SARGS(arg,bot,side,sarg,sargsw) { \
652  if(bot==side) \
653  { if(bot==.5) sarg=sargsw=1/sqrt(arg); \
654  else sarg=sargsw=exp(-bot*log(arg)); } \
655  else \
656  { if(bot==.5) sarg=1/sqrt(arg); \
657  else sarg=exp(-bot*log(arg)); \
658  if(side==.5) sargsw=1/sqrt(arg); \
659  else sargsw=exp(-side*log(arg)); } \
660 }
661 
662 #endif /*MOS*/
double MOSbeta
Definition: mosdefs.h:95
unsigned MOSsigmaGiven
Definition: mosdefs.h:412
double MOSsourceResistance
Definition: mosdefs.h:289
double MOSgamma
Definition: mosdefs.h:286
struct sMOSmodel * MOSnextModel
Definition: mosdefs.h:274
double MOStBulkPot
Definition: mosdefs.h:57
double MOSdrainArea
Definition: mosdefs.h:36
double ms_von
Definition: mosdefs.h:607
unsigned MOSsheetResistanceGiven
Definition: mosdefs.h:378
double MOSf4d
Definition: mosdefs.h:86
double MOSgateBulkOverlapCap
Definition: mosdefs.h:94
MOSinstance * MOSinstances
Definition: mosdefs.h:276
double MOSlatDiff
Definition: mosdefs.h:303
unsigned MOSpclmGiven
Definition: mosdefs.h:423
double * MOSDPdpPtr
Definition: mosdefs.h:106
double MOStemp
Definition: mosdefs.h:44
unsigned MOSvonGiven
Definition: mosdefs.h:230
double MOSbulkJctPotential
Definition: mosdefs.h:293
double MOSgm
Definition: mosdefs.h:74
double MOSem
Definition: mosdefs.h:352
double ms_vbd
Definition: mosdefs.h:612
unsigned MOSsourceAreaGiven
Definition: mosdefs.h:220
unsigned MOSicVGSGiven
Definition: mosdefs.h:229
double * MOSSPbPtr
Definition: mosdefs.h:139
unsigned MOSvdsatGiven
Definition: mosdefs.h:231
double MOSgmbs
Definition: mosdefs.h:73
double ms_vt
Definition: mosdefs.h:606
unsigned MOSlatDiffGiven
Definition: mosdefs.h:377
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 MOSxd
Definition: mosdefs.h:325
double ms_capgs
Definition: mosdefs.h:622
double MOSoxideThickness
Definition: mosdefs.h:302
double * MOSBspPtr
Definition: mosdefs.h:122
struct sMOSinstance MOSinstance
double MOScd
Definition: mosdefs.h:70
unsigned MOStypeGiven
Definition: mosdefs.h:354
double * MOSSsPtr
Definition: mosdefs.h:102
unsigned MOSoxideThicknessGiven
Definition: mosdefs.h:376
double MOSeta
Definition: mosdefs.h:328
unsigned MOSdrainAreaGiven
Definition: mosdefs.h:219
double MOSsurfaceStateDensity
Definition: mosdefs.h:307
double MOStVto
Definition: mosdefs.h:50
double MOStDepCap
Definition: mosdefs.h:58
double ms_ceqgb
Definition: mosdefs.h:617
double * MOSSspPtr
Definition: mosdefs.h:118
unsigned MOSkcGiven
Definition: mosdefs.h:409
unsigned MOSdeltaGiven
Definition: mosdefs.h:404
double MOStransconductance
Definition: mosdefs.h:285
int MOSmodType
Definition: mosdefs.h:273
double * MOSGspPtr
Definition: mosdefs.h:116
double * MOSSPgPtr
Definition: mosdefs.h:133
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
double MOSlamda0
Definition: mosdefs.h:341
unsigned MOSfNexpGiven
Definition: mosdefs.h:384
double MOSk3
Definition: mosdefs.h:349
double MOSgds
Definition: mosdefs.h:75
double MOSsigma
Definition: mosdefs.h:340
double MOStSurfMob
Definition: mosdefs.h:48
double MOSbulkJctBotGradingCoeff
Definition: mosdefs.h:298
int MOSgateType
Definition: mosdefs.h:281
double MOScbd
Definition: mosdefs.h:72
double MOScapbd
Definition: mosdefs.h:78
double MOSkc
Definition: mosdefs.h:337
double MOSsourcePerimeter
Definition: mosdefs.h:41
int MOStype
Definition: mosdefs.h:279
struct sMOSmodel MOSmodel
double MOSkappa
Definition: mosdefs.h:330
double MOSCbs
Definition: mosdefs.h:82
double * MOSDPbPtr
Definition: mosdefs.h:137
unsigned MOSsubstrateDopingGiven
Definition: mosdefs.h:382
double MOSa1
Definition: mosdefs.h:345
double MOSl
Definition: mosdefs.h:34
unsigned MOSsurfaceMobilityGiven
Definition: mosdefs.h:379
double ms_vbs
Definition: mosdefs.h:611
double MOSoxideCapFactor
Definition: mosdefs.h:282
unsigned MOSoff
Definition: mosdefs.h:215
double * MOSSPspPtr
Definition: mosdefs.h:108
double ms_gcgs
Definition: mosdefs.h:619
unsigned MOSsurfaceStateDensityGiven
Definition: mosdefs.h:381
double MOSmaxDriftVel
Definition: mosdefs.h:323
double MOSfNexp
Definition: mosdefs.h:310
int MOSdNodePrime
Definition: mosdefs.h:29
double * MOSSPsPtr
Definition: mosdefs.h:135
double MOSeq3()
double MOSCbdsw
Definition: mosdefs.h:81
double MOSeq6()
double MOSf3d
Definition: mosdefs.h:85
double MOStSatCurDens
Definition: mosdefs.h:52
unsigned MOSicVDSGiven
Definition: mosdefs.h:228
double MOSbulkJctSideGradingCoeff
Definition: mosdefs.h:300
double MOSgateSourceOverlapCap
Definition: mosdefs.h:92
double MOSnarrowFactor
Definition: mosdefs.h:322
unsigned MOSdrainSquaresGiven
Definition: mosdefs.h:221
unsigned MOScapBSGiven
Definition: mosdefs.h:365
double MOStCjsw
Definition: mosdefs.h:56
unsigned MOSmodeGiven
Definition: mosdefs.h:232
#define MOSNSRCS
Definition: mosdefs.h:207
int MOSsNode
Definition: mosdefs.h:27
double ms_ceqgd
Definition: mosdefs.h:616
unsigned MOSncGiven
Definition: mosdefs.h:410
unsigned MOSdrainPerimeterGiven
Definition: mosdefs.h:223
double * MOSDdPtr
Definition: mosdefs.h:98
double MOSjunctionDepth
Definition: mosdefs.h:324
double MOSw
Definition: mosdefs.h:35
double MOStCj
Definition: mosdefs.h:55
unsigned MOSbulkJctSideGradingCoeffGiven
Definition: mosdefs.h:374
double MOStDrainSatCur
Definition: mosdefs.h:60
unsigned MOStransconductanceGiven
Definition: mosdefs.h:359
unsigned MOSgamma1Given
Definition: mosdefs.h:411
double MOSk4
Definition: mosdefs.h:350
unsigned MOSgateDrainOverlapCapFactorGiven
Definition: mosdefs.h:369
double MOSnc
Definition: mosdefs.h:338
double MOSk1
Definition: mosdefs.h:347
double MOSphi
Definition: mosdefs.h:287
double MOSdrainResistance
Definition: mosdefs.h:288
double * MOSGbPtr
Definition: mosdefs.h:112
unsigned MOSfwdCapDepCoeffGiven
Definition: mosdefs.h:380
GENERIC * IFuid
Definition: ifsim.h:72
unsigned MOSgateBulkOverlapCapFactorGiven
Definition: mosdefs.h:370
double MOSvon
Definition: mosdefs.h:66
double MOSjctSatCurDensity
Definition: mosdefs.h:301
int MOSgetic()
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
double MOSdrainVcrit
Definition: mosdefs.h:69
double ms_vds
Definition: mosdefs.h:610
unsigned MOSk2Given
Definition: mosdefs.h:420
int MOSgNode
Definition: mosdefs.h:26
double MOSgbs
Definition: mosdefs.h:77
double MOSicVBS
Definition: mosdefs.h:63
unsigned MOSvt0Given
Definition: mosdefs.h:358
int MOSparam()
unsigned MOSicVBSGiven
Definition: mosdefs.h:227
double MOSgbd
Definition: mosdefs.h:76
double * MOSSPdpPtr
Definition: mosdefs.h:141
double ms_gcgb
Definition: mosdefs.h:621
double MOSCbd
Definition: mosdefs.h:80
double MOStnom
Definition: mosdefs.h:283
unsigned MOSgateTypeGiven
Definition: mosdefs.h:355
double MOSdrainPerimeter
Definition: mosdefs.h:40
void MOSfd()
double MOSsourceVcrit
Definition: mosdefs.h:68
int MOSask()
int MOSdNode
Definition: mosdefs.h:25
unsigned MOSdrainResistanceGiven
Definition: mosdefs.h:362
double MOSeq2()
double MOScapBS
Definition: mosdefs.h:291
double MOSsubstrateDoping
Definition: mosdefs.h:308
double MOSCbssw
Definition: mosdefs.h:83
int MOSlevel
Definition: mosdefs.h:280
double MOSsideWallCapFactor
Definition: mosdefs.h:299
double * MOSBdpPtr
Definition: mosdefs.h:120
unsigned MOSchannelChargeGiven
Definition: mosdefs.h:391
void MOSfs()
unsigned MOSnarrowFactorGiven
Definition: mosdefs.h:396
double MOStSatCur
Definition: mosdefs.h:51
double * MOSGgPtr
Definition: mosdefs.h:100
int MOSsNodePrime
Definition: mosdefs.h:30
double MOScritField
Definition: mosdefs.h:318
double MOSjctSatCur
Definition: mosdefs.h:292
double MOSoxideCap
Definition: mosdefs.h:96
unsigned MOStnomGiven
Definition: mosdefs.h:357
unsigned MOSk1Given
Definition: mosdefs.h:419
int MOSdisto()
double MOSalpha
Definition: mosdefs.h:332
double * MOSGdpPtr
Definition: mosdefs.h:114
double ms_vgb
Definition: mosdefs.h:613
unsigned MOSa2Given
Definition: mosdefs.h:418
unsigned MOSwGiven
Definition: mosdefs.h:218
double MOStSourceSatCur
Definition: mosdefs.h:61
int MOSnoise()
double MOSfNcoef
Definition: mosdefs.h:309
double MOStCbd
Definition: mosdefs.h:53
double MOStPhi
Definition: mosdefs.h:49
double MOSicVGS
Definition: mosdefs.h:65
double * MOSDPgPtr
Definition: mosdefs.h:130
int MOStrunc()
unsigned MOSfNcoefGiven
Definition: mosdefs.h:383
unsigned MOSthetaGiven
Definition: mosdefs.h:402
unsigned MOSsideWallCapFactorGiven
Definition: mosdefs.h:373
unsigned MOSdNodePrimeSet
Definition: mosdefs.h:225
double MOSf4s
Definition: mosdefs.h:89
double MOSfastSurfaceStateDensity
Definition: mosdefs.h:321
int MOSmode
Definition: mosdefs.h:32
double MOStVbi
Definition: mosdefs.h:59
double MOStCbs
Definition: mosdefs.h:54
double * MOSBgPtr
Definition: mosdefs.h:128
int MOSmAsk()
IFuid MOSmodName
Definition: mosdefs.h:278
double MOSf2d
Definition: mosdefs.h:84
double MOSdrainSquares
Definition: mosdefs.h:38
struct sMOSmodel * MOSmodPtr
Definition: mosdefs.h:19
unsigned MOSsourcePerimeterGiven
Definition: mosdefs.h:224
double ms_vgd
Definition: mosdefs.h:614
int MOSstates
Definition: mosdefs.h:23
double MOSgateSourceOverlapCapFactor
Definition: mosdefs.h:294
double MOSkv
Definition: mosdefs.h:335
double MOSgateDrainOverlapCap
Definition: mosdefs.h:93
unsigned MOSsourceSquaresGiven
Definition: mosdefs.h:222
unsigned MOSjunctionDepthGiven
Definition: mosdefs.h:398
double ms_cdrain
Definition: mosdefs.h:618
double * MOSDPspPtr
Definition: mosdefs.h:124
double MOSsourceConductance
Definition: mosdefs.h:42
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 MOSf2s
Definition: mosdefs.h:87
double MOSlambda
Definition: mosdefs.h:313
unsigned MOSkappaGiven
Definition: mosdefs.h:403
double MOSeffectiveLength
Definition: mosdefs.h:91
unsigned MOSfastSurfaceStateDensityGiven
Definition: mosdefs.h:395
int MOSbNode
Definition: mosdefs.h:28
double MOSnVar[NSTATVARS][MOSNSRCS]
Definition: mosdefs.h:210
unsigned MOSbulkJctPotentialGiven
Definition: mosdefs.h:367
int MOSsetup()
unsigned MOSlamda1Given
Definition: mosdefs.h:414
IFuid MOSname
Definition: mosdefs.h:22
int MOSload()
double ms_ceqgs
Definition: mosdefs.h:615
double MOStheta
Definition: mosdefs.h:329
double MOSdCoeffs[MOSNDCOEFFS]
Definition: mosdefs.h:157
double MOSbulkCapFactor
Definition: mosdefs.h:297
double ms_capgd
Definition: mosdefs.h:623
double MOScbs
Definition: mosdefs.h:71
#define NSTATVARS
Definition: cktdefs.h:21
double MOSlamda1
Definition: mosdefs.h:342
#define MOSNDCOEFFS
Definition: mosdefs.h:154
unsigned MOSphiGiven
Definition: mosdefs.h:361
double MOScapbs
Definition: mosdefs.h:79
#define SMPmatrix
Definition: smpdefs.h:11
double MOSsourceSquares
Definition: mosdefs.h:39
unsigned MOSlevelGiven
Definition: mosdefs.h:356
double MOSgateBulkOverlapCapFactor
Definition: mosdefs.h:296
int MOSpzLoad()
double MOSsurfaceMobility
Definition: mosdefs.h:305
int MOSconvTest()
double MOSgateDrainOverlapCapFactor
Definition: mosdefs.h:295
double ms_vgs
Definition: mosdefs.h:609
double MOSdelta
Definition: mosdefs.h:331
double MOSsourceArea
Definition: mosdefs.h:37
double ms_vdsat
Definition: mosdefs.h:608
unsigned MOSlGiven
Definition: mosdefs.h:217
unsigned MOSsNodePrimeSet
Definition: mosdefs.h:226
double MOSfwdCapDepCoeff
Definition: mosdefs.h:306
unsigned MOScritFieldGiven
Definition: mosdefs.h:392
unsigned MOSnvGiven
Definition: mosdefs.h:408
unsigned MOSbulkJctBotGradingCoeffGiven
Definition: mosdefs.h:372
double MOStTransconductance
Definition: mosdefs.h:47
struct sMOSinstance * MOSnextInstance
Definition: mosdefs.h:20
double ms_gcgd
Definition: mosdefs.h:620
double MOSnv
Definition: mosdefs.h:336
unsigned MOSetaGiven
Definition: mosdefs.h:401
double MOSf3s
Definition: mosdefs.h:88
unsigned MOSjctSatCurDensityGiven
Definition: mosdefs.h:375
double ms_capgb
Definition: mosdefs.h:624
int MOSacLoad()
double MOSvdsat
Definition: mosdefs.h:67
char GENERIC
Definition: ifsim.h:27
double * MOSDPdPtr
Definition: mosdefs.h:126
int MOSmParam()
double * MOSBbPtr
Definition: mosdefs.h:104
double * MOSDdpPtr
Definition: mosdefs.h:110
double MOSdrainConductance
Definition: mosdefs.h:43
double MOSicVDS
Definition: mosdefs.h:64
unsigned MOStempGiven
Definition: mosdefs.h:216
unsigned MOScapBDGiven
Definition: mosdefs.h:364
double cryoMOSeq()
double MOSeq1()