Qucs-GUI  0.0.18
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
hic2_full.cpp
Go to the documentation of this file.
1 /*
2  * hic2_full.cpp - device implementations for hic2_full module
3  *
4  * This is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2, or (at your option)
7  * any later version.
8  *
9  */
10 
11 #include "hic2_full.h"
12 
14 {
15  Description = QObject::tr ("HICUM Level 2 v2.22 verilog device");
16 
17  Props.append (new Property ("c10", "2.0E-30", false,
18  QObject::tr ("GICCR constant")
19  +" ("+QObject::tr ("A^2s")+")"));
20  Props.append (new Property ("qp0", "2.0E-14", false,
21  QObject::tr ("Zero-bias hole charge")
22  +" ("+QObject::tr ("Coul")+")"));
23  Props.append (new Property ("ich", "0.0", false,
24  QObject::tr ("High-current correction for 2D and 3D effects")
25  +" ("+QObject::tr ("A")+")"));
26  Props.append (new Property ("hfe", "1.0", false,
27  QObject::tr ("Emitter minority charge weighting factor in HBTs")));
28  Props.append (new Property ("hfc", "1.0", false,
29  QObject::tr ("Collector minority charge weighting factor in HBTs")));
30  Props.append (new Property ("hjei", "1.0", false,
31  QObject::tr ("B-E depletion charge weighting factor in HBTs")));
32  Props.append (new Property ("hjci", "1.0", false,
33  QObject::tr ("B-C depletion charge weighting factor in HBTs")));
34  Props.append (new Property ("ibeis", "1.0E-18", false,
35  QObject::tr ("Internal B-E saturation current")
36  +" ("+QObject::tr ("A")+")"));
37  Props.append (new Property ("mbei", "1.0", false,
38  QObject::tr ("Internal B-E current ideality factor")));
39  Props.append (new Property ("ireis", "0.0", false,
40  QObject::tr ("Internal B-E recombination saturation current")
41  +" ("+QObject::tr ("A")+")"));
42  Props.append (new Property ("mrei", "2.0", false,
43  QObject::tr ("Internal B-E recombination current ideality factor")));
44  Props.append (new Property ("ibeps", "0.0", false,
45  QObject::tr ("Peripheral B-E saturation current")
46  +" ("+QObject::tr ("A")+")"));
47  Props.append (new Property ("mbep", "1.0", false,
48  QObject::tr ("Peripheral B-E current ideality factor")));
49  Props.append (new Property ("ireps", "0.0", false,
50  QObject::tr ("Peripheral B-E recombination saturation current")
51  +" ("+QObject::tr ("A")+")"));
52  Props.append (new Property ("mrep", "2.0", false,
53  QObject::tr ("Peripheral B-E recombination current ideality factor")));
54  Props.append (new Property ("mcf", "1.0", false,
55  QObject::tr ("Non-ideality factor for III-V HBTs")));
56  Props.append (new Property ("tbhrec", "0.0", false,
57  QObject::tr ("Base current recombination time constant at B-C barrier for high forward injection")
58  +" ("+QObject::tr ("s")+")"));
59  Props.append (new Property ("ibcis", "1.0E-16", false,
60  QObject::tr ("Internal B-C saturation current")
61  +" ("+QObject::tr ("A")+")"));
62  Props.append (new Property ("mbci", "1.0", false,
63  QObject::tr ("Internal B-C current ideality factor")));
64  Props.append (new Property ("ibcxs", "0.0", false,
65  QObject::tr ("External B-C saturation current")
66  +" ("+QObject::tr ("A")+")"));
67  Props.append (new Property ("mbcx", "1.0", false,
68  QObject::tr ("External B-C current ideality factor")));
69  Props.append (new Property ("ibets", "0.0", false,
70  QObject::tr ("B-E tunneling saturation current")
71  +" ("+QObject::tr ("A")+")"));
72  Props.append (new Property ("abet", "40", false,
73  QObject::tr ("Exponent factor for tunneling current")));
74  Props.append (new Property ("tunode", "1", false,
75  QObject::tr ("Specifies the base node connection for the tunneling current")));
76  Props.append (new Property ("favl", "0.0", false,
77  QObject::tr ("Avalanche current factor")
78  +" ("+QObject::tr ("1/V")+")"));
79  Props.append (new Property ("qavl", "0.0", false,
80  QObject::tr ("Exponent factor for avalanche current")
81  +" ("+QObject::tr ("Coul")+")"));
82  Props.append (new Property ("alfav", "0.0", false,
83  QObject::tr ("Relative TC for FAVL")
84  +" ("+QObject::tr ("1/K")+")"));
85  Props.append (new Property ("alqav", "0.0", false,
86  QObject::tr ("Relative TC for QAVL")
87  +" ("+QObject::tr ("1/K")+")"));
88  Props.append (new Property ("rbi0", "0.0", false,
89  QObject::tr ("Zero bias internal base resistance")
90  +" ("+QObject::tr ("Ohm")+")"));
91  Props.append (new Property ("rbx", "0.0", false,
92  QObject::tr ("External base series resistance")
93  +" ("+QObject::tr ("Ohm")+")"));
94  Props.append (new Property ("fgeo", "0.6557", false,
95  QObject::tr ("Factor for geometry dependence of emitter current crowding")));
96  Props.append (new Property ("fdqr0", "0.0", false,
97  QObject::tr ("Correction factor for modulation by B-E and B-C space charge layer")));
98  Props.append (new Property ("fcrbi", "0.0", false,
99  QObject::tr ("Ratio of HF shunt to total internal capacitance (lateral NQS effect)")));
100  Props.append (new Property ("fqi", "1.0", false,
101  QObject::tr ("Ration of internal to total minority charge")));
102  Props.append (new Property ("re", "0.0", false,
103  QObject::tr ("Emitter series resistance")
104  +" ("+QObject::tr ("Ohm")+")"));
105  Props.append (new Property ("rcx", "0.0", false,
106  QObject::tr ("External collector series resistance")
107  +" ("+QObject::tr ("Ohm")+")"));
108  Props.append (new Property ("itss", "0.0", false,
109  QObject::tr ("Substrate transistor transfer saturation current")
110  +" ("+QObject::tr ("A")+")"));
111  Props.append (new Property ("msf", "1.0", false,
112  QObject::tr ("Forward ideality factor of substrate transfer current")));
113  Props.append (new Property ("iscs", "0.0", false,
114  QObject::tr ("C-S diode saturation current")
115  +" ("+QObject::tr ("A")+")"));
116  Props.append (new Property ("msc", "1.0", false,
117  QObject::tr ("Ideality factor of C-S diode current")));
118  Props.append (new Property ("tsf", "0.0", false,
119  QObject::tr ("Transit time for forward operation of substrate transistor")
120  +" ("+QObject::tr ("s")+")"));
121  Props.append (new Property ("rsu", "0.0", false,
122  QObject::tr ("Substrate series resistance")
123  +" ("+QObject::tr ("Ohm")+")"));
124  Props.append (new Property ("csu", "0.0", false,
125  QObject::tr ("Substrate shunt capacitance")
126  +" ("+QObject::tr ("F")+")"));
127  Props.append (new Property ("cjei0", "1.0E-20", false,
128  QObject::tr ("Internal B-E zero-bias depletion capacitance")
129  +" ("+QObject::tr ("F")+")"));
130  Props.append (new Property ("vdei", "0.9", false,
131  QObject::tr ("Internal B-E built-in potential")
132  +" ("+QObject::tr ("V")+")"));
133  Props.append (new Property ("zei", "0.5", false,
134  QObject::tr ("Internal B-E grading coefficient")));
135  Props.append (new Property ("ajei", "2.5", false,
136  QObject::tr ("Ratio of maximum to zero-bias value of internal B-E capacitance")));
137  Props.append (new Property ("cjep0", "1.0E-20", false,
138  QObject::tr ("Peripheral B-E zero-bias depletion capacitance")
139  +" ("+QObject::tr ("F")+")"));
140  Props.append (new Property ("vdep", "0.9", false,
141  QObject::tr ("Peripheral B-E built-in potential")
142  +" ("+QObject::tr ("V")+")"));
143  Props.append (new Property ("zep", "0.5", false,
144  QObject::tr ("Peripheral B-E grading coefficient")));
145  Props.append (new Property ("ajep", "2.5", false,
146  QObject::tr ("Ratio of maximum to zero-bias value of peripheral B-E capacitance")));
147  Props.append (new Property ("cjci0", "1.0E-20", false,
148  QObject::tr ("Internal B-C zero-bias depletion capacitance")
149  +" ("+QObject::tr ("F")+")"));
150  Props.append (new Property ("vdci", "0.7", false,
151  QObject::tr ("Internal B-C built-in potential")
152  +" ("+QObject::tr ("V")+")"));
153  Props.append (new Property ("zci", "0.4", false,
154  QObject::tr ("Internal B-C grading coefficient")));
155  Props.append (new Property ("vptci", "100", false,
156  QObject::tr ("Internal B-C punch-through voltage")
157  +" ("+QObject::tr ("V")+")"));
158  Props.append (new Property ("cjcx0", "1.0E-20", false,
159  QObject::tr ("External B-C zero-bias depletion capacitance")
160  +" ("+QObject::tr ("F")+")"));
161  Props.append (new Property ("vdcx", "0.7", false,
162  QObject::tr ("External B-C built-in potential")
163  +" ("+QObject::tr ("V")+")"));
164  Props.append (new Property ("zcx", "0.4", false,
165  QObject::tr ("External B-C grading coefficient")));
166  Props.append (new Property ("vptcx", "100", false,
167  QObject::tr ("External B-C punch-through voltage")
168  +" ("+QObject::tr ("V")+")"));
169  Props.append (new Property ("fbcpar", "0.0", false,
170  QObject::tr ("Partitioning factor of parasitic B-C cap")));
171  Props.append (new Property ("fbepar", "1.0", false,
172  QObject::tr ("Partitioning factor of parasitic B-E cap")));
173  Props.append (new Property ("cjs0", "0.0", false,
174  QObject::tr ("C-S zero-bias depletion capacitance")
175  +" ("+QObject::tr ("F")+")"));
176  Props.append (new Property ("vds", "0.6", false,
177  QObject::tr ("C-S built-in potential")
178  +" ("+QObject::tr ("V")+")"));
179  Props.append (new Property ("zs", "0.5", false,
180  QObject::tr ("C-S grading coefficient")));
181  Props.append (new Property ("vpts", "100", false,
182  QObject::tr ("C-S punch-through voltage")
183  +" ("+QObject::tr ("V")+")"));
184  Props.append (new Property ("t0", "0.0", false,
185  QObject::tr ("Low current forward transit time at VBC=0V")
186  +" ("+QObject::tr ("s")+")"));
187  Props.append (new Property ("dt0h", "0.0", false,
188  QObject::tr ("Time constant for base and B-C space charge layer width modulation")
189  +" ("+QObject::tr ("s")+")"));
190  Props.append (new Property ("tbvl", "0.0", false,
191  QObject::tr ("Time constant for modelling carrier jam at low VCE")
192  +" ("+QObject::tr ("s")+")"));
193  Props.append (new Property ("tef0", "0.0", false,
194  QObject::tr ("Neutral emitter storage time")
195  +" ("+QObject::tr ("s")+")"));
196  Props.append (new Property ("gtfe", "1.0", false,
197  QObject::tr ("Exponent factor for current dependence of neutral emitter storage time")));
198  Props.append (new Property ("thcs", "0.0", false,
199  QObject::tr ("Saturation time constant at high current densities")
200  +" ("+QObject::tr ("s")+")"));
201  Props.append (new Property ("ahc", "0.1", false,
202  QObject::tr ("Smoothing factor for current dependence of base and collector transit time")));
203  Props.append (new Property ("fthc", "0.0", false,
204  QObject::tr ("Partitioning factor for base and collector portion")));
205  Props.append (new Property ("rci0", "150", false,
206  QObject::tr ("Internal collector resistance at low electric field")
207  +" ("+QObject::tr ("Ohm")+")"));
208  Props.append (new Property ("vlim", "0.5", false,
209  QObject::tr ("Voltage separating ohmic and saturation velocity regime")
210  +" ("+QObject::tr ("V")+")"));
211  Props.append (new Property ("vces", "0.1", false,
212  QObject::tr ("Internal C-E saturation voltage")
213  +" ("+QObject::tr ("V")+")"));
214  Props.append (new Property ("vpt", "0.0", false,
215  QObject::tr ("Collector punch-through voltage")
216  +" ("+QObject::tr ("V")+")"));
217  Props.append (new Property ("tr", "0.0", false,
218  QObject::tr ("Storage time for inverse operation")
219  +" ("+QObject::tr ("s")+")"));
220  Props.append (new Property ("cbepar", "0.0", false,
221  QObject::tr ("Total parasitic B-E capacitance")
222  +" ("+QObject::tr ("F")+")"));
223  Props.append (new Property ("cbcpar", "0.0", false,
224  QObject::tr ("Total parasitic B-C capacitance")
225  +" ("+QObject::tr ("F")+")"));
226  Props.append (new Property ("alqf", "0.0", false,
227  QObject::tr ("Factor for additional delay time of minority charge")));
228  Props.append (new Property ("alit", "0.0", false,
229  QObject::tr ("Factor for additional delay time of transfer current")));
230  Props.append (new Property ("flnqs", "0", false,
231  QObject::tr ("Flag for turning on and off of vertical NQS effect")));
232  Props.append (new Property ("kf", "0.0", false,
233  QObject::tr ("Flicker noise coefficient")));
234  Props.append (new Property ("af", "2.0", false,
235  QObject::tr ("Flicker noise exponent factor")));
236  Props.append (new Property ("cfbe", "-1", false,
237  QObject::tr ("Flag for determining where to tag the flicker noise source")));
238  Props.append (new Property ("latb", "0.0", false,
239  QObject::tr ("Scaling factor for collector minority charge in direction of emitter width")));
240  Props.append (new Property ("latl", "0.0", false,
241  QObject::tr ("Scaling factor for collector minority charge in direction of emitter length")));
242  Props.append (new Property ("vgb", "1.17", false,
243  QObject::tr ("Bandgap voltage extrapolated to 0 K")
244  +" ("+QObject::tr ("V")+")"));
245  Props.append (new Property ("alt0", "0.0", false,
246  QObject::tr ("First order relative TC of parameter T0")
247  +" ("+QObject::tr ("1/K")+")"));
248  Props.append (new Property ("kt0", "0.0", false,
249  QObject::tr ("Second order relative TC of parameter T0")));
250  Props.append (new Property ("zetaci", "0.0", false,
251  QObject::tr ("Temperature exponent for RCI0")));
252  Props.append (new Property ("alvs", "0.0", false,
253  QObject::tr ("Relative TC of saturation drift velocity")
254  +" ("+QObject::tr ("1/K")+")"));
255  Props.append (new Property ("alces", "0.0", false,
256  QObject::tr ("Relative TC of VCES")
257  +" ("+QObject::tr ("1/K")+")"));
258  Props.append (new Property ("zetarbi", "0.0", false,
259  QObject::tr ("Temperature exponent of internal base resistance")));
260  Props.append (new Property ("zetarbx", "0.0", false,
261  QObject::tr ("Temperature exponent of external base resistance")));
262  Props.append (new Property ("zetarcx", "0.0", false,
263  QObject::tr ("Temperature exponent of external collector resistance")));
264  Props.append (new Property ("zetare", "0.0", false,
265  QObject::tr ("Temperature exponent of emitter resistance")));
266  Props.append (new Property ("zetacx", "1.0", false,
267  QObject::tr ("Temperature exponent of mobility in substrate transistor transit time")));
268  Props.append (new Property ("vge", "1.17", false,
269  QObject::tr ("Effective emitter bandgap voltage")
270  +" ("+QObject::tr ("V")+")"));
271  Props.append (new Property ("vgc", "1.17", false,
272  QObject::tr ("Effective collector bandgap voltage")
273  +" ("+QObject::tr ("V")+")"));
274  Props.append (new Property ("vgs", "1.17", false,
275  QObject::tr ("Effective substrate bandgap voltage")
276  +" ("+QObject::tr ("V")+")"));
277  Props.append (new Property ("f1vg", "-1.02377e-4", false,
278  QObject::tr ("Coefficient K1 in T-dependent band-gap equation")));
279  Props.append (new Property ("f2vg", "4.3215e-4", false,
280  QObject::tr ("Coefficient K2 in T-dependent band-gap equation")));
281  Props.append (new Property ("zetact", "3.0", false,
282  QObject::tr ("Exponent coefficient in transfer current temperature dependence")));
283  Props.append (new Property ("zetabet", "3.5", false,
284  QObject::tr ("Exponent coefficient in B-E junction current temperature dependence")));
285  Props.append (new Property ("alb", "0.0", false,
286  QObject::tr ("Relative TC of forward current gain for V2.1 model")
287  +" ("+QObject::tr ("1/K")+")"));
288  Props.append (new Property ("flsh", "0", false,
289  QObject::tr ("Flag for turning on and off self-heating effect")));
290  Props.append (new Property ("rth", "0.0", false,
291  QObject::tr ("Thermal resistance")
292  +" ("+QObject::tr ("K/W")+")"));
293  Props.append (new Property ("cth", "0.0", false,
294  QObject::tr ("Thermal capacitance")
295  +" ("+QObject::tr ("J/W")+")"));
296  Props.append (new Property ("flcomp", "0.0", false,
297  QObject::tr ("Flag for compatibility with v2.1 model (0=v2.1)")));
298  Props.append (new Property ("tnom", "27.0", false,
299  QObject::tr ("Temperature at which parameters are specified")
300  +" ("+QObject::tr ("C")+")"));
301  Props.append (new Property ("dt", "0.0", false,
302  QObject::tr ("Temperature change w.r.t. chip temperature for particular transistor")
303  +" ("+QObject::tr ("K")+")"));
304  Props.append (new Property ("Temp", "27", false,
305  QObject::tr ("simulation temperature")));
306 
307  createSymbol ();
308  tx = x2 + 4;
309  ty = y1 + 4;
310  Model = "hic2_full";
311  Name = "T";
312 }
313 
315 {
316  hic2_full * p = new hic2_full();
317  p->Props.getFirst()->Value = Props.getFirst()->Value;
318  p->recreate(0);
319  return p;
320 }
321 
322 Element * hic2_full::info(QString& Name, char * &BitmapFile, bool getNewOne)
323 {
324  Name = QObject::tr("HICUM L2 v2.22");
325  BitmapFile = (char *) "npnsub_therm";
326 
327  if(getNewOne) return new hic2_full();
328  return 0;
329 }
330 
332 {
333  // normal bipolar
334  Lines.append(new Line(-10,-15,-10, 15,QPen(Qt::darkBlue,3)));
335  Lines.append(new Line(-30, 0,-10, 0,QPen(Qt::darkBlue,2)));
336  Lines.append(new Line(-10, -5, 0,-15,QPen(Qt::darkBlue,2)));
337  Lines.append(new Line( 0,-15, 0,-30,QPen(Qt::darkBlue,2)));
338  Lines.append(new Line(-10, 5, 0, 15,QPen(Qt::darkBlue,2)));
339  Lines.append(new Line( 0, 15, 0, 30,QPen(Qt::darkBlue,2)));
340 
341  // substrate node
342  Lines.append(new Line( 9, 0, 30, 0,QPen(Qt::darkBlue,2)));
343  Lines.append(new Line( 9, -7, 9, 7,QPen(Qt::darkBlue,3)));
344 
345  // thermal node
346  Lines.append(new Line(-30, 20,-20, 20,QPen(Qt::darkBlue,2)));
347  Lines.append(new Line(-20, 17,-20, 23,QPen(Qt::darkBlue,2)));
348 
349  // arrow
350  Lines.append(new Line( -6, 15, 0, 15,QPen(Qt::darkBlue,2)));
351  Lines.append(new Line( 0, 9, 0, 15,QPen(Qt::darkBlue,2)));
352 
353  // H
354  Lines.append(new Line(-30,-30,-30,-24,QPen(Qt::darkBlue,1)));
355  Lines.append(new Line(-30,-27,-26,-27,QPen(Qt::darkBlue,1)));
356  Lines.append(new Line(-26,-30,-26,-24,QPen(Qt::darkBlue,1)));
357  // I
358  Lines.append(new Line(-24,-30,-24,-24,QPen(Qt::darkBlue,1)));
359  // C
360  Lines.append(new Line(-22,-30,-22,-24,QPen(Qt::darkBlue,1)));
361  Lines.append(new Line(-22,-30,-19,-30,QPen(Qt::darkBlue,1)));
362  Lines.append(new Line(-22,-24,-19,-24,QPen(Qt::darkBlue,1)));
363  // U
364  Lines.append(new Line(-17,-30,-17,-24,QPen(Qt::darkBlue,1)));
365  Lines.append(new Line(-14,-30,-14,-24,QPen(Qt::darkBlue,1)));
366  Lines.append(new Line(-17,-24,-14,-24,QPen(Qt::darkBlue,1)));
367  // M
368  Lines.append(new Line(-12,-30,-12,-24,QPen(Qt::darkBlue,1)));
369  Lines.append(new Line( -8,-30, -8,-24,QPen(Qt::darkBlue,1)));
370  Lines.append(new Line(-12,-30,-10,-28,QPen(Qt::darkBlue,1)));
371  Lines.append(new Line( -8,-30,-10,-28,QPen(Qt::darkBlue,1)));
372 
373  // terminal definitions
374  Ports.append(new Port( 0,-30)); // collector
375  Ports.append(new Port(-30, 0)); // base
376  Ports.append(new Port( 0, 30)); // emitter
377  Ports.append(new Port( 30, 0)); // substrate
378  Ports.append(new Port(-30, 20)); // thermal node
379 
380  // relative boundings
381  x1 = -30; y1 = -30;
382  x2 = 30; y2 = 30;
383 }
Q3PtrList< Line > Lines
Definition: component.h:67
int y1
Definition: element.h:153
Component * newOne()
Definition: hic2_full.cpp:314
int tx
Definition: component.h:78
int y2
Definition: element.h:153
Definition: element.h:72
int x1
Definition: element.h:153
void createSymbol()
Definition: hic2_full.cpp:331
int ty
Definition: component.h:78
Q3PtrList< Property > Props
Definition: component.h:72
Definition: element.h:48
Superclass of all schematic drawing elements.
Definition: element.h:142
Q3PtrList< Port > Ports
Definition: component.h:70
QString Name
Definition: component.h:80
QString Model
Definition: component.h:80
QString Description
Definition: component.h:81
int x2
Definition: element.h:153
virtual void recreate(Schematic *)
Definition: component.h:39
static Element * info(QString &, char *&, bool getNewOne=false)
Definition: hic2_full.cpp:322