Jspice3
sfftdefs.h
Go to the documentation of this file.
1 /***************************************************************************
2 JSPICE3 adaptation of Spice3f2 - Copyright (c) Stephen R. Whiteley 1992
3 Authors: 1993 Stephen R. Whiteley
4 ****************************************************************************/
5 
6 #ifndef SFFT
7 #define SFFT
8 
9 #include "devdefs.h"
10 
11  /* data structures used to describe sfft */
12 
13 
14 /* information needed per instance */
15 
16 typedef struct sSFFTinstance {
17  struct sSFFTmodel *SFFTmodPtr; /* backpointer to model */
18  struct sSFFTinstance *SFFTnextInstance; /* pointer to next sfft instance */
19  IFuid SFFTname; /* pointer to string naming this instance */
20  int SFFTstate; /* pointer to start of state vector for sfft */
21  int SFFTposNode; /* number of positive node of sfft */
22  int SFFTnegNode; /* number of negative node of sfft */
23  int SFFTcposNode; /* number of positive control node */
24  int SFFTcnegNode; /* number of negative control node */
25  int SFFTi1Eq; /* internal branch for control current */
26  int SFFTi2Eq; /* internal branch for output current */
27  int SFFTvprime; /* internal node */
28 
29  double *SFFTcposCposptr; /* pointers to the various matrix locations */
30  double *SFFTcnegCnegptr;
31  double *SFFTposPosptr;
32  double *SFFTnegNegptr;
33 
34  double *SFFTcposPosptr;
35  double *SFFTposCposptr;
36  double *SFFTcnegNegptr;
37  double *SFFTnegCnegptr;
38 
39  double *SFFTcposI1ptr;
40  double *SFFTi1Cposptr;
41  double *SFFTcnegI1ptr;
42  double *SFFTi1Cnegptr;
43  double *SFFTi1I1ptr;
44 
45  double *SFFTposI2ptr;
46  double *SFFTi2Posptr;
47  double *SFFTnegI2ptr;
48  double *SFFTi2Negptr;
49  double *SFFTi2Vprimeptr;
50  double *SFFTi2I2ptr;
51  double *SFFTi1I2ptr;
52  double *SFFTi2I1ptr;
53 
55  double *SFFTvprimeI1ptr;
56  double *SFFTvprimeI2ptr;
57 
58 
59  /* flags to indicate... */
60  unsigned SFFToff : 1; /* 'off' flag for sfft was specified */
61  unsigned SFFTlenGiven : 1; /* length was specified */
62  unsigned SFFTwidGiven : 1; /* width was specified */
63  unsigned SFFTinitV1Given : 1; /* Vd+c+ was specified */
64  unsigned SFFTinitV2Given : 1; /* Vd-c- was specified */
65  unsigned SFFTinitI1Given : 1; /* Ic was specified */
66  unsigned SFFTinitI2Given : 1; /* Id was specified */
67 
68  double SFFTlength; /* length factor for the sfft */
69  double SFFTwidth; /* width factor for the sfft */
70  double SFFTinitV1; /* initial condition */
71  double SFFTinitV2; /* initial condition */
72  double SFFTinitI1; /* initial condition */
73  double SFFTinitI2; /* initial condition */
74  double SFFTic; /* critical current */
75  double SFFTicpos; /* pos critical current exp decay factor */
76  double SFFTicneg; /* neg critical current exp decay factor */
77  double SFFTisat; /* fluxon velocity saturation current */
78  double SFFTinsat; /* fluxon number saturation current */
79  double SFFTr; /* resistance */
80  double SFFTl1; /* control line self inductance */
81  double SFFTl2; /* SFFT body self inductance */
82  double SFFTm12; /* mutual inductance */
83  double SFFTc1; /* control positive to body positive capacitance */
84  double SFFTc2; /* control negative to body negative capacitaqnce */
85  double SFFTtc; /* transit time constant */
86  double SFFTgeq1; /* integration parameters... */
87  double SFFTgeq2;
88  double SFFTgeq3;
89  double SFFTceq1;
90  double SFFTceq2;
91  double SFFTceq3;
92  double SFFTreq1;
93  double SFFTreq2;
94  double SFFTveq1;
95  double SFFTveq2;
96 
97  double SFFTv; /* voltage across device */
98  double SFFTd1; /* dVoltage/dControl */
99  double SFFTd2; /* dVoltage/dCurrent */
100 
101 } SFFTinstance ;
102 
103 
104 #define SFFTi1 SFFTstate
105 #define SFFTi2 SFFTstate+1
106 #define SFFTflux1 SFFTstate+2
107 #define SFFTvolt1 SFFTstate+3
108 #define SFFTflux2 SFFTstate+4
109 #define SFFTvolt2 SFFTstate+5
110 #define SFFTqcap1 SFFTstate+6
111 #define SFFTccap1 SFFTstate+7
112 #define SFFTqcap2 SFFTstate+8
113 #define SFFTccap2 SFFTstate+9
114 #define SFFTqcap3 SFFTstate+10
115 #define SFFTccap3 SFFTstate+11
116 
117 #define SFFTnumStates 12
118 
119 /* per model data */
120 
121 typedef struct sSFFTmodel { /* model structure for a sfft */
122  int SFFTmodType; /* type index of this device type */
123  struct sSFFTmodel *SFFTnextModel; /* pointer to next possible model in
124  * linked list */
125  SFFTinstance * SFFTinstances; /* pointer to list of instances
126  * that have this model */
127  IFuid SFFTmodName; /* pointer to character string naming this model */
128 
129  /* flags to indicate... */
130  unsigned SFFTnumSectsGiven : 1;/* number of sections was specified */
131  unsigned SFFTicGiven : 1; /* critical current was specified */
132  unsigned SFFTicposGiven : 1; /* pos exp current was specified */
133  unsigned SFFTicnegGiven : 1; /* neg exp current was specified */
134  unsigned SFFTisatGiven : 1; /* fluxon sat. velocity current specd. */
135  unsigned SFFTinsatGiven : 1; /* fluxon sat. number current specd. */
136  unsigned SFFTgainGiven : 1; /* gain parameter specd. */
137  unsigned SFFTrGiven : 1; /* normal resistance specified */
138  unsigned SFFTl1Given : 1; /* control self inductance specd. */
139  unsigned SFFTl2Given : 1; /* body self inductance specd. */
140  unsigned SFFTfactorGiven : 1; /* coupling factor specd. */
141  unsigned SFFTc1Given : 1; /* cap. control+ to drain specd. */
142  unsigned SFFTc2Given : 1; /* cap. control- to source specd. */
143  unsigned SFFTtcGiven : 1; /* transit time constant specd. */
144 
145  int SFFTnumSects; /* number of sections */
146  double SFFTic; /* critical current */
147  double SFFTicpos; /* pos critical current exp factor */
148  double SFFTicneg; /* neg critical current exp factor */
149  double SFFTisat; /* fluxon velocity saturation current */
150  double SFFTinsat; /* fluxon number saturation current */
151  double SFFTgain; /* gain parameter */
152  double SFFTr; /* resistance */
153  double SFFTl1; /* control line self inductance */
154  double SFFTl2; /* body inductance */
155  double SFFTfactor; /* coupling factor */
156  double SFFTc1; /* pos cont line to gate cap */
157  double SFFTc2; /* neg cont line to source cap */
158  double SFFTtc; /* transit time constant */
159 
160 } SFFTmodel;
161 
162 
163 /* device parameters */
164 #define SFFT_LEN 1
165 #define SFFT_WID 2
166 #define SFFT_ICV1 3
167 #define SFFT_ICV2 4
168 #define SFFT_ICI1 5
169 #define SFFT_ICI2 6
170 #define SFFT_OFF 7
171 
172 /* model parameters */
173 #define SFFT_MOD_NSEC 101
174 #define SFFT_MOD_IC 102
175 #define SFFT_MOD_ICPOS 103
176 #define SFFT_MOD_ICNEG 104
177 #define SFFT_MOD_ISAT 105
178 #define SFFT_MOD_INSAT 106
179 #define SFFT_MOD_GAIN 107
180 #define SFFT_MOD_R 108
181 #define SFFT_MOD_L1 109
182 #define SFFT_MOD_L2 110
183 #define SFFT_MOD_K 111
184 #define SFFT_MOD_C1 112
185 #define SFFT_MOD_C2 113
186 #define SFFT_MOD_TC 114
187 #define SFFT_MOD_SFFT 115
188 
189 /* device questions */
190 #define SFFT_QUEST_IC 201
191 #define SFFT_QUEST_ICPOS 202
192 #define SFFT_QUEST_ICNEG 203
193 #define SFFT_QUEST_ISAT 204
194 #define SFFT_QUEST_INSAT 205
195 #define SFFT_QUEST_R 206
196 #define SFFT_QUEST_L1 207
197 #define SFFT_QUEST_L2 208
198 #define SFFT_QUEST_MUT 209
199 #define SFFT_QUEST_C1 210
200 #define SFFT_QUEST_C2 211
201 #define SFFT_QUEST_TC 212
202 
203 
204 #ifdef __STDC__
205 
206 extern int SFFTacLoad(GENmodel*,CKTcircuit*);
207 extern int SFFTask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*);
208 extern int SFFTconvTest(GENmodel *,CKTcircuit*);
209 extern int SFFTdisto(int,GENmodel*,CKTcircuit*);
210 extern int SFFTgetic(GENmodel*,CKTcircuit*);
211 extern int SFFTload(GENmodel*,CKTcircuit*);
212 extern int SFFTmAsk(CKTcircuit*,GENmodel*,int,IFvalue*);
213 extern int SFFTmParam(int,IFvalue*,GENmodel*);
214 extern int SFFTnoise(int,int,GENmodel*,CKTcircuit*,GENERIC*,double*);
215 extern int SFFTparam(CKTcircuit*,int,IFvalue*,GENinstance*,IFvalue*);
216 extern void SFFTparse(int,GENERIC*,GENERIC*,GENERIC*);
217 extern int SFFTpzLoad(GENmodel*,CKTcircuit*,SPcomplex*);
218 extern int SFFTsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
219 extern int SFFTtemp(GENmodel*,CKTcircuit*);
220 extern int SFFTtrunc(GENmodel*,CKTcircuit*,double*);
221 
222 #else /* stdc */
223 
224 extern int SFFTacLoad();
225 extern int SFFTask();
226 extern int SFFTconvTest();
227 extern int SFFTdisto();
228 extern int SFFTgetic();
229 extern int SFFTload();
230 extern int SFFTmAsk();
231 extern int SFFTmParam();
232 extern int SFFTnoise();
233 extern int SFFTparam();
234 extern void SFFTparse();
235 extern int SFFTpzLoad();
236 extern int SFFTsetup();
237 extern int SFFTtemp();
238 extern int SFFTtrunc();
239 
240 #endif /* stdc */
241 
242 
243 #endif /*SFFT*/
244 
int SFFTgetic()
int SFFTtemp()
struct sSFFTmodel * SFFTmodPtr
Definition: sfftdefs.h:17
double SFFTl2
Definition: sfftdefs.h:154
int SFFTconvTest()
double * SFFTi1I1ptr
Definition: sfftdefs.h:43
double * SFFTposPosptr
Definition: sfftdefs.h:31
unsigned SFFTinitI1Given
Definition: sfftdefs.h:65
unsigned SFFTrGiven
Definition: sfftdefs.h:137
double SFFTicpos
Definition: sfftdefs.h:75
int SFFTmParam()
double SFFTl2
Definition: sfftdefs.h:81
double * SFFTi2Vprimeptr
Definition: sfftdefs.h:49
unsigned SFFTlenGiven
Definition: sfftdefs.h:61
double SFFTic
Definition: sfftdefs.h:146
double SFFTreq1
Definition: sfftdefs.h:92
int SFFTsetup()
double SFFTicneg
Definition: sfftdefs.h:76
double * SFFTi2Posptr
Definition: sfftdefs.h:46
double * SFFTcnegI1ptr
Definition: sfftdefs.h:41
double SFFTc1
Definition: sfftdefs.h:83
double SFFTgeq2
Definition: sfftdefs.h:87
double SFFTisat
Definition: sfftdefs.h:149
int SFFTdisto()
unsigned SFFTinitV1Given
Definition: sfftdefs.h:63
double * SFFTvprimeVprimeptr
Definition: sfftdefs.h:54
double SFFTr
Definition: sfftdefs.h:79
unsigned SFFTl1Given
Definition: sfftdefs.h:138
double SFFTic
Definition: sfftdefs.h:74
double * SFFTnegI2ptr
Definition: sfftdefs.h:47
double SFFTceq3
Definition: sfftdefs.h:91
double SFFTm12
Definition: sfftdefs.h:82
double * SFFTi1Cnegptr
Definition: sfftdefs.h:42
double * SFFTi1Cposptr
Definition: sfftdefs.h:40
double SFFTinsat
Definition: sfftdefs.h:78
double * SFFTnegNegptr
Definition: sfftdefs.h:32
double SFFTtc
Definition: sfftdefs.h:158
double * SFFTi1I2ptr
Definition: sfftdefs.h:51
double SFFTr
Definition: sfftdefs.h:152
double * SFFTposCposptr
Definition: sfftdefs.h:35
int SFFTmAsk()
int SFFTi1Eq
Definition: sfftdefs.h:25
int SFFTvprime
Definition: sfftdefs.h:27
int SFFTnumSects
Definition: sfftdefs.h:145
int SFFTstate
Definition: sfftdefs.h:20
struct sSFFTinstance SFFTinstance
int SFFTcnegNode
Definition: sfftdefs.h:24
IFuid SFFTmodName
Definition: sfftdefs.h:127
struct sSFFTmodel SFFTmodel
double * SFFTi2Negptr
Definition: sfftdefs.h:48
double SFFTd1
Definition: sfftdefs.h:98
int SFFTask()
double SFFTd2
Definition: sfftdefs.h:99
unsigned SFFTnumSectsGiven
Definition: sfftdefs.h:130
unsigned SFFTisatGiven
Definition: sfftdefs.h:134
double SFFTgeq3
Definition: sfftdefs.h:88
unsigned SFFTinsatGiven
Definition: sfftdefs.h:135
unsigned SFFTinitI2Given
Definition: sfftdefs.h:66
double SFFTicneg
Definition: sfftdefs.h:148
int SFFTload()
GENERIC * IFuid
Definition: ifsim.h:72
unsigned SFFTwidGiven
Definition: sfftdefs.h:62
double SFFTc1
Definition: sfftdefs.h:156
int SFFTparam()
unsigned SFFTicposGiven
Definition: sfftdefs.h:132
double SFFTl1
Definition: sfftdefs.h:153
double * SFFTi2I2ptr
Definition: sfftdefs.h:50
unsigned SFFTgainGiven
Definition: sfftdefs.h:136
double * SFFTnegCnegptr
Definition: sfftdefs.h:37
double SFFTisat
Definition: sfftdefs.h:77
double SFFTicpos
Definition: sfftdefs.h:147
double SFFTinitI1
Definition: sfftdefs.h:72
int SFFTtrunc()
double * SFFTcnegNegptr
Definition: sfftdefs.h:36
int SFFTnoise()
unsigned SFFTl2Given
Definition: sfftdefs.h:139
double SFFTinitV1
Definition: sfftdefs.h:70
unsigned SFFTtcGiven
Definition: sfftdefs.h:143
double SFFTfactor
Definition: sfftdefs.h:155
double * SFFTcposPosptr
Definition: sfftdefs.h:34
double * SFFTvprimeI2ptr
Definition: sfftdefs.h:56
double SFFTwidth
Definition: sfftdefs.h:69
double SFFTl1
Definition: sfftdefs.h:80
double SFFTceq1
Definition: sfftdefs.h:89
double SFFTveq2
Definition: sfftdefs.h:95
double SFFTinitI2
Definition: sfftdefs.h:73
double * SFFTcposCposptr
Definition: sfftdefs.h:29
struct sSFFTmodel * SFFTnextModel
Definition: sfftdefs.h:123
int SFFTacLoad()
double SFFTveq1
Definition: sfftdefs.h:94
double * SFFTi2I1ptr
Definition: sfftdefs.h:52
unsigned SFFTicGiven
Definition: sfftdefs.h:131
int SFFTcposNode
Definition: sfftdefs.h:23
unsigned SFFToff
Definition: sfftdefs.h:60
void SFFTparse()
double SFFTinitV2
Definition: sfftdefs.h:71
unsigned SFFTc1Given
Definition: sfftdefs.h:141
int SFFTi2Eq
Definition: sfftdefs.h:26
double SFFTtc
Definition: sfftdefs.h:85
double SFFTlength
Definition: sfftdefs.h:68
struct sSFFTinstance * SFFTnextInstance
Definition: sfftdefs.h:18
unsigned SFFTc2Given
Definition: sfftdefs.h:142
double SFFTreq2
Definition: sfftdefs.h:93
int SFFTpzLoad()
double * SFFTcposI1ptr
Definition: sfftdefs.h:39
IFuid SFFTname
Definition: sfftdefs.h:19
int SFFTnegNode
Definition: sfftdefs.h:22
int SFFTposNode
Definition: sfftdefs.h:21
unsigned SFFTinitV2Given
Definition: sfftdefs.h:64
double SFFTc2
Definition: sfftdefs.h:84
#define SMPmatrix
Definition: smpdefs.h:11
double * SFFTvprimeI1ptr
Definition: sfftdefs.h:55
double * SFFTposI2ptr
Definition: sfftdefs.h:45
unsigned SFFTicnegGiven
Definition: sfftdefs.h:133
double SFFTc2
Definition: sfftdefs.h:157
SFFTinstance * SFFTinstances
Definition: sfftdefs.h:125
double * SFFTcnegCnegptr
Definition: sfftdefs.h:30
double SFFTgain
Definition: sfftdefs.h:151
double SFFTceq2
Definition: sfftdefs.h:90
unsigned SFFTfactorGiven
Definition: sfftdefs.h:140
double SFFTgeq1
Definition: sfftdefs.h:86
double SFFTv
Definition: sfftdefs.h:97
int SFFTmodType
Definition: sfftdefs.h:122
char GENERIC
Definition: ifsim.h:27
double SFFTinsat
Definition: sfftdefs.h:150