My Project  0.0.16
QUCS Mapping
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
nigbt.cpp
Go to the documentation of this file.
1 /*
2  * nigbt.cpp - device implementations for nigbt 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 "nigbt.h"
12 
14 {
15  Description = QObject::tr ("NIGBT verilog device");
16 
17  Props.append (new Property ("Agd", "5.0e-6", false,
18  QObject::tr ("gate-drain overlap area")
19  +" ("+QObject::tr ("m**2")+")"));
20  Props.append (new Property ("Area", "1.0e-5", false,
21  QObject::tr ("area of the device")
22  +" ("+QObject::tr ("m**2")+")"));
23  Props.append (new Property ("Kp", "0.38", false,
24  QObject::tr ("MOS transconductance")
25  +" ("+QObject::tr ("A/V**2")+")"));
26  Props.append (new Property ("Tau", "7.1e-6", false,
27  QObject::tr ("ambipolar recombination lifetime")
28  +" ("+QObject::tr ("s")+")"));
29  Props.append (new Property ("Wb", "9.0e-5", false,
30  QObject::tr ("metallurgical base width")
31  +" ("+QObject::tr ("m")+")"));
32  Props.append (new Property ("BVf", "1.0", false,
33  QObject::tr ("avalanche uniformity factor")));
34  Props.append (new Property ("BVn", "4.0", false,
35  QObject::tr ("avalanche multiplication exponent")));
36  Props.append (new Property ("Cgs", "1.24e-8", false,
37  QObject::tr ("gate-source capacitance per unit area")
38  +" ("+QObject::tr ("F/cm**2")+")"));
39  Props.append (new Property ("Coxd", "3.5e-8", false,
40  QObject::tr ("gate-drain oxide capacitance per unit area")
41  +" ("+QObject::tr ("F/cm**2")+")"));
42  Props.append (new Property ("Jsne", "6.5e-13", false,
43  QObject::tr ("emitter saturation current density")
44  +" ("+QObject::tr ("A/cm**2")+")"));
45  Props.append (new Property ("Kf", "1.0", false,
46  QObject::tr ("triode region factor")));
47  Props.append (new Property ("Mun", "1.5e-3", false,
48  QObject::tr ("electron mobility")
49  +" ("+QObject::tr ("cm**2/Vs")+")"));
50  Props.append (new Property ("Mup", "4.5e-2", false,
51  QObject::tr ("hole mobility")
52  +" ("+QObject::tr ("cm**2/Vs")+")"));
53  Props.append (new Property ("Nb", "2.0e14", false,
54  QObject::tr ("base doping")
55  +" ("+QObject::tr ("1/cm**3")+")"));
56  Props.append (new Property ("Theta", "0.02", false,
57  QObject::tr ("transverse field factor")
58  +" ("+QObject::tr ("1/V")+")"));
59  Props.append (new Property ("Vt", "4.7", false,
60  QObject::tr ("threshold voltage")
61  +" ("+QObject::tr ("V")+")"));
62  Props.append (new Property ("Vtd", "1.0e-3", false,
63  QObject::tr ("gate-drain overlap depletion threshold")
64  +" ("+QObject::tr ("V")+")"));
65  Props.append (new Property ("Tnom", "26.85", false,
66  QObject::tr ("parameter measurement temperature")
67  +" ("+QObject::tr ("Celsius")+")"));
68  Props.append (new Property ("Temp", "26.85", false,
69  QObject::tr ("simulation temperature")
70  +" ("+QObject::tr ("Celsius")+")"));
71 
72  createSymbol ();
73  tx = x2 + 4;
74  ty = y1 + 4;
75  Model = "nigbt";
76  Name = "T";
77 }
78 
80 {
81  nigbt * p = new nigbt();
82  p->Props.getFirst()->Value = Props.getFirst()->Value;
83  p->recreate(0);
84  return p;
85 }
86 
87 Element * nigbt::info(QString& Name, char * &BitmapFile, bool getNewOne)
88 {
89  Name = QObject::tr("NIGBT");
90  BitmapFile = (char *) "nigbt";
91 
92  if(getNewOne) return new nigbt();
93  return 0;
94 }
95 
97 {
98  // bipolar
99  Lines.append(new Line(-10,-15,-10, 15,QPen(QPen::darkBlue,3)));
100  Lines.append(new Line(-30, 0,-14, 0,QPen(QPen::darkBlue,2)));
101  Lines.append(new Line(-10, -5, 0,-15,QPen(QPen::darkBlue,2)));
102  Lines.append(new Line( 0,-15, 0,-30,QPen(QPen::darkBlue,2)));
103  Lines.append(new Line(-10, 5, 0, 15,QPen(QPen::darkBlue,2)));
104  Lines.append(new Line( 0, 15, 0, 30,QPen(QPen::darkBlue,2)));
105 
106  // mos gate
107  Lines.append(new Line(-14,-13,-14, 13,QPen(QPen::darkBlue,3)));
108 
109  // arrow
110  Lines.append(new Line( -6, 15, 0, 15,QPen(QPen::darkBlue,2)));
111  Lines.append(new Line( 0, 9, 0, 15,QPen(QPen::darkBlue,2)));
112 
113  // terminal definitions
114  Ports.append(new Port( 0,-30)); // collector
115  Ports.append(new Port(-30, 0)); // gate
116  Ports.append(new Port( 0, 30)); // emitter
117 
118  // relative boundings
119  x1 = -30; y1 = -30;
120  x2 = 4; y2 = 30;
121 }