Qucs-GUI  0.0.19
/home/travis/build/Qucs/qucs/qucs/qucs/components/nigbt.cpp
Go to the documentation of this file.
00001 /*
00002  * nigbt.cpp - device implementations for nigbt 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 "nigbt.h"
00012 
00013 nigbt::nigbt()
00014 {
00015   Description = QObject::tr ("NIGBT verilog device");
00016 
00017   Props.append (new Property ("Agd", "5.0e-6", false,
00018     QObject::tr ("gate-drain overlap area")
00019     +" ("+QObject::tr ("m**2")+")"));
00020   Props.append (new Property ("Area", "1.0e-5", false,
00021     QObject::tr ("area of the device")
00022     +" ("+QObject::tr ("m**2")+")"));
00023   Props.append (new Property ("Kp", "0.38", false,
00024     QObject::tr ("MOS transconductance")
00025     +" ("+QObject::tr ("A/V**2")+")"));
00026   Props.append (new Property ("Tau", "7.1e-6", false,
00027     QObject::tr ("ambipolar recombination lifetime")
00028     +" ("+QObject::tr ("s")+")"));
00029   Props.append (new Property ("Wb", "9.0e-5", false,
00030     QObject::tr ("metallurgical base width")
00031     +" ("+QObject::tr ("m")+")"));
00032   Props.append (new Property ("BVf", "1.0", false,
00033     QObject::tr ("avalanche uniformity factor")));
00034   Props.append (new Property ("BVn", "4.0", false,
00035     QObject::tr ("avalanche multiplication exponent")));
00036   Props.append (new Property ("Cgs", "1.24e-8", false,
00037     QObject::tr ("gate-source capacitance per unit area")
00038     +" ("+QObject::tr ("F/cm**2")+")"));
00039   Props.append (new Property ("Coxd", "3.5e-8", false,
00040     QObject::tr ("gate-drain oxide capacitance per unit area")
00041     +" ("+QObject::tr ("F/cm**2")+")"));
00042   Props.append (new Property ("Jsne", "6.5e-13", false,
00043     QObject::tr ("emitter saturation current density")
00044     +" ("+QObject::tr ("A/cm**2")+")"));
00045   Props.append (new Property ("Kf", "1.0", false,
00046     QObject::tr ("triode region factor")));
00047   Props.append (new Property ("Mun", "1.5e-3", false,
00048     QObject::tr ("electron mobility")
00049     +" ("+QObject::tr ("cm**2/Vs")+")"));
00050   Props.append (new Property ("Mup", "4.5e-2", false,
00051     QObject::tr ("hole mobility")
00052     +" ("+QObject::tr ("cm**2/Vs")+")"));
00053   Props.append (new Property ("Nb", "2.0e14", false,
00054     QObject::tr ("base doping")
00055     +" ("+QObject::tr ("1/cm**3")+")"));
00056   Props.append (new Property ("Theta", "0.02", false,
00057     QObject::tr ("transverse field factor")
00058     +" ("+QObject::tr ("1/V")+")"));
00059   Props.append (new Property ("Vt", "4.7", false,
00060     QObject::tr ("threshold voltage")
00061     +" ("+QObject::tr ("V")+")"));
00062   Props.append (new Property ("Vtd", "1.0e-3", false,
00063     QObject::tr ("gate-drain overlap depletion threshold")
00064     +" ("+QObject::tr ("V")+")"));
00065   Props.append (new Property ("Tnom", "26.85", false,
00066     QObject::tr ("parameter measurement temperature")
00067     +" ("+QObject::tr ("Celsius")+")"));
00068   Props.append (new Property ("Temp", "26.85", false,
00069     QObject::tr ("simulation temperature")
00070     +" ("+QObject::tr ("Celsius")+")"));
00071 
00072   createSymbol ();
00073   tx = x2 + 4;
00074   ty = y1 + 4;
00075   Model = "nigbt";
00076   Name  = "T";
00077 }
00078 
00079 Component * nigbt::newOne()
00080 {
00081   nigbt * p = new nigbt();
00082   p->Props.getFirst()->Value = Props.getFirst()->Value; 
00083   p->recreate(0); 
00084   return p;
00085 }
00086 
00087 Element * nigbt::info(QString& Name, char * &BitmapFile, bool getNewOne)
00088 {
00089   Name = QObject::tr("NIGBT");
00090   BitmapFile = (char *) "nigbt";
00091 
00092   if(getNewOne) return new nigbt();
00093   return 0;
00094 }
00095 
00096 void nigbt::createSymbol()
00097 {
00098   // bipolar
00099   Lines.append(new Line(-10,-15,-10, 15,QPen(Qt::darkBlue,3)));
00100   Lines.append(new Line(-30,  0,-14,  0,QPen(Qt::darkBlue,2)));
00101   Lines.append(new Line(-10, -5,  0,-15,QPen(Qt::darkBlue,2)));
00102   Lines.append(new Line(  0,-15,  0,-30,QPen(Qt::darkBlue,2)));
00103   Lines.append(new Line(-10,  5,  0, 15,QPen(Qt::darkBlue,2)));
00104   Lines.append(new Line(  0, 15,  0, 30,QPen(Qt::darkBlue,2)));
00105 
00106   // mos gate
00107   Lines.append(new Line(-14,-13,-14, 13,QPen(Qt::darkBlue,3)));
00108 
00109   // arrow
00110   Lines.append(new Line( -6, 15,  0, 15,QPen(Qt::darkBlue,2)));
00111   Lines.append(new Line(  0,  9,  0, 15,QPen(Qt::darkBlue,2)));
00112 
00113   // terminal definitions
00114   Ports.append(new Port(  0,-30)); // collector
00115   Ports.append(new Port(-30,  0)); // gate
00116   Ports.append(new Port(  0, 30)); // emitter
00117 
00118   // relative boundings
00119   x1 = -30; y1 = -30;
00120   x2 =   4; y2 =  30;
00121 }
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines