Qucs-GUI  0.0.19
/home/travis/build/Qucs/qucs/qucs/qucs/components/hicumL2V2p1.cpp
Go to the documentation of this file.
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 }
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines