Qucs-GUI
0.0.19
|
00001 /* 00002 * hicumL2V2p1.cpp - device implementations for hicumL2V2p1 module 00003 * 00004 * This is free software; you can redistribute it and/or modify 00005 * it under the terms of the GNU General Public License as published by 00006 * the Free Software Foundation; either version 2, or (at your option) 00007 * any later version. 00008 * 00009 */ 00010 00011 #include "hicumL2V2p1.h" 00012 00013 hicumL2V2p1::hicumL2V2p1() 00014 { 00015 Description = QObject::tr ("HICUM Level 2 v2.1 verilog device"); 00016 00017 Props.append (new Property ("c10", "1.516E-31", false, 00018 QObject::tr ("GICCR constant"))); 00019 Props.append (new Property ("qp0", "5.939E-15", false, 00020 QObject::tr ("Zero-bias hole charge"))); 00021 Props.append (new Property ("ich", "1.0E11", false, 00022 QObject::tr ("High-current correction for 2D and 3D effects"))); 00023 Props.append (new Property ("hfe", "1.0", false, 00024 QObject::tr ("Emitter minority charge weighting factor in HBTs"))); 00025 Props.append (new Property ("hfc", "0.03999", false, 00026 QObject::tr ("Collector minority charge weighting factor in HBTs"))); 00027 Props.append (new Property ("hjei", "0.435", false, 00028 QObject::tr ("B-E depletion charge weighting factor in HBTs"))); 00029 Props.append (new Property ("hjci", "0.09477", false, 00030 QObject::tr ("B-C depletion charge weighting factor in HBTs"))); 00031 Props.append (new Property ("ibeis", "3.47E-20", false, 00032 QObject::tr ("Internal B-E saturation current"))); 00033 Props.append (new Property ("mbei", "1.025", false, 00034 QObject::tr ("Internal B-E current ideality factor"))); 00035 Props.append (new Property ("ireis", "390E-12", false, 00036 QObject::tr ("Internal B-E recombination saturation current"))); 00037 Props.append (new Property ("mrei", "3", false, 00038 QObject::tr ("Internal B-E recombination current ideality factor"))); 00039 Props.append (new Property ("ibeps", "4.18321E-21", false, 00040 QObject::tr ("Peripheral B-E saturation current"))); 00041 Props.append (new Property ("mbep", "1.045", false, 00042 QObject::tr ("Peripheral B-E current ideality factor"))); 00043 Props.append (new Property ("ireps", "1.02846E-14", false, 00044 QObject::tr ("Peripheral B-E recombination saturation current"))); 00045 Props.append (new Property ("mrep", "3", false, 00046 QObject::tr ("Peripheral B-E recombination current ideality factor"))); 00047 Props.append (new Property ("mcf", "1.0", false, 00048 QObject::tr ("Non-ideality factor for III-V HBTs"))); 00049 Props.append (new Property ("ibcis", "3.02613E-18", false, 00050 QObject::tr ("Internal B-C saturation current"))); 00051 Props.append (new Property ("mbci", "1.0", false, 00052 QObject::tr ("Internal B-C current ideality factor"))); 00053 Props.append (new Property ("ibcxs", "4.576E-29", false, 00054 QObject::tr ("External B-C saturation current"))); 00055 Props.append (new Property ("mbcx", "1.0", false, 00056 QObject::tr ("External B-C current ideality factor"))); 00057 Props.append (new Property ("ibets", "0.0", false, 00058 QObject::tr ("B-E tunneling saturation current"))); 00059 Props.append (new Property ("abet", "36.74", false, 00060 QObject::tr ("Exponent factor for tunneling current"))); 00061 Props.append (new Property ("favl", "14.97", false, 00062 QObject::tr ("Avalanche current factor"))); 00063 Props.append (new Property ("qavl", "7.2407E-14", false, 00064 QObject::tr ("Exponent factor for avalanche current"))); 00065 Props.append (new Property ("alfav", "0.0", false, 00066 QObject::tr ("Relative TC for FAVL"))); 00067 Props.append (new Property ("alqav", "0.0", false, 00068 QObject::tr ("Relative TC for QAVL"))); 00069 Props.append (new Property ("rbi0", "7.9", false, 00070 QObject::tr ("Zero bias internal base resistance"))); 00071 Props.append (new Property ("rbx", "13.15", false, 00072 QObject::tr ("External base series resistance"))); 00073 Props.append (new Property ("fgeo", "0.724", false, 00074 QObject::tr ("Factor for geometry dependence of emitter current crowding"))); 00075 Props.append (new Property ("fdqr0", "0", false, 00076 QObject::tr ("Correction factor for modulation by B-E and B-C space charge layer"))); 00077 Props.append (new Property ("fcrbi", "0.0", false, 00078 QObject::tr ("Ratio of HF shunt to total internal capacitance (lateral NQS effect)"))); 00079 Props.append (new Property ("fqi", "1.0", false, 00080 QObject::tr ("Ration of internal to total minority charge"))); 00081 Props.append (new Property ("re", "9.77", false, 00082 QObject::tr ("Emitter series resistance"))); 00083 Props.append (new Property ("rcx", "10", false, 00084 QObject::tr ("External collector series resistance"))); 00085 Props.append (new Property ("itss", "2.81242E-19", false, 00086 QObject::tr ("Substrate transistor transfer saturation current"))); 00087 Props.append (new Property ("msf", "1.0", false, 00088 QObject::tr ("Forward ideality factor of substrate transfer current"))); 00089 Props.append (new Property ("iscs", "7.6376E-17", false, 00090 QObject::tr ("C-S diode saturation current"))); 00091 Props.append (new Property ("msc", "1.0", false, 00092 QObject::tr ("Ideality factor of C-S diode current"))); 00093 Props.append (new Property ("tsf", "1.733E-8", false, 00094 QObject::tr ("Transit time for forward operation of substrate transistor"))); 00095 Props.append (new Property ("rsu", "800", false, 00096 QObject::tr ("Substrate series resistance"))); 00097 Props.append (new Property ("csu", "1.778E-14", false, 00098 QObject::tr ("Substrate shunt capacitance"))); 00099 Props.append (new Property ("cjei0", "5.24382E-14", false, 00100 QObject::tr ("Internal B-E zero-bias depletion capacitance"))); 00101 Props.append (new Property ("vdei", "0.9956", false, 00102 QObject::tr ("Internal B-E built-in potential"))); 00103 Props.append (new Property ("zei", "0.4", false, 00104 QObject::tr ("Internal B-E grading coefficient"))); 00105 Props.append (new Property ("aljei", "2.5", false, 00106 QObject::tr ("Ratio of maximum to zero-bias value of internal B-E capacitance"))); 00107 Props.append (new Property ("cjep0", "0", false, 00108 QObject::tr ("Peripheral B-E zero-bias depletion capacitance"))); 00109 Props.append (new Property ("vdep", "1", false, 00110 QObject::tr ("Peripheral B-E built-in potential"))); 00111 Props.append (new Property ("zep", "0.01", false, 00112 QObject::tr ("Peripheral B-E grading coefficient"))); 00113 Props.append (new Property ("aljep", "2.5", false, 00114 QObject::tr ("Ratio of maximum to zero-bias value of peripheral B-E capacitance"))); 00115 Props.append (new Property ("cjci0", "4.46887E-15", false, 00116 QObject::tr ("Internal B-C zero-bias depletion capacitance"))); 00117 Props.append (new Property ("vdci", "0.7", false, 00118 QObject::tr ("Internal B-C built-in potential"))); 00119 Props.append (new Property ("zci", "0.38", false, 00120 QObject::tr ("Internal B-C grading coefficient"))); 00121 Props.append (new Property ("vptci", "100", false, 00122 QObject::tr ("Internal B-C punch-through voltage"))); 00123 Props.append (new Property ("cjcx0", "1.55709E-14", false, 00124 QObject::tr ("External B-C zero-bias depletion capacitance"))); 00125 Props.append (new Property ("vdcx", "0.733", false, 00126 QObject::tr ("External B-C built-in potential"))); 00127 Props.append (new Property ("zcx", "0.34", false, 00128 QObject::tr ("External B-C grading coefficient"))); 00129 Props.append (new Property ("vptcx", "100", false, 00130 QObject::tr ("External B-C punch-through voltage"))); 00131 Props.append (new Property ("fbc", "0.3487", false, 00132 QObject::tr ("Partitioning factor of parasitic B-C capacitance"))); 00133 Props.append (new Property ("cjs0", "17.68E-15", false, 00134 QObject::tr ("C-S zero-bias depletion capacitance"))); 00135 Props.append (new Property ("vds", "0.621625", false, 00136 QObject::tr ("C-S built-in potential"))); 00137 Props.append (new Property ("zs", "0.122136", false, 00138 QObject::tr ("C-S grading coefficient"))); 00139 Props.append (new Property ("vpts", "1000", false, 00140 QObject::tr ("C-S punch-through voltage"))); 00141 Props.append (new Property ("t0", "1.28E-12", false, 00142 QObject::tr ("Low current forward transit time at VBC=0V"))); 00143 Props.append (new Property ("dt0h", "260E-15", false, 00144 QObject::tr ("Time constant for base and B-C space charge layer width modulation"))); 00145 Props.append (new Property ("tbvl", "2.0E-13", false, 00146 QObject::tr ("Time constant for modelling carrier jam at low VCE"))); 00147 Props.append (new Property ("tef0", "0.0", false, 00148 QObject::tr ("Neutral emitter storage time"))); 00149 Props.append (new Property ("gtfe", "1.0", false, 00150 QObject::tr ("Exponent factor for current dependence of neutral emitter storage time"))); 00151 Props.append (new Property ("thcs", "46E-15", false, 00152 QObject::tr ("Saturation time constant at high current densities"))); 00153 Props.append (new Property ("alhc", "0.08913", false, 00154 QObject::tr ("Smoothing factor for current dependence of base and collector transit time"))); 00155 Props.append (new Property ("fthc", "0.8778", false, 00156 QObject::tr ("Partitioning factor for base and collector portion"))); 00157 Props.append (new Property ("rci0", "50.4277", false, 00158 QObject::tr ("Internal collector resistance at low electric field"))); 00159 Props.append (new Property ("vlim", "0.9", false, 00160 QObject::tr ("Voltage separating ohmic and saturation velocity regime"))); 00161 Props.append (new Property ("vces", "0.01", false, 00162 QObject::tr ("Internal C-E saturation voltage"))); 00163 Props.append (new Property ("vpt", "10", false, 00164 QObject::tr ("Collector punch-through voltage"))); 00165 Props.append (new Property ("tr", "1.0E-11", false, 00166 QObject::tr ("Storage time for inverse operation"))); 00167 Props.append (new Property ("ceox", "1.71992E-15", false, 00168 QObject::tr ("Total parasitic B-E capacitance"))); 00169 Props.append (new Property ("ccox", "4.9E-15", false, 00170 QObject::tr ("Total parasitic B-C capacitance"))); 00171 Props.append (new Property ("alqf", "0.1288", false, 00172 QObject::tr ("Factor for additional delay time of minority charge"))); 00173 Props.append (new Property ("alit", "1.0", false, 00174 QObject::tr ("Factor for additional delay time of transfer current"))); 00175 Props.append (new Property ("kf", "2.83667E-9", false, 00176 QObject::tr ("Flicker noise coefficient"))); 00177 Props.append (new Property ("af", "2.0", false, 00178 QObject::tr ("Flicker noise exponent factor"))); 00179 Props.append (new Property ("krbi", "1.0", false, 00180 QObject::tr ("Noise factor for internal base resistance"))); 00181 Props.append (new Property ("latb", "10.479", false, 00182 QObject::tr ("Scaling factor for collector minority charge in direction of emitter width"))); 00183 Props.append (new Property ("latl", "0.300012", false, 00184 QObject::tr ("Scaling factor for collector minority charge in direction of emitter length"))); 00185 Props.append (new Property ("vgb", "1.112", false, 00186 QObject::tr ("Bandgap voltage extrapolated to 0 K"))); 00187 Props.append (new Property ("alt0", "0.0017580", false, 00188 QObject::tr ("First order relative TC of parameter T0"))); 00189 Props.append (new Property ("kt0", "4.07E-6", false, 00190 QObject::tr ("Second order relative TC of parameter T0"))); 00191 Props.append (new Property ("zetaci", "0.7", false, 00192 QObject::tr ("Temperature exponent for RCI0"))); 00193 Props.append (new Property ("zetacx", "1.0", false, 00194 QObject::tr ("Temperature exponent of mobility in substrate transistor transit time"))); 00195 Props.append (new Property ("alvs", "0.001", false, 00196 QObject::tr ("Relative TC of saturation drift velocity"))); 00197 Props.append (new Property ("alces", "0.000125", false, 00198 QObject::tr ("Relative TC of VCES"))); 00199 Props.append (new Property ("zetarbi", "0.0", false, 00200 QObject::tr ("Temperature exponent of internal base resistance"))); 00201 Props.append (new Property ("zetarbx", "0.2", false, 00202 QObject::tr ("Temperature exponent of external base resistance"))); 00203 Props.append (new Property ("zetarcx", "0.21", false, 00204 QObject::tr ("Temperature exponent of external collector resistance"))); 00205 Props.append (new Property ("zetare", "0.7", false, 00206 QObject::tr ("Temperature exponent of emitter resistance"))); 00207 Props.append (new Property ("alb", "0.007", false, 00208 QObject::tr ("Relative TC of forward current gain for V2.1 model"))); 00209 Props.append (new Property ("rth", "1293.95", false, 00210 QObject::tr ("Thermal resistance"))); 00211 Props.append (new Property ("cth", "7.22203E-11", false, 00212 QObject::tr ("Thermal capacitance"))); 00213 Props.append (new Property ("tnom", "27.0", false, 00214 QObject::tr ("Temperature at which parameters are specified"))); 00215 Props.append (new Property ("dt", "0.0", false, 00216 QObject::tr ("Temperature change w.r.t. chip temperature for particular transistor"))); 00217 Props.append (new Property ("Temp", "27", false, 00218 QObject::tr ("simulation temperature"))); 00219 00220 createSymbol (); 00221 tx = x2 + 4; 00222 ty = y1 + 4; 00223 Model = "hicumL2V2p1"; 00224 Name = "T"; 00225 } 00226 00227 Component * hicumL2V2p1::newOne() 00228 { 00229 hicumL2V2p1 * p = new hicumL2V2p1(); 00230 p->Props.getFirst()->Value = Props.getFirst()->Value; 00231 p->recreate(0); 00232 return p; 00233 } 00234 00235 Element * hicumL2V2p1::info(QString& Name, char * &BitmapFile, bool getNewOne) 00236 { 00237 Name = QObject::tr("HICUM L2 v2.1"); 00238 BitmapFile = (char *) "npnsub_therm"; 00239 00240 if(getNewOne) return new hicumL2V2p1(); 00241 return 0; 00242 } 00243 00244 void hicumL2V2p1::createSymbol() 00245 { 00246 // normal bipolar 00247 Lines.append(new Line(-10,-15,-10, 15,QPen(Qt::darkBlue,3))); 00248 Lines.append(new Line(-30, 0,-10, 0,QPen(Qt::darkBlue,2))); 00249 Lines.append(new Line(-10, -5, 0,-15,QPen(Qt::darkBlue,2))); 00250 Lines.append(new Line( 0,-15, 0,-30,QPen(Qt::darkBlue,2))); 00251 Lines.append(new Line(-10, 5, 0, 15,QPen(Qt::darkBlue,2))); 00252 Lines.append(new Line( 0, 15, 0, 30,QPen(Qt::darkBlue,2))); 00253 00254 // substrate node 00255 Lines.append(new Line( 9, 0, 30, 0,QPen(Qt::darkBlue,2))); 00256 Lines.append(new Line( 9, -7, 9, 7,QPen(Qt::darkBlue,3))); 00257 00258 // thermal node 00259 Lines.append(new Line(-30, 20,-20, 20,QPen(Qt::darkBlue,2))); 00260 Lines.append(new Line(-20, 17,-20, 23,QPen(Qt::darkBlue,2))); 00261 00262 // arrow 00263 Lines.append(new Line( -6, 15, 0, 15,QPen(Qt::darkBlue,2))); 00264 Lines.append(new Line( 0, 9, 0, 15,QPen(Qt::darkBlue,2))); 00265 00266 // H 00267 Lines.append(new Line(-30,-30,-30,-24,QPen(Qt::darkBlue,1))); 00268 Lines.append(new Line(-30,-27,-26,-27,QPen(Qt::darkBlue,1))); 00269 Lines.append(new Line(-26,-30,-26,-24,QPen(Qt::darkBlue,1))); 00270 // I 00271 Lines.append(new Line(-24,-30,-24,-24,QPen(Qt::darkBlue,1))); 00272 // C 00273 Lines.append(new Line(-22,-30,-22,-24,QPen(Qt::darkBlue,1))); 00274 Lines.append(new Line(-22,-30,-19,-30,QPen(Qt::darkBlue,1))); 00275 Lines.append(new Line(-22,-24,-19,-24,QPen(Qt::darkBlue,1))); 00276 // U 00277 Lines.append(new Line(-17,-30,-17,-24,QPen(Qt::darkBlue,1))); 00278 Lines.append(new Line(-14,-30,-14,-24,QPen(Qt::darkBlue,1))); 00279 Lines.append(new Line(-17,-24,-14,-24,QPen(Qt::darkBlue,1))); 00280 // M 00281 Lines.append(new Line(-12,-30,-12,-24,QPen(Qt::darkBlue,1))); 00282 Lines.append(new Line( -8,-30, -8,-24,QPen(Qt::darkBlue,1))); 00283 Lines.append(new Line(-12,-30,-10,-28,QPen(Qt::darkBlue,1))); 00284 Lines.append(new Line( -8,-30,-10,-28,QPen(Qt::darkBlue,1))); 00285 00286 Ports.append(new Port( 0,-30)); // collector 00287 Ports.append(new Port(-30, 0)); // base 00288 Ports.append(new Port( 0, 30)); // emitter 00289 Ports.append(new Port( 30, 0)); // substrate 00290 Ports.append(new Port(-30, 20)); // thermal node 00291 00292 x1 = -30; y1 = -30; 00293 x2 = 30; y2 = 30; 00294 }