Jspice3
jfetdefs.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  1993 Stephen R. Whiteley
6 ****************************************************************************/
7 /********** new in 3f2
8 Sydney University mods Copyright(c) 1989 Anthony E. Parker, David J. Skellern
9  Laboratory for Communication Science Engineering
10  Sydney University Department of Electrical Engineering, Australia
11 **********/
12 
13 #ifndef JFET
14 #define JFET
15 
16 #include "devdefs.h"
17 
18  /* structures used to describe Junction Field Effect Transistors */
19 
20 
21 /* information used to describe a single instance */
22 
23 typedef struct sJFETinstance {
24  struct sJFETmodel *JFETmodPtr; /* backpointer to model */
25  struct sJFETinstance *JFETnextInstance; /* pointer to next instance of
26  * current model*/
27  IFuid JFETname; /* pointer to character string naming this instance */
28  int JFETstate; /* pointer to start of state vector for jfet */
29  int JFETdrainNode; /* number of drain node of jfet */
30  int JFETgateNode; /* number of gate node of jfet */
31  int JFETsourceNode; /* number of source node of jfet */
32  int JFETdrainPrimeNode; /* number of internal drain node of jfet */
33  int JFETsourcePrimeNode; /* number of internal source node of jfet */
34 
35  double *JFETdrainDrainPrimePtr; /* pointer to sparse matrix at
36  * (drain,drain prime) */
37  double *JFETgateDrainPrimePtr; /* pointer to sparse matrix at
38  * (gate,drain prime) */
39  double *JFETgateSourcePrimePtr; /* pointer to sparse matrix at
40  * (gate,source prime) */
41  double *JFETsourceSourcePrimePtr; /* pointer to sparse matrix at
42  * (source,source prime) */
43  double *JFETdrainPrimeDrainPtr; /* pointer to sparse matrix at
44  * (drain prime,drain) */
45  double *JFETdrainPrimeGatePtr; /* pointer to sparse matrix at
46  * (drain prime,gate) */
47  double *JFETdrainPrimeSourcePrimePtr; /* pointer to sparse matrix
48  * (drain prime,source prime) */
49  double *JFETsourcePrimeGatePtr; /* pointer to sparse matrix at
50  * (source prime,gate) */
51  double *JFETsourcePrimeSourcePtr; /* pointer to sparse matrix at
52  * (source prime,source) */
53  double *JFETsourcePrimeDrainPrimePtr; /* pointer to sparse matrix
54  * (source prime,drain prime) */
55  double *JFETdrainDrainPtr; /* pointer to sparse matrix at
56  * (drain,drain) */
57  double *JFETgateGatePtr; /* pointer to sparse matrix at
58  * (gate,gate) */
59  double *JFETsourceSourcePtr; /* pointer to sparse matrix at
60  * (source,source) */
61  double *JFETdrainPrimeDrainPrimePtr; /* pointer to sparse matrix
62  * (drain prime,drain prime) */
63  double *JFETsourcePrimeSourcePrimePtr; /* pointer to sparse matrix
64  * (source prime,source prime) */
65 
66  int JFETmode;
67  /* distortion analysis Taylor coeffs. */
68 
69 /*
70  * naming convention:
71  * x = vgs
72  * y = vds
73  * cdr = cdrain
74  */
75 
76 #define JFETNDCOEFFS 21
77 
78 #ifndef NODISTO
80 #else /* NODISTO */
81  double *JFETdCoeffs;
82 #endif /* NODISTO */
83 
84 #ifndef CONFIG
85 
86 #define cdr_x JFETdCoeffs[0]
87 #define cdr_y JFETdCoeffs[1]
88 #define cdr_x2 JFETdCoeffs[2]
89 #define cdr_y2 JFETdCoeffs[3]
90 #define cdr_xy JFETdCoeffs[4]
91 #define cdr_x3 JFETdCoeffs[5]
92 #define cdr_y3 JFETdCoeffs[6]
93 #define cdr_x2y JFETdCoeffs[7]
94 #define cdr_xy2 JFETdCoeffs[8]
95 
96 #define ggs1 JFETdCoeffs[9]
97 #define ggd1 JFETdCoeffs[10]
98 #define ggs2 JFETdCoeffs[11]
99 #define ggd2 JFETdCoeffs[12]
100 #define ggs3 JFETdCoeffs[13]
101 #define ggd3 JFETdCoeffs[14]
102 #define capgs1 JFETdCoeffs[15]
103 #define capgd1 JFETdCoeffs[16]
104 #define capgs2 JFETdCoeffs[17]
105 #define capgd2 JFETdCoeffs[18]
106 #define capgs3 JFETdCoeffs[19]
107 #define capgd3 JFETdCoeffs[20]
108 
109 #endif
110 
111 /* indices to an array of JFET noise sources */
112 
113 #define JFETRDNOIZ 0
114 #define JFETRSNOIZ 1
115 #define JFETIDNOIZ 2
116 #define JFETFLNOIZ 3
117 #define JFETTOTNOIZ 4
118 
119 #define JFETNSRCS 5
120 
121 #ifndef NONOISE
123 #else /* NONOISE */
124  double **JFETnVar;
125 #endif /* NONOISE */
126 
127  unsigned JFEToff :1; /* 'off' flag for jfet */
128  unsigned JFETareaGiven : 1; /* flag to indicate area was specified */
129  unsigned JFETicVDSGiven : 1; /* initial condition given flag for V D-S*/
130  unsigned JFETicVGSGiven : 1; /* initial condition given flag for V G-S*/
131  unsigned JFETtempGiven : 1; /* flag to indicate instance temp given */
132 
133 
134  double JFETarea; /* area factor for the jfet */
135  double JFETicVDS; /* initial condition voltage D-S*/
136  double JFETicVGS; /* initial condition voltage G-S*/
137  double JFETtemp; /* operating temperature */
138  double JFETtSatCur; /* temperature adjusted saturation current */
139  double JFETtGatePot; /* temperature adjusted gate potential */
140  double JFETtCGS; /* temperature corrected G-S capacitance */
141  double JFETtCGD; /* temperature corrected G-D capacitance */
142  double JFETcorDepCap; /* joining point of the fwd bias dep. cap eq.s */
143  double JFETvcrit; /* critical voltage for the instance */
144  double JFETf1; /* coefficient of capacitance polynomial exp */
145 
146 
147 } JFETinstance ;
148 
149 #define JFETvgs JFETstate
150 #define JFETvgd JFETstate+1
151 #define JFETcg JFETstate+2
152 #define JFETcd JFETstate+3
153 #define JFETcgd JFETstate+4
154 #define JFETgm JFETstate+5
155 #define JFETgds JFETstate+6
156 #define JFETggs JFETstate+7
157 #define JFETggd JFETstate+8
158 #define JFETqgs JFETstate+9
159 #define JFETcqgs JFETstate+10
160 #define JFETqgd JFETstate+11
161 #define JFETcqgd JFETstate+12
162 
163 /* per model data */
164 
165 typedef struct sJFETmodel { /* model structure for a jfet */
166  int JFETmodType; /* type index of this device type */
167  struct sJFETmodel *JFETnextModel; /* pointer to next possible model in
168  * linked list */
169  JFETinstance * JFETinstances; /* pointer to list of instances
170  * that have this model */
171  IFuid JFETmodName; /* pointer to character string naming this model */
172  int JFETtype;
173 
175  double JFETbeta;
179  double JFETcapGS;
180  double JFETcapGD;
184  double JFETfNcoef;
185  double JFETfNexp;
186 
187 
190  double JFETf2;
191  double JFETf3;
192  /* Modification for Sydney University JFET model */
193  double JFETb; /* doping profile parameter */
194  double JFETbFac; /* internal derived doping profile parameter */
195  /* end Sydney University mod */
196  double JFETtnom; /* temperature at which parameters were measured */
197 
198  unsigned JFETthresholdGiven : 1;
199  unsigned JFETbetaGiven : 1;
200  unsigned JFETlModulationGiven : 1;
201  unsigned JFETdrainResistGiven : 1;
202  unsigned JFETsourceResistGiven : 1;
203  unsigned JFETcapGSGiven : 1;
204  unsigned JFETcapGDGiven : 1;
208  /* Modification for Sydney University JFET model */
209  unsigned JFETbGiven : 1;
210  /* end Sydney University mod */
211  unsigned JFETtnomGiven : 1; /* user specified Tnom for model */
212  unsigned JFETfNcoefGiven : 1;
213  unsigned JFETfNexpGiven : 1;
214 
215 
216 } JFETmodel;
217 
218 #ifndef NJF
219 
220 #define NJF 1
221 #define PJF -1
222 
223 #endif /*NJF*/
224 
225 /* device parameters */
226 #define JFET_AREA 1
227 #define JFET_IC_VDS 2
228 #define JFET_IC_VGS 3
229 #define JFET_IC 4
230 #define JFET_OFF 5
231 #define JFET_TEMP 6
232 
233 /* model parameters */
234 #define JFET_MOD_VTO 101
235 #define JFET_MOD_BETA 102
236 #define JFET_MOD_LAMBDA 103
237 #define JFET_MOD_RD 104
238 #define JFET_MOD_RS 105
239 #define JFET_MOD_CGS 106
240 #define JFET_MOD_CGD 107
241 #define JFET_MOD_PB 108
242 #define JFET_MOD_IS 109
243 #define JFET_MOD_FC 110
244 #define JFET_MOD_NJF 111
245 #define JFET_MOD_PJF 112
246 #define JFET_MOD_TNOM 113
247 #define JFET_MOD_KF 114
248 #define JFET_MOD_AF 115
249 /* Modification for Sydney University JFET model */
250 #define JFET_MOD_B 116
251 /* end Sydney University mod */
252 
253 /* device questions */
254 /* in UCB distr, these are 300's (error) */
255 #define JFET_DRAINNODE 201
256 #define JFET_GATENODE 202
257 #define JFET_SOURCENODE 203
258 #define JFET_DRAINPRIMENODE 204
259 #define JFET_SOURCEPRIMENODE 205
260 #define JFET_VGS 206
261 #define JFET_VGD 207
262 #define JFET_CG 208
263 #define JFET_CD 209
264 #define JFET_CGD 210
265 #define JFET_GM 211
266 #define JFET_GDS 212
267 #define JFET_GGS 213
268 #define JFET_GGD 214
269 #define JFET_QGS 215
270 #define JFET_CQGS 216
271 #define JFET_QGD 217
272 #define JFET_CQGD 218
273 #define JFET_CS 219
274 #define JFET_POWER 220
275 
276 /* model questions */
277 #define JFET_MOD_DRAINCONDUCT 301
278 #define JFET_MOD_SOURCECONDUCT 302
279 #define JFET_MOD_DEPLETIONCAP 303
280 #define JFET_MOD_VCRIT 304
281 #define JFET_MOD_TYPE 305
282 
283 
284 #ifdef __STDC__
285 
286 extern int JFETacLoad(GENmodel*,CKTcircuit*);
287 extern int JFETask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*);
288 extern int JFETdisto(int,GENmodel*,CKTcircuit*);
289 extern int JFETgetic(GENmodel*,CKTcircuit*);
290 extern int JFETload(GENmodel*,CKTcircuit*);
291 extern int JFETmAsk(CKTcircuit*,GENmodel*,int,IFvalue*);
292 extern int JFETmParam(int,IFvalue*,GENmodel*);
293 extern int JFETnoise(int,int,GENmodel*,CKTcircuit*,GENERIC*,double*);
294 extern int JFETparam(CKTcircuit*,int,IFvalue*,GENinstance*,IFvalue*);
295 extern void JFETparse(int,GENERIC*,GENERIC*,GENERIC*);
296 extern int JFETpzLoad(GENmodel*,CKTcircuit*,SPcomplex*);
297 extern int JFETsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
298 extern int JFETtemp(GENmodel*,CKTcircuit*);
299 extern int JFETtrunc(GENmodel*,CKTcircuit*,double*);
300 
301 #else /* stdc */
302 
303 extern int JFETacLoad();
304 extern int JFETask();
305 extern int JFETdisto();
306 extern int JFETgetic();
307 extern int JFETload();
308 extern int JFETmAsk();
309 extern int JFETmParam();
310 extern int JFETnoise();
311 extern int JFETparam();
312 extern void JFETparse();
313 extern int JFETpzLoad();
314 extern int JFETsetup();
315 extern int JFETtemp();
316 extern int JFETtrunc();
317 
318 #endif /* stdc */
319 
320 #endif /*JFET*/
int JFETdisto()
double * JFETdrainDrainPrimePtr
Definition: jfetdefs.h:35
int JFETask()
int JFETsetup()
double JFETcapGS
Definition: jfetdefs.h:179
double * JFETsourcePrimeGatePtr
Definition: jfetdefs.h:49
double JFETvcrit
Definition: jfetdefs.h:143
double JFETgatePotential
Definition: jfetdefs.h:181
double JFETtCGD
Definition: jfetdefs.h:141
double JFETcorDepCap
Definition: jfetdefs.h:142
double JFETnVar[NSTATVARS][JFETNSRCS]
Definition: jfetdefs.h:122
int JFETmAsk()
double JFETbFac
Definition: jfetdefs.h:194
int JFETacLoad()
double JFETbeta
Definition: jfetdefs.h:175
double * JFETsourceSourcePtr
Definition: jfetdefs.h:59
unsigned JFETareaGiven
Definition: jfetdefs.h:128
double JFETthreshold
Definition: jfetdefs.h:174
int JFETtype
Definition: jfetdefs.h:172
double JFETtnom
Definition: jfetdefs.h:196
double JFETf1
Definition: jfetdefs.h:144
unsigned JFETfNcoefGiven
Definition: jfetdefs.h:212
double * JFETgateGatePtr
Definition: jfetdefs.h:57
IFuid JFETmodName
Definition: jfetdefs.h:171
struct sJFETmodel JFETmodel
unsigned JFETicVDSGiven
Definition: jfetdefs.h:129
unsigned JFETbetaGiven
Definition: jfetdefs.h:199
double JFETdrainConduct
Definition: jfetdefs.h:188
int JFETpzLoad()
int JFETdrainPrimeNode
Definition: jfetdefs.h:32
int JFETgateNode
Definition: jfetdefs.h:30
JFETinstance * JFETinstances
Definition: jfetdefs.h:169
double JFETdepletionCapCoeff
Definition: jfetdefs.h:183
int JFETstate
Definition: jfetdefs.h:28
double JFETtSatCur
Definition: jfetdefs.h:138
double * JFETgateDrainPrimePtr
Definition: jfetdefs.h:37
double * JFETdrainPrimeDrainPrimePtr
Definition: jfetdefs.h:61
unsigned JFETgateSatCurrentGiven
Definition: jfetdefs.h:206
double JFETarea
Definition: jfetdefs.h:134
unsigned JFETicVGSGiven
Definition: jfetdefs.h:130
unsigned JFETfNexpGiven
Definition: jfetdefs.h:213
double JFETtemp
Definition: jfetdefs.h:137
double JFETf2
Definition: jfetdefs.h:190
GENERIC * IFuid
Definition: ifsim.h:72
int JFETparam()
double * JFETsourceSourcePrimePtr
Definition: jfetdefs.h:41
double JFETfNexp
Definition: jfetdefs.h:185
double * JFETdrainPrimeDrainPtr
Definition: jfetdefs.h:43
int JFETmParam()
unsigned JFETtempGiven
Definition: jfetdefs.h:131
double JFETsourceConduct
Definition: jfetdefs.h:189
int JFETtrunc()
double JFETtCGS
Definition: jfetdefs.h:140
double JFETicVGS
Definition: jfetdefs.h:136
unsigned JFETdepletionCapCoeffGiven
Definition: jfetdefs.h:207
double JFETgateSatCurrent
Definition: jfetdefs.h:182
double * JFETsourcePrimeSourcePrimePtr
Definition: jfetdefs.h:63
int JFETgetic()
#define JFETNDCOEFFS
Definition: jfetdefs.h:76
struct sJFETmodel * JFETnextModel
Definition: jfetdefs.h:167
unsigned JFETsourceResistGiven
Definition: jfetdefs.h:202
int JFETmode
Definition: jfetdefs.h:66
double JFETicVDS
Definition: jfetdefs.h:135
struct sJFETmodel * JFETmodPtr
Definition: jfetdefs.h:24
double * JFETdrainPrimeGatePtr
Definition: jfetdefs.h:45
unsigned JFETcapGSGiven
Definition: jfetdefs.h:203
unsigned JFETthresholdGiven
Definition: jfetdefs.h:198
int JFETdrainNode
Definition: jfetdefs.h:29
double JFETfNcoef
Definition: jfetdefs.h:184
double JFETb
Definition: jfetdefs.h:193
double * JFETdrainPrimeSourcePrimePtr
Definition: jfetdefs.h:47
double * JFETgateSourcePrimePtr
Definition: jfetdefs.h:39
struct sJFETinstance * JFETnextInstance
Definition: jfetdefs.h:25
unsigned JFETcapGDGiven
Definition: jfetdefs.h:204
double JFETsourceResist
Definition: jfetdefs.h:178
unsigned JFETtnomGiven
Definition: jfetdefs.h:211
double JFETcapGD
Definition: jfetdefs.h:180
int JFETsourcePrimeNode
Definition: jfetdefs.h:33
unsigned JFETdrainResistGiven
Definition: jfetdefs.h:201
unsigned JFEToff
Definition: jfetdefs.h:127
unsigned JFETbGiven
Definition: jfetdefs.h:209
double JFETtGatePot
Definition: jfetdefs.h:139
#define NSTATVARS
Definition: cktdefs.h:21
double * JFETsourcePrimeDrainPrimePtr
Definition: jfetdefs.h:53
double JFETdrainResist
Definition: jfetdefs.h:177
#define SMPmatrix
Definition: smpdefs.h:11
double JFETf3
Definition: jfetdefs.h:191
int JFETnoise()
void JFETparse()
double JFETdCoeffs[JFETNDCOEFFS]
Definition: jfetdefs.h:79
double * JFETdrainDrainPtr
Definition: jfetdefs.h:55
int JFETsourceNode
Definition: jfetdefs.h:31
int JFETmodType
Definition: jfetdefs.h:166
int JFETload()
unsigned JFETlModulationGiven
Definition: jfetdefs.h:200
#define JFETNSRCS
Definition: jfetdefs.h:119
double * JFETsourcePrimeSourcePtr
Definition: jfetdefs.h:51
unsigned JFETgatePotentialGiven
Definition: jfetdefs.h:205
double JFETlModulation
Definition: jfetdefs.h:176
IFuid JFETname
Definition: jfetdefs.h:27
char GENERIC
Definition: ifsim.h:27
struct sJFETinstance JFETinstance