Jspice3
bjtmpar.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  1993 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 /*
9  * This routine sets model parameters for
10  * BJTs in the circuit.
11  */
12 
13 #include "spice.h"
14 #include <stdio.h>
15 #include "bjtdefs.h"
16 #include "const.h"
17 #include "util.h"
18 #include "sperror.h"
19 
20 
21 int
22 BJTmParam(param,value,inModel)
23 
24 int param;
25 IFvalue *value;
26 GENmodel *inModel;
27 {
28  BJTmodel *mods = (BJTmodel*)inModel;
29 
30  switch(param) {
31 
32  case BJT_MOD_NPN:
33  if (value->iValue) {
34  mods->BJTtype = NPN;
35  }
36  break;
37  case BJT_MOD_PNP:
38  if (value->iValue) {
39  mods->BJTtype = PNP;
40  }
41  break;
42  case BJT_MOD_IS:
43  mods->BJTsatCur = value->rValue;
44  mods->BJTsatCurGiven = TRUE;
45  break;
46  case BJT_MOD_BF:
47  mods->BJTbetaF = value->rValue;
48  mods->BJTbetaFGiven = TRUE;
49  break;
50  case BJT_MOD_NF:
51  mods->BJTemissionCoeffF = value->rValue;
53  break;
54  case BJT_MOD_VAF:
55  mods->BJTearlyVoltF = value->rValue;
56  mods->BJTearlyVoltFGiven = TRUE;
57  break;
58  case BJT_MOD_IKF:
59  mods->BJTrollOffF = value->rValue;
60  mods->BJTrollOffFGiven = TRUE;
61  break;
62  case BJT_MOD_ISE:
63  mods->BJTleakBEcurrent = value->rValue;
65  break;
66  case BJT_MOD_NE:
67  mods->BJTleakBEemissionCoeff = value->rValue;
69  break;
70  case BJT_MOD_BR:
71  mods->BJTbetaR = value->rValue;
72  mods->BJTbetaRGiven = TRUE;
73  break;
74  case BJT_MOD_NR:
75  mods->BJTemissionCoeffR = value->rValue;
77  break;
78  case BJT_MOD_VAR:
79  mods->BJTearlyVoltR = value->rValue;
80  mods->BJTearlyVoltRGiven = TRUE;
81  break;
82  case BJT_MOD_IKR:
83  mods->BJTrollOffR = value->rValue;
84  mods->BJTrollOffRGiven = TRUE;
85  break;
86  case BJT_MOD_ISC:
87  mods->BJTleakBCcurrent = value->rValue;
89  break;
90  case BJT_MOD_NC:
91  mods->BJTleakBCemissionCoeff = value->rValue;
93  break;
94  case BJT_MOD_RB:
95  mods->BJTbaseResist = value->rValue;
96  mods->BJTbaseResistGiven = TRUE;
97  break;
98  case BJT_MOD_IRB:
99  mods->BJTbaseCurrentHalfResist = value->rValue;
101  break;
102  case BJT_MOD_RBM:
103  mods->BJTminBaseResist = value->rValue;
104  mods->BJTminBaseResistGiven = TRUE;
105  break;
106  case BJT_MOD_RE:
107  mods->BJTemitterResist = value->rValue;
108  mods->BJTemitterResistGiven = TRUE;
109  break;
110  case BJT_MOD_RC:
111  mods->BJTcollectorResist = value->rValue;
113  break;
114  case BJT_MOD_CJE:
115  mods->BJTdepletionCapBE = value->rValue;
117  break;
118  case BJT_MOD_VJE:
119  mods->BJTpotentialBE = value->rValue;
120  mods->BJTpotentialBEGiven = TRUE;
121  break;
122  case BJT_MOD_MJE:
123  mods->BJTjunctionExpBE = value->rValue;
124  mods->BJTjunctionExpBEGiven = TRUE;
125  break;
126  case BJT_MOD_TF:
127  mods->BJTtransitTimeF = value->rValue;
128  mods->BJTtransitTimeFGiven = TRUE;
129  break;
130  case BJT_MOD_XTF:
131  mods->BJTtransitTimeBiasCoeffF = value->rValue;
133  break;
134  case BJT_MOD_VTF:
135  mods->BJTtransitTimeFVBC = value->rValue;
137  break;
138  case BJT_MOD_ITF:
139  mods->BJTtransitTimeHighCurrentF = value->rValue;
141  break;
142  case BJT_MOD_PTF:
143  mods->BJTexcessPhase = value->rValue;
144  mods->BJTexcessPhaseGiven = TRUE;
145  break;
146  case BJT_MOD_CJC:
147  mods->BJTdepletionCapBC = value->rValue;
149  break;
150  case BJT_MOD_VJC:
151  mods->BJTpotentialBC = value->rValue;
152  mods->BJTpotentialBCGiven = TRUE;
153  break;
154  case BJT_MOD_MJC:
155  mods->BJTjunctionExpBC = value->rValue;
156  mods->BJTjunctionExpBCGiven = TRUE;
157  break;
158  case BJT_MOD_XCJC:
159  mods->BJTbaseFractionBCcap = value->rValue;
161  break;
162  case BJT_MOD_TR:
163  mods->BJTtransitTimeR = value->rValue;
164  mods->BJTtransitTimeRGiven = TRUE;
165  break;
166  case BJT_MOD_CJS:
167  mods->BJTcapCS = value->rValue;
168  mods->BJTcapCSGiven = TRUE;
169  break;
170  case BJT_MOD_VJS:
171  mods->BJTpotentialSubstrate = value->rValue;
173  break;
174  case BJT_MOD_MJS:
175  mods->BJTexponentialSubstrate = value->rValue;
177  break;
178  case BJT_MOD_XTB:
179  mods->BJTbetaExp = value->rValue;
180  mods->BJTbetaExpGiven = TRUE;
181  break;
182  case BJT_MOD_EG:
183  mods->BJTenergyGap = value->rValue;
184  mods->BJTenergyGapGiven = TRUE;
185  break;
186  case BJT_MOD_XTI:
187  mods->BJTtempExpIS = value->rValue;
188  mods->BJTtempExpISGiven = TRUE;
189  break;
190  case BJT_MOD_FC:
191  mods->BJTdepletionCapCoeff = value->rValue;
193  break;
194  case BJT_MOD_TNOM:
195  mods->BJTtnom = value->rValue+CONSTCtoK;
196  mods->BJTtnomGiven = TRUE;
197  break;
198  case BJT_MOD_KF:
199  mods->BJTfNcoef = value->rValue;
200  mods->BJTfNcoefGiven = TRUE;
201  break;
202  case BJT_MOD_AF:
203  mods->BJTfNexp = value->rValue;
204  mods->BJTfNexpGiven = TRUE;
205  break;
206  default:
207  return (E_BADPARM);
208  }
209  return (OK);
210 }
unsigned BJTrollOffRGiven
Definition: bjtdefs.h:330
unsigned BJTdepletionCapBCGiven
Definition: bjtdefs.h:346
double BJTdepletionCapBC
Definition: bjtdefs.h:291
#define BJT_MOD_IS
Definition: bjtdefs.h:379
#define BJT_MOD_MJC
Definition: bjtdefs.h:407
#define NPN
Definition: bjtdefs.h:364
#define BJT_MOD_EG
Definition: bjtdefs.h:414
#define BJT_MOD_XTB
Definition: bjtdefs.h:413
unsigned BJTexponentialSubstrateGiven
Definition: bjtdefs.h:353
double BJTjunctionExpBC
Definition: bjtdefs.h:293
double BJTtempExpIS
Definition: bjtdefs.h:301
#define BJT_MOD_VJS
Definition: bjtdefs.h:411
double BJTpotentialBE
Definition: bjtdefs.h:284
double BJTleakBCcurrent
Definition: bjtdefs.h:276
double BJTbaseCurrentHalfResist
Definition: bjtdefs.h:279
#define BJT_MOD_TR
Definition: bjtdefs.h:409
unsigned BJTbetaExpGiven
Definition: bjtdefs.h:354
int BJTtype
Definition: bjtdefs.h:262
double BJTexcessPhase
Definition: bjtdefs.h:290
unsigned BJTcapCSGiven
Definition: bjtdefs.h:351
#define BJT_MOD_NPN
Definition: bjtdefs.h:377
double BJTtransitTimeR
Definition: bjtdefs.h:295
double BJTtransitTimeHighCurrentF
Definition: bjtdefs.h:289
unsigned BJTjunctionExpBEGiven
Definition: bjtdefs.h:340
unsigned BJTleakBEcurrentGiven
Definition: bjtdefs.h:325
unsigned BJTleakBCemissionCoeffGiven
Definition: bjtdefs.h:332
#define BJT_MOD_NE
Definition: bjtdefs.h:385
double BJTemissionCoeffF
Definition: bjtdefs.h:267
unsigned BJTminBaseResistGiven
Definition: bjtdefs.h:335
double BJTbetaExp
Definition: bjtdefs.h:299
#define BJT_MOD_TNOM
Definition: bjtdefs.h:417
unsigned BJTtransitTimeBiasCoeffFGiven
Definition: bjtdefs.h:342
unsigned BJTdepletionCapBEGiven
Definition: bjtdefs.h:338
#define CONSTCtoK
Definition: const.h:11
double BJTpotentialBC
Definition: bjtdefs.h:292
double BJTemissionCoeffR
Definition: bjtdefs.h:273
#define BJT_MOD_VJC
Definition: bjtdefs.h:406
double BJTrollOffF
Definition: bjtdefs.h:269
double BJTjunctionExpBE
Definition: bjtdefs.h:285
unsigned BJTearlyVoltFGiven
Definition: bjtdefs.h:323
#define BJT_MOD_TF
Definition: bjtdefs.h:400
#define E_BADPARM
Definition: iferrmsg.h:26
unsigned BJTcollectorResistGiven
Definition: bjtdefs.h:337
unsigned BJTtnomGiven
Definition: bjtdefs.h:319
#define BJT_MOD_CJS
Definition: bjtdefs.h:410
unsigned BJTbetaFGiven
Definition: bjtdefs.h:321
#define BJT_MOD_VAR
Definition: bjtdefs.h:388
unsigned BJTfNcoefGiven
Definition: bjtdefs.h:358
double BJTbetaF
Definition: bjtdefs.h:266
#define TRUE
Definition: util.h:27
#define BJT_MOD_MJS
Definition: bjtdefs.h:412
unsigned BJTtransitTimeHighCurrentFGiven
Definition: bjtdefs.h:344
double BJTexponentialSubstrate
Definition: bjtdefs.h:298
double BJTrollOffR
Definition: bjtdefs.h:275
int iValue
Definition: ifsim.h:232
unsigned BJTemitterResistGiven
Definition: bjtdefs.h:336
double rValue
Definition: ifsim.h:233
unsigned BJTsatCurGiven
Definition: bjtdefs.h:320
#define BJT_MOD_FC
Definition: bjtdefs.h:416
#define BJT_MOD_XTI
Definition: bjtdefs.h:415
unsigned BJTleakBCcurrentGiven
Definition: bjtdefs.h:331
double BJTfNcoef
Definition: bjtdefs.h:303
#define BJT_MOD_NF
Definition: bjtdefs.h:381
unsigned BJTpotentialBCGiven
Definition: bjtdefs.h:347
#define OK
Definition: iferrmsg.h:17
double BJTearlyVoltR
Definition: bjtdefs.h:274
#define BJT_MOD_KF
Definition: bjtdefs.h:419
#define BJT_MOD_RB
Definition: bjtdefs.h:392
#define BJT_MOD_RE
Definition: bjtdefs.h:395
#define BJT_MOD_PTF
Definition: bjtdefs.h:404
#define BJT_MOD_ITF
Definition: bjtdefs.h:403
double BJTpotentialSubstrate
Definition: bjtdefs.h:297
double BJTdepletionCapCoeff
Definition: bjtdefs.h:302
unsigned BJTrollOffFGiven
Definition: bjtdefs.h:324
double BJTleakBEcurrent
Definition: bjtdefs.h:270
double BJTleakBEemissionCoeff
Definition: bjtdefs.h:271
double BJTtransitTimeF
Definition: bjtdefs.h:286
#define BJT_MOD_ISE
Definition: bjtdefs.h:384
#define BJT_MOD_XTF
Definition: bjtdefs.h:401
unsigned BJTbaseResistGiven
Definition: bjtdefs.h:333
#define BJT_MOD_IKF
Definition: bjtdefs.h:383
unsigned BJTfNexpGiven
Definition: bjtdefs.h:359
#define PNP
Definition: bjtdefs.h:365
double BJTcollectorResist
Definition: bjtdefs.h:282
#define BJT_MOD_CJC
Definition: bjtdefs.h:405
double BJTtransitTimeBiasCoeffF
Definition: bjtdefs.h:287
#define BJT_MOD_IKR
Definition: bjtdefs.h:389
double BJTtnom
Definition: bjtdefs.h:264
#define BJT_MOD_VJE
Definition: bjtdefs.h:398
#define BJT_MOD_XCJC
Definition: bjtdefs.h:408
double BJTearlyVoltF
Definition: bjtdefs.h:268
unsigned BJTpotentialSubstrateGiven
Definition: bjtdefs.h:352
double BJTtransitTimeFVBC
Definition: bjtdefs.h:288
#define BJT_MOD_CJE
Definition: bjtdefs.h:397
double BJTsatCur
Definition: bjtdefs.h:265
#define BJT_MOD_RBM
Definition: bjtdefs.h:394
unsigned BJTemissionCoeffFGiven
Definition: bjtdefs.h:322
double BJTbaseResist
Definition: bjtdefs.h:278
double BJTdepletionCapBE
Definition: bjtdefs.h:283
double BJTfNexp
Definition: bjtdefs.h:304
#define BJT_MOD_AF
Definition: bjtdefs.h:418
int BJTmParam(int param, IFvalue *value, GENmodel *inModel)
Definition: bjtmpar.c:22
unsigned BJTbaseFractionBCcapGiven
Definition: bjtdefs.h:349
unsigned BJTbaseCurrentHalfResistGiven
Definition: bjtdefs.h:334
unsigned BJTleakBEemissionCoeffGiven
Definition: bjtdefs.h:326
unsigned BJTdepletionCapCoeffGiven
Definition: bjtdefs.h:357
#define BJT_MOD_VAF
Definition: bjtdefs.h:382
unsigned BJTemissionCoeffRGiven
Definition: bjtdefs.h:328
#define BJT_MOD_BF
Definition: bjtdefs.h:380
unsigned BJTjunctionExpBCGiven
Definition: bjtdefs.h:348
#define BJT_MOD_NR
Definition: bjtdefs.h:387
double BJTemitterResist
Definition: bjtdefs.h:281
unsigned BJTearlyVoltRGiven
Definition: bjtdefs.h:329
unsigned BJTpotentialBEGiven
Definition: bjtdefs.h:339
#define BJT_MOD_VTF
Definition: bjtdefs.h:402
#define BJT_MOD_PNP
Definition: bjtdefs.h:378
#define BJT_MOD_BR
Definition: bjtdefs.h:386
unsigned BJTtempExpISGiven
Definition: bjtdefs.h:356
unsigned BJTtransitTimeFVBCGiven
Definition: bjtdefs.h:343
double BJTleakBCemissionCoeff
Definition: bjtdefs.h:277
#define BJT_MOD_NC
Definition: bjtdefs.h:391
#define BJT_MOD_ISC
Definition: bjtdefs.h:390
unsigned BJTtransitTimeRGiven
Definition: bjtdefs.h:350
unsigned BJTenergyGapGiven
Definition: bjtdefs.h:355
#define BJT_MOD_IRB
Definition: bjtdefs.h:393
unsigned BJTexcessPhaseGiven
Definition: bjtdefs.h:345
#define BJT_MOD_RC
Definition: bjtdefs.h:396
unsigned BJTtransitTimeFGiven
Definition: bjtdefs.h:341
double BJTminBaseResist
Definition: bjtdefs.h:280
#define BJT_MOD_MJE
Definition: bjtdefs.h:399
unsigned BJTbetaRGiven
Definition: bjtdefs.h:327
double BJTbetaR
Definition: bjtdefs.h:272
double BJTbaseFractionBCcap
Definition: bjtdefs.h:294
double BJTcapCS
Definition: bjtdefs.h:296
double BJTenergyGap
Definition: bjtdefs.h:300