Qucs-GUI
0.0.19
|
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 }