committed by
Holger Vogt
12 changed files with 1393 additions and 1325 deletions
-
40src/spicelib/devices/adms/mextram/admsva/COPYRIGHT_NOTICE
-
48src/spicelib/devices/adms/mextram/admsva/IP_NOTICE_DISCLAIMER_LICENSE
-
57src/spicelib/devices/adms/mextram/admsva/bjt504t.va
-
950src/spicelib/devices/adms/mextram/admsva/evaluate.inc
-
136src/spicelib/devices/adms/mextram/admsva/frontdef.inc
-
82src/spicelib/devices/adms/mextram/admsva/initialize.inc
-
145src/spicelib/devices/adms/mextram/admsva/noise.inc
-
49src/spicelib/devices/adms/mextram/admsva/opinfo.inc
-
10src/spicelib/devices/adms/mextram/admsva/opvars.inc
-
298src/spicelib/devices/adms/mextram/admsva/parameters.inc
-
255src/spicelib/devices/adms/mextram/admsva/tscaling.inc
-
22src/spicelib/devices/adms/mextram/admsva/variables.inc
@ -1,40 +0,0 @@ |
|||
Verilog-A implementation of the Mextram Bipolar Transistor Model, |
|||
including variants of the Mextram model released by Delft University. |
|||
|
|||
Copyright (c) 2006 Delft University of Technology |
|||
Licensed under the Educational Community License version 1.0 |
|||
|
|||
|
|||
This Original Work, including software, source code, documents, or other related items, |
|||
is being provided by the copyright holder(s) subject to the terms of the Educational |
|||
Community License. By obtaining, using and/or copying this Original Work, you agree that |
|||
you have read, understand, and will comply with the following terms and conditions of |
|||
the Educational Community License: |
|||
|
|||
Permission to use, copy, modify, merge, publish, distribute, and sublicense this Original |
|||
Work and its documentation, with or without modification, for any purpose, and without fee |
|||
or royalty to the copyright holder(s) is hereby granted, provided that you include the |
|||
following on ALL copies of the Original Work or portions thereof, including modifications |
|||
or derivatives, that you make: |
|||
|
|||
The full text of the Educational Community License in a location viewable to users of the |
|||
redistributed or derivative work. |
|||
|
|||
Any pre-existing intellectual property disclaimers, notices, or terms and conditions. |
|||
|
|||
Notice of any changes or modifications to the Original Work, including the date the |
|||
changes were made. |
|||
|
|||
Any modifications of the Original Work must be distributed in such a manner as to avoid |
|||
any confusion with the Original Work of the copyright holders. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
|||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR |
|||
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE |
|||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
|||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|||
|
|||
The name and trademarks of copyright holder(s) may NOT be used in advertising or publicity |
|||
pertaining to the Original or Derivative Works without specific, written prior permission. |
|||
Title to copyright in the Original Work and any associated documentation will at all times |
|||
remain with the copyright holders. |
|||
@ -0,0 +1,48 @@ |
|||
// Copyright (c) 2000-2007, NXP Semiconductors |
|||
// Copyright (c) 2007-2014, Delft University of Technology |
|||
// Copyright (c) 2015, Auburn University |
|||
|
|||
INTELLECTUAL PROPERTY NOTICE, DISCLAIMER AND LICENSE |
|||
|
|||
The Mextram model and documentation presented at this website, |
|||
denoted as the Model, |
|||
has been developed by NXP Semiconductors until 2007, |
|||
Delft University of Technology from 2007 to 2014, |
|||
and Auburn University since April 2015. |
|||
|
|||
The Model is distributed as is, completely without any expressed |
|||
or implied warranty or service support. |
|||
NXP Semiconductors, Delft University of Technology, |
|||
Auburn University and their employees are not liable for |
|||
the condition or performance of the Model. |
|||
|
|||
NXP Semiconductors, Delft University of Technology, |
|||
Auburn University own |
|||
the copyright and grant users a perpetual, |
|||
irrevocable, worldwide, non-exclusive, royalty-free |
|||
license with respect to the Model as set forth below. |
|||
|
|||
NXP Semiconductors, Delft University of Technology, Auburn University |
|||
hereby disclaim all implied warranties. |
|||
|
|||
NXP Semiconductors, Delft University of Technology, Auburn University |
|||
grant the users the right to modify, copy, and |
|||
redistribute the Model and documentation, |
|||
both within the user's organization and externally, |
|||
subject to the following restrictions |
|||
|
|||
1. The users agree not to charge for the code |
|||
itself but may charge for additions, extensions, or support. |
|||
|
|||
2. In any product based on the Model, the users agree to acknowledge |
|||
NXP Semiconductors, Delft University of Technology, Auburn University |
|||
that developed the Model. This acknowledgment |
|||
shall appear in the product documentation. |
|||
|
|||
3. The users agree to obey all restrictions governing redistribution |
|||
or export of the Model. |
|||
|
|||
4. The users agree to reproduce any copyright notice which appears |
|||
on the Model on any copy or modification of such made available |
|||
to others. |
|||
|
|||
@ -1,46 +1,47 @@ |
|||
// Copyright (c) 2000-2007, NXP Semiconductor |
|||
// Copyright (c) 2007-2014, Delft University of Technology |
|||
// Copyright (c) 2015, Auburn University |
|||
// All rights reserved, see IP_NOTICE_DISCLAIMER_LICENSE for further information. |
|||
|
|||
`include "frontdef.inc" |
|||
`define SELFHEATING |
|||
`define SUBSTRATE |
|||
`define SELFHEATING |
|||
`define SUBSTRATE |
|||
|
|||
module bjt504tva (c, b, e, s, dt); |
|||
|
|||
`ifdef insideADMS |
|||
`define P(p) (*p*) |
|||
`else |
|||
`define P(p) |
|||
`endif |
|||
|
|||
// External ports |
|||
inout c, b, e, s, dt; |
|||
|
|||
electrical c `P(info="external collector node"); |
|||
electrical b `P(info="external base node"); |
|||
electrical e `P(info="external emitter node"); |
|||
electrical s `P(info="external substrate node"); |
|||
electrical dt `P(info="external thermal node"); |
|||
|
|||
// Internal nodes |
|||
electrical c1 `P(info="internal collector node 1"); |
|||
electrical e1 `P(info="internal emitter node"); |
|||
electrical b1 `P(info="internal base node 1"); |
|||
electrical b2 `P(info="internal base node 2"); |
|||
electrical c2 `P(info="internal collector node 2"); |
|||
electrical c3 `P(info="internal collector node 3"); |
|||
electrical c4 `P(info="internal collector node 4"); |
|||
// For correlated noise implementation |
|||
electrical noi `P(info="internal noise node"); |
|||
inout c, b, e, s, dt; |
|||
|
|||
electrical c `P(info="external collector node"); |
|||
electrical b `P(info="external base node"); |
|||
electrical e `P(info="external emitter node"); |
|||
electrical s `P(info="external substrate node"); |
|||
electrical dt `P(info="external thermal node"); |
|||
|
|||
// Internal nodes |
|||
electrical c1 `P(info="internal collector node 1"); |
|||
electrical e1 `P(info="internal emitter node"); |
|||
electrical b1 `P(info="internal base node 1"); |
|||
electrical b2 `P(info="internal base node 2"); |
|||
electrical c2 `P(info="internal collector node 2"); |
|||
electrical c3 `P(info="internal collector node 3"); |
|||
electrical c4 `P(info="internal collector node 4"); |
|||
// For correlated noise implementation |
|||
electrical noi `P(info="internal noise node"); |
|||
|
|||
`include "parameters.inc" |
|||
`include "variables.inc" |
|||
`include "opvars.inc" |
|||
|
|||
analog begin |
|||
|
|||
`include "initialize.inc" |
|||
`include "tscaling.inc" |
|||
`include "evaluate.inc" |
|||
`include "noise.inc" |
|||
`include "opinfo.inc" |
|||
|
|||
// The following can be used to print OP-info to std out: |
|||
// `include "op_print.inc" |
|||
|
|||
end // analog |
|||
endmodule |
|||
|
|||
950
src/spicelib/devices/adms/mextram/admsva/evaluate.inc
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,145 @@ |
|||
// Copyright (c) 2000-2007, NXP Semiconductor |
|||
// Copyright (c) 2007-2014, Delft University of Technology |
|||
// Copyright (c) 2015, Auburn University |
|||
// All rights reserved, see IP_NOTICE_DISCLAIMER_LICENSE for further information. |
|||
|
|||
// Noise sources |
|||
|
|||
`NOISE begin |
|||
|
|||
// Thermal noise |
|||
common = 4.0 * `KB * Tk; |
|||
powerREC = common / RE_TM; // Emitter resistance |
|||
powerRBC = common / RBC_TM; // Base resistance |
|||
powerRCCxx = common * GCCxx_TM; // Collector resistance |
|||
powerRCCex = common * GCCex_TM; // Collector resistance |
|||
powerRCCin = common * GCCin_TM; // Collector resistance |
|||
powerRBV = common / Rb2 * (4.0 * eVb1b2 + 5.0) * `one_third ; // Variable base resistance |
|||
|
|||
// Main current shot noise |
|||
In_N = (If + Ir) / qBI; |
|||
powerCCS = 2.0 * `QQ * abs(In_N); |
|||
|
|||
// Weak-avalanche current shot noise |
|||
if (KAVL > 0) begin |
|||
Gem_N = abs(Iavl / In_N); |
|||
end else begin |
|||
Gem_N = 0.0; |
|||
end |
|||
|
|||
powerIIS = 2.0 * `QQ * Iavl * (Gem_N + 1); |
|||
|
|||
// Transit time for noise |
|||
if (In_N > 0.0) begin |
|||
Taub_N = (Qbe + Qbc) / In_N; |
|||
end else begin |
|||
Taub_N = TAUB_T * q1Q * qBI; |
|||
end |
|||
|
|||
// RF correlation noise model switch |
|||
if (KC == 1) begin |
|||
// use charge partition for noise transit time |
|||
taun = XQB * Taub_N; |
|||
end else if (KC == 2) begin |
|||
// use fraction of transit time for noise transit time |
|||
taun = FTAUN * Taub_N; |
|||
end else begin // KC == 0 |
|||
// no correlation noise |
|||
taun = 0; |
|||
end |
|||
|
|||
// Forward base current shot noise and 1/f noise |
|||
powerFBCS = 2.0 * `QQ * (abs(Ib1) + abs(Ib2) + abs(Izteb)); |
|||
powerFBC1fB1 = (1.0 - XIBI) * pow((abs(Ib1) / (1 - XIBI)), AF) * KF_M; |
|||
exponentFBC1fB2 = (2.0 * (MLF - 1.0)) + (AF * (2.0 - MLF)); |
|||
powerFBC1fB2 = KFN_M * pow(abs(Ib2), exponentFBC1fB2); |
|||
|
|||
// Emitter-base sidewall current shot and 1/f noise |
|||
powerEBSCS = 2.0 * `QQ * abs(Ib1_s); |
|||
if (XIBI == 0) |
|||
powerEBSC1f = 0.0; |
|||
else |
|||
powerEBSC1f = KF_M * XIBI * pow((abs(Ib1_s / XIBI)), AF); |
|||
|
|||
// Reverse base current shot noise and 1/f noise |
|||
powerRBCS = 2.0 * `QQ * abs(Ib3); |
|||
powerRBC1f = KF_M * pow(abs(Ib3), AF); |
|||
|
|||
// Extrinsic current shot noise and 1/f noise |
|||
powerExCS = 2.0 * `QQ * abs(Iex); |
|||
powerExC1f = KF_M * (1 - (EXMOD * XEXT)) * |
|||
pow((abs(Iex) / (1 - (EXMOD * XEXT))), AF); |
|||
powerExCSMOD = 2.0 * `QQ * abs(XIex) * EXMOD; |
|||
if (XEXT == 0.0) |
|||
powerExC1fMOD = 0.0; |
|||
else |
|||
powerExC1fMOD = KF_M * EXMOD * XEXT * pow((abs(XIex) / XEXT), AF); |
|||
|
|||
`ifdef SUBSTRATE |
|||
// Substrate current shot noise (between nodes B1 and S, resp. B and S) |
|||
powerSubsCS_B1S = 2.0 * `QQ * abs(Isub); |
|||
powerSubsCS_BS = 2.0 * `QQ * abs(XIsub); |
|||
`endif |
|||
|
|||
// Reference un-correlated current shot noise sources |
|||
I(noi) <+ white_noise(powerCCS, "un-correlated current shot noise"); |
|||
I(noi) <+ V(noi); |
|||
|
|||
// Implementing correlated noise sources |
|||
I(b2, e1) <+ taun * ddt(V(noi)); |
|||
I(c2, b2) <+ Gem_N * V(noi); |
|||
I(c2, e1) <+ V(noi); |
|||
|
|||
// Implementing un-correlated noise sources |
|||
I(c2, b2) <+ white_noise(powerIIS, "un-correlated noise"); |
|||
I(b2, e1) <+ white_noise(powerFBCS, "un-correlated noise"); |
|||
|
|||
// Add noise sources |
|||
I(e, e1) <+ white_noise(powerREC, "emitter resistance"); |
|||
I(b, b1) <+ white_noise(powerRBC, "base resistance"); |
|||
I(b1, b2) <+ white_noise(powerRBV, "variable base resistance"); |
|||
I(b2, e1) <+ flicker_noise(powerFBC1fB1, 1, "bas_emi_forw"); |
|||
I(b2, e1) <+ flicker_noise(powerFBC1fB2, 1, "bas_emi_forw"); |
|||
I(e1, b1) <+ white_noise(powerEBSCS, "emi_bas_side"); |
|||
I(e1, b1) <+ flicker_noise(powerEBSC1f, 1, "emi_bas_side"); |
|||
I(b1, c4) <+ white_noise(powerRBCS, "bas_col_reve"); |
|||
I(b1, c4) <+ flicker_noise(powerRBC1f, 1, "bas_col_reve"); |
|||
I(b1, c4) <+ white_noise(powerExCS, "Ext_bas_col"); |
|||
I(b1, c4) <+ flicker_noise(powerExC1f, 1, "Ext_bas_col"); |
|||
I(b, c3) <+ white_noise(powerExCSMOD, "Ext_bas_col"); |
|||
I(b, c3) <+ flicker_noise(powerExC1fMOD, 1, "Ext_bas_col"); |
|||
|
|||
`ifdef SUBSTRATE |
|||
I(b1, s) <+ white_noise(powerSubsCS_B1S, "bas_sub_current"); |
|||
I(b, s) <+ white_noise(powerSubsCS_BS, "bas_sub_current"); |
|||
`endif |
|||
|
|||
if (RCBLX > 0.0) |
|||
begin |
|||
if (RCBLI > 0.0) |
|||
begin /* all branches exist */ |
|||
I(c, c3) <+ white_noise(powerRCCxx, "collector plug resistance"); |
|||
I(c3, c4) <+ white_noise(powerRCCex, "extrinsic collector BL resistance"); |
|||
I(c4, c1) <+ white_noise(powerRCCin, "intrinsic collector BL resistance"); |
|||
end |
|||
else |
|||
begin /* only Rcblx exists */ |
|||
I(c, c3) <+ white_noise(powerRCCxx, "collector plug resistance"); |
|||
I(c3, c1) <+ white_noise(powerRCCex, "extrinsic collector BL resistance"); |
|||
end |
|||
end |
|||
else |
|||
begin |
|||
if (RCBLI > 0.0) |
|||
begin /* only Rcbli exists */ |
|||
I(c, c4) <+ white_noise(powerRCCxx, "collector plug resistance"); |
|||
I(c4, c1) <+ white_noise(powerRCCin, "intrinsic collector BL resistance"); |
|||
end |
|||
else |
|||
begin /* neither Rcblx nor Rcbli exists */ |
|||
I(c, c1) <+ white_noise(powerRCCxx, "collector plug resistance"); |
|||
end |
|||
end |
|||
|
|||
end // Noise |
|||
|
|||
@ -1,209 +1,115 @@ |
|||
// Mextram parameters |
|||
|
|||
parameter integer LEVEL = 504 from [504:505) |
|||
`ATTR(info="Model level"); |
|||
parameter real TREF = 25.0 from [-273.0:inf) |
|||
`ATTR(info="Reference temperature"); |
|||
parameter real DTA = 0.0 |
|||
`ATTR(info="Difference between the local and global ambient temperatures"); |
|||
parameter integer EXMOD = 1 from [0:1] |
|||
`ATTR(info="Flag for extended modeling of the reverse current gain"); |
|||
parameter integer EXPHI = 1 from [0:1] |
|||
`ATTR(info="Flag for the distributed high-frequency effects in transient"); |
|||
parameter integer EXAVL = 0 from [0:1] |
|||
`ATTR(info="Flag for extended modeling of avalanche currents"); |
|||
|
|||
parameter real IS = 22.0a from (0.0:inf) |
|||
`ATTR(info="Collector-emitter saturation current"); |
|||
parameter real IK = 0.1 from [1.0p:inf) |
|||
`ATTR(info="Collector-emitter high injection knee current"); |
|||
parameter real VER = 2.5 from [0.01:inf) |
|||
`ATTR(info="Reverse Early voltage"); |
|||
parameter real VEF = 44.0 from [0.01:inf) |
|||
`ATTR(info="Forward Early voltage"); |
|||
parameter real BF = 215.0 from [0.1m:inf) |
|||
`ATTR(info="Ideal forward current gain"); |
|||
parameter real IBF = 2.7f from [0.0:inf) |
|||
`ATTR(info="Saturation current of the non-ideal forward base current"); |
|||
parameter real MLF = 2.0 from [0.1:inf) |
|||
`ATTR(info="Non-ideality factor of the non-ideal forward base current"); |
|||
parameter real XIBI = 0.0 from [0.0:1.0] |
|||
`ATTR(info="Part of ideal base current that belongs to the sidewall"); |
|||
// begin: RvdT, November 2008, BE tunneling current parameters: |
|||
parameter real IZEB = 0.0 from [0.0:inf) |
|||
`ATTR(info="Pre-factor of emitter-base Zener tunneling current"); |
|||
parameter real NZEB = 22.0 from [0.0:inf) |
|||
`ATTR(info="Coefficient of emitter-base Zener tunneling current"); |
|||
// end: RvdT, November 2008, EB tunneling current parameters: |
|||
parameter real BRI = 7.0 from [1.0e-4:inf) |
|||
`ATTR(info="Ideal reverse current gain"); |
|||
parameter real IBR = 1.0f from [0.0:inf) |
|||
`ATTR(info="Saturation current of the non-ideal reverse base current"); |
|||
parameter real VLR = 0.2 |
|||
`ATTR(info="Cross-over voltage of the non-ideal reverse base current"); |
|||
parameter real XEXT = 0.63 from [0.0:1.0] |
|||
`ATTR(info="Part of currents and charges that belong to extrinsic region"); |
|||
|
|||
parameter real WAVL = 1.1u from [1.0n:inf) |
|||
`ATTR(info="Epilayer thickness used in weak-avalanche model"); |
|||
parameter real VAVL = 3.0 from [0.01:inf) |
|||
`ATTR(info="Voltage determining curvature of avalanche current"); |
|||
parameter real SFH = 0.3 from [0.0:inf) |
|||
`ATTR(info="Current spreading factor of avalanche model when EXAVL=1"); |
|||
// RvdT, 22-02-2008: for MXT 504.7 |
|||
// increased lower clipping values RE, RBC, RBV, RCC, RCV, SCRCV |
|||
// from 1u to 1m: |
|||
parameter real RE = 5.0 from [1.0m:inf) |
|||
`ATTR(info="Emitter resistance"); |
|||
parameter real RBC = 23.0 from [1.0m:inf) |
|||
`ATTR(info="Constant part of the base resistance"); |
|||
parameter real RBV = 18.0 from [1.0m:inf) |
|||
`ATTR(info="Zero-bias value of the variable part of the base resistance"); |
|||
parameter real RCC = 12.0 from [1.0m:inf) |
|||
`ATTR(info="Constant part of the collector resistance"); |
|||
parameter real RCV = 150.0 from [1.0m:inf) |
|||
`ATTR(info="Resistance of the un-modulated epilayer"); |
|||
parameter real SCRCV = 1250.0 from [1.0m:inf) |
|||
`ATTR(info="Space charge resistance of the epilayer"); |
|||
parameter real IHC = 4.0m from [1.0p:inf) |
|||
`ATTR(info="Critical current for velocity saturation in the epilayer"); |
|||
parameter real AXI = 0.3 from [0.02:inf) |
|||
`ATTR(info="Smoothness parameter for the onset of quasi-saturation"); |
|||
|
|||
parameter real CJE = 73.0f from [0.0:inf) |
|||
`ATTR(info="Zero-bias emitter-base depletion capacitance"); |
|||
parameter real VDE = 0.95 from [0.05:inf) |
|||
`ATTR(info="Emitter-base diffusion voltage"); |
|||
parameter real PE = 0.4 from [0.01:0.99) |
|||
`ATTR(info="Emitter-base grading coefficient"); |
|||
parameter real XCJE = 0.4 from [0.0:1.0] |
|||
`ATTR(info="Sidewall fraction of the emitter-base depletion capacitance"); |
|||
parameter real CBEO = 0.0 from [0.0:inf) |
|||
`ATTR(info="Emitter-base overlap capacitance"); |
|||
|
|||
parameter real CJC = 78.0f from [0.0:inf) |
|||
`ATTR(info="Zero-bias collector-base depletion capacitance"); |
|||
parameter real VDC = 0.68 from [0.05:inf) |
|||
`ATTR(info="Collector-base diffusion voltage"); |
|||
parameter real PC = 0.5 from [0.01:0.99) |
|||
`ATTR(info="Collector-base grading coefficient"); |
|||
parameter real XP = 0.35 from [0.0:0.99) |
|||
`ATTR(info="Constant part of Cjc"); |
|||
parameter real MC = 0.5 from [0.0:1.0) |
|||
`ATTR(info="Coefficient for current modulation of CB depletion capacitance"); |
|||
parameter real XCJC = 32.0m from [0.0:1.0] |
|||
`ATTR(info="Fraction of CB depletion capacitance under the emitter"); |
|||
// RvdT, 30-11-2007: introduced RCBLX and RCBLI: |
|||
parameter real RCBLX = 0.0 from [0.0:inf) |
|||
`ATTR(info="Resistance Collector Buried Layer eXtrinsic"); |
|||
parameter real RCBLI = 0.0 from [0.0:inf) |
|||
`ATTR(info="Resistance Collector Buried Layer Intrinsic"); |
|||
parameter real CBCO = 0.0 from [0.0:inf) |
|||
`ATTR(info="Collector-base overlap capacitance"); |
|||
|
|||
parameter real MTAU = 1.0 from [0.1:inf) |
|||
`ATTR(info="Non-ideality factor of the emitter stored charge"); |
|||
parameter real TAUE = 2.0p from [0.0:inf) |
|||
`ATTR(info="Minimum transit time of stored emitter charge"); |
|||
parameter real TAUB = 4.2p from (0.0:inf) |
|||
`ATTR(info="Transit time of stored base sharge"); |
|||
parameter real TEPI = 41.0p from [0.0:inf) |
|||
`ATTR(info="Transit time of stored epilayer charge"); |
|||
parameter real TAUR = 520.0p from [0.0:inf) |
|||
`ATTR(info="Transit time of reverse extrinsic stored base charge"); |
|||
// Copyright (c) 2000-2007, NXP Semiconductor |
|||
// Copyright (c) 2007-2014, Delft University of Technology |
|||
// Copyright (c) 2015, Auburn University |
|||
// All rights reserved, see IP_NOTICE_DISCLAIMER_LICENSE for further information. |
|||
|
|||
parameter real DEG = 0.0 |
|||
`ATTR(info="Bandgap difference over the base"); |
|||
parameter real XREC = 0.0 from [0.0:inf) |
|||
`ATTR(info="Pre-factor of the recombination part of Ib1"); |
|||
// Mextram parameters |
|||
`MPIco( LEVEL ,504 ,"" ,504 ,505 ,"Model level" ) |
|||
`MPRco( TREF ,25.0 ,"" ,-273.0 ,inf ,"Reference temperature" ) |
|||
`MPRnb( DTA ,0.0 ,"" ,"Difference between the local and global ambient temperatures" ) |
|||
`MPIcc( EXMOD ,1 ,"" ,0 ,2 ,"Flag for extended modeling of the reverse current gain" ) |
|||
`MPIcc( EXPHI ,1 ,"" ,0 ,1 ,"Flag for the distributed high-frequency effects in transient" ) |
|||
`MPIcc( EXAVL ,0 ,"" ,0 ,1 ,"Flag for extended modeling of avalanche currents" ) |
|||
|
|||
parameter real AQBO = 0.3 |
|||
`ATTR(info="Temperature coefficient of the zero-bias base charge"); |
|||
parameter real AE = 0.0 |
|||
`ATTR(info="Temperature coefficient of the resistivity of the emitter"); |
|||
parameter real AB = 1.0 |
|||
`ATTR(info="Temperature coefficient of the resistivity of the base"); |
|||
parameter real AEPI = 2.5 |
|||
`ATTR(info="Temperature coefficient of the resistivity of the epilayer"); |
|||
parameter real AEX = 0.62 |
|||
`ATTR(info="Temperature coefficient of the resistivity of the extrinsic base"); |
|||
parameter real AC = 2.0 |
|||
`ATTR(info="Temperature coefficient of the resistivity of the collector contact"); |
|||
// RvdT, 30-01-2007: introduced ACBL |
|||
parameter real ACBL = 2.0 from [0.0:inf) |
|||
`ATTR(info="Temperature coefficient of the resistivity of the collector buried layer"); |
|||
parameter real DVGBF = 50.0m |
|||
`ATTR(info="Band-gap voltage difference of the forward current gain"); |
|||
parameter real DVGBR = 45.0m |
|||
`ATTR(info="Band-gap voltage difference of the reverse current gain"); |
|||
parameter real VGB = 1.17 from [0.1:inf) |
|||
`ATTR(info="Band-gap voltage of the base"); |
|||
parameter real VGC = 1.18 from [0.1:inf) |
|||
`ATTR(info="Band-gap voltage of the collector"); |
|||
parameter real VGJ = 1.15 from [0.1:inf) |
|||
`ATTR(info="Band-gap voltage recombination emitter-base junction"); |
|||
parameter real VGZEB = 1.15 from [0.1:inf) |
|||
`ATTR(info="Band-gap voltage at Tref of Zener effect emitter-base junction"); |
|||
parameter real AVGEB = 4.73e-4 from (-inf:inf) |
|||
`ATTR(info="Temperature coefficient band-gap voltage for Zener effect emitter-base junction"); |
|||
parameter real TVGEB = 636.0 from [0.0:inf) |
|||
`ATTR(info="Temperature coefficient band-gap voltage for Zener effect emitter-base junction"); |
|||
parameter real DVGTE = 0.05 |
|||
`ATTR(info="Band-gap voltage difference of emitter stored charge"); |
|||
parameter real DAIS = 0.0 |
|||
`ATTR(info="Fine tuning of temperature dependence of C-E saturation current"); |
|||
`ifdef SUBSTRATE |
|||
`MPIcc( EXSUB ,0 ,"" ,0 ,1 ,"Flag for extended modelling of substrate currents" ) |
|||
`endif |
|||
|
|||
parameter real AF = 2.0 from [0.01:inf) |
|||
`ATTR(info="Exponent of the Flicker-noise"); |
|||
parameter real KF = 20.0p from [0.0:inf) |
|||
`ATTR(info="Flicker-noise coefficient of the ideal base current"); |
|||
parameter real KFN = 20.0p from [0.0:inf) |
|||
`ATTR(info="Flicker-noise coefficient of the non-ideal base current"); |
|||
parameter integer KAVL = 0 from [0:1] |
|||
`ATTR(info="Switch for white noise contribution due to avalanche"); |
|||
`MPRoo( IS ,22.0a ,"" ,0.0 ,inf ,"Collector-emitter saturation current" ) |
|||
`MPRco( IK ,0.1 ,"" ,1.0p ,inf ,"Collector-emitter high injection knee current" ) |
|||
`MPRco( VER ,2.5 ,"" ,0.01 ,inf ,"Reverse Early voltage" ) |
|||
`MPRco( VEF ,44.0 ,"" ,0.01 ,inf ,"Forward Early voltage" ) |
|||
`MPRco( BF ,215.0 ,"" ,0.1m ,inf ,"Ideal forward current gain" ) |
|||
`MPRco( IBF ,2.7f ,"" ,0.0 ,inf ,"Saturation current of the non-ideal forward base current" ) |
|||
`MPRco( MLF ,2.0 ,"" ,0.1 ,inf ,"Non-ideality factor of the non-ideal forward base current" ) |
|||
`MPRcc( XIBI ,0.0 ,"" ,0.0 ,1.0 ,"Part of ideal base current that belongs to the sidewall" ) |
|||
`MPRco( IZEB ,0.0 ,"" ,0.0 ,inf ,"Pre-factor of emitter-base Zener tunneling current" ) |
|||
`MPRco( NZEB ,22.0 ,"" ,0.0 ,inf ,"Coefficient of emitter-base Zener tunneling current" ) |
|||
`MPRco( BRI ,7.0 ,"" ,1.0e-4 ,inf ,"Ideal reverse current gain" ) |
|||
`MPRco( IBR ,1.0f ,"" ,0.0 ,inf ,"Saturation current of the non-ideal reverse base current" ) |
|||
`MPRnb( VLR ,0.2 ,"" ,"Cross-over voltage of the non-ideal reverse base current" ) |
|||
`MPRcc( XEXT ,0.63 ,"" ,0.0 ,1.0 ,"Part of currents and charges that belong to extrinsic region" ) |
|||
`MPRco( WAVL ,1.1u ,"" ,1.0n ,inf ,"Epilayer thickness used in weak-avalanche model" ) |
|||
`MPRco( VAVL ,3.0 ,"" ,0.01 ,inf ,"Voltage determining curvature of avalanche current" ) |
|||
`MPRco( SFH ,0.3 ,"" ,0.0 ,inf ,"Current spreading factor of avalanche model when EXAVL=1" ) |
|||
`MPRco( RE ,5.0 ,"" ,1.0m ,inf ,"Emitter resistance" ) |
|||
`MPRco( RBC ,23.0 ,"" ,1.0m ,inf ,"Constant part of the base resistance" ) |
|||
`MPRco( RBV ,18.0 ,"" ,1.0m ,inf ,"Zero-bias value of the variable part of the base resistance" ) |
|||
`MPRco( RCC ,12.0 ,"" ,1.0m ,inf ,"Constant part of the collector resistance" ) |
|||
`MPRco( RCV ,150.0 ,"" ,1.0m ,inf ,"Resistance of the un-modulated epilayer" ) |
|||
`MPRco( SCRCV ,1250.0 ,"" ,1.0m ,inf ,"Space charge resistance of the epilayer" ) |
|||
`MPRco( IHC ,4.0m ,"" ,1.0p ,inf ,"Critical current for velocity saturation in the epilayer" ) |
|||
`MPRco( AXI ,0.3 ,"" ,0.02 ,inf ,"Smoothness parameter for the onset of quasi-saturation" ) |
|||
`MPRco( CJE ,73.0f ,"" ,0.0 ,inf ,"Zero-bias emitter-base depletion capacitance" ) |
|||
`MPRco( VDE ,0.95 ,"" ,0.05 ,inf ,"Emitter-base diffusion voltage" ) |
|||
`MPRco( PE ,0.4 ,"" ,0.01 ,0.99 ,"Emitter-base grading coefficient" ) |
|||
`MPRcc( XCJE ,0.4 ,"" ,0.0 ,1.0 ,"Sidewall fraction of the emitter-base depletion capacitance" ) |
|||
`MPRco( CBEO ,0.0 ,"" ,0.0 ,inf ,"Emitter-base overlap capacitance" ) |
|||
`MPRco( CJC ,78.0f ,"" ,0.0 ,inf ,"Zero-bias collector-base depletion capacitance" ) |
|||
`MPRco( VDC ,0.68 ,"" ,0.05 ,inf ,"Collector-base diffusion voltage" ) |
|||
`MPRco( PC ,0.5 ,"" ,0.01 ,0.99 ,"Collector-base grading coefficient" ) |
|||
`MPRco( XP ,0.35 ,"" ,0.0 ,0.99 ,"Constant part of Cjc" ) |
|||
`MPRco( MC ,0.5 ,"" ,0.0 ,1.0 ,"Coefficient for current modulation of CB depletion capacitance" ) |
|||
`MPRcc( XCJC ,32.0m ,"" ,0.0 ,1.0 ,"Fraction of CB depletion capacitance under the emitter" ) |
|||
`MPRco( RCBLX ,0.001 ,"" ,0.001 ,inf ,"Resistance Collector Buried Layer eXtrinsic" ) |
|||
`MPRco( RCBLI ,0.001 ,"" ,0.001 ,inf ,"Resistance Collector Buried Layer Intrinsic" ) |
|||
`MPRco( CBCO ,0.0 ,"" ,0.0 ,inf ,"Collector-base overlap capacitance" ) |
|||
`MPRco( MTAU ,1.0 ,"" ,0.1 ,inf ,"Non-ideality factor of the emitter stored charge" ) |
|||
`MPRco( TAUE ,2.0p ,"" ,0.0 ,inf ,"Minimum transit time of stored emitter charge" ) |
|||
`MPRoo( TAUB ,4.2p ,"" ,0.0 ,inf ,"Transit time of stored base charge" ) |
|||
`MPRco( TEPI ,41.0p ,"" ,0.0 ,inf ,"Transit time of stored epilayer charge" ) |
|||
`MPRco( TAUR ,520.0p ,"" ,0.0 ,inf ,"Transit time of reverse extrinsic stored base charge" ) |
|||
`MPRnb( DEG ,0.0 ,"" ,"Bandgap difference over the base" ) |
|||
`MPRco( XREC ,0.0 ,"" ,0.0 ,inf ,"Pre-factor of the recombination part of Ib1" ) |
|||
`MPRcc( XQB ,`one_third ,"" ,0.0 ,1.0 ,"Emitter-fraction of base diffusion charge" ) |
|||
`MPRnb( AQBO ,0.3 ,"" ,"Temperature coefficient of the zero-bias base charge" ) |
|||
`MPRnb( AE ,0.0 ,"" ,"Temperature coefficient of the resistivity of the emitter" ) |
|||
`MPRnb( AB ,1.0 ,"" ,"Temperature coefficient of the resistivity of the base" ) |
|||
`MPRnb( AEPI ,2.5 ,"" ,"Temperature coefficient of the resistivity of the epilayer" ) |
|||
`MPRnb( AEX ,0.62 ,"" ,"Temperature coefficient of the resistivity of the extrinsic base" ) |
|||
`MPRnb( AC ,2.0 ,"" ,"Temperature coefficient of the resistivity of the collector contact" ) |
|||
`MPRco( ACBL ,2.0 ,"" ,0.0 ,inf ,"Temperature coefficient of the resistivity of the collector buried layer" ) |
|||
`MPRnb( DVGBF ,50.0m ,"" ,"Band-gap voltage difference of the forward current gain" ) |
|||
`MPRnb( DVGBR ,45.0m ,"" ,"Band-gap voltage difference of the reverse current gain" ) |
|||
`MPRco( VGB ,1.17 ,"" ,0.1 ,inf ,"Band-gap voltage of the base" ) |
|||
`MPRco( VGC ,1.18 ,"" ,0.1 ,inf ,"Band-gap voltage of the collector" ) |
|||
`MPRco( VGJ ,1.15 ,"" ,0.1 ,inf ,"Band-gap voltage recombination emitter-base junction" ) |
|||
`MPRco( VGZEB ,1.15 ,"" ,0.1 ,inf ,"Band-gap voltage at Tref of Zener effect emitter-base junction" ) |
|||
`MPRoo( AVGEB ,4.73e-4 ,"" ,-inf ,inf ,"Temperature coefficient band-gap voltage for Zener effect emitter-base junction" ) |
|||
`MPRco( TVGEB ,636.0 ,"" ,0.0 ,inf ,"Temperature coefficient band-gap voltage for Zener effect emitter-base junction" ) |
|||
`MPRnb( DVGTE ,0.05 ,"" ,"Band-gap voltage difference of emitter stored charge" ) |
|||
`MPRnb( DAIS ,0.0 ,"" ,"Fine tuning of temperature dependence of C-E saturation current" ) |
|||
`MPRco( AF ,2.0 ,"" ,0.01 ,inf ,"Exponent of the Flicker-noise" ) |
|||
`MPRco( KF ,20.0p ,"" ,0.0 ,inf ,"Flicker-noise coefficient of the ideal base current" ) |
|||
`MPRco( KFN ,20.0p ,"" ,0.0 ,inf ,"Flicker-noise coefficient of the non-ideal base current" ) |
|||
`MPIcc( KAVL ,0 ,"" ,0 ,1 ,"Switch for white noise contribution due to avalanche" ) |
|||
`MPIcc( KC ,0 ,"" ,0 ,2 ,"Switch for RF correlation noise model selection" ) |
|||
`MPRcc( KE ,0.0 ,"" ,0.0 ,1.0 ,"Fraction of QE in excess phase shift" ) |
|||
`MPRcc( FTAUN ,0.0 ,"" ,0.0 ,1.0 ,"Fraction of noise transit time to total transit time" ) |
|||
|
|||
`ifdef SUBSTRATE |
|||
parameter real ISS = 48.0a from [0.0:inf) |
|||
`ATTR(info="Base-substrate saturation current"); |
|||
parameter real ICSS = -1.0 from (-inf:inf) |
|||
`ATTR(info="Collector-substrate ideal saturation current"); |
|||
parameter real IKS = 250.0u from [1.0p:inf) |
|||
`ATTR(info="Base-substrate high injection knee current"); |
|||
parameter real CJS = 315.0f from [0:inf) |
|||
`ATTR(info="Zero-bias collector-substrate depletion capacitance"); |
|||
parameter real VDS = 0.62 from (0.05:inf) |
|||
`ATTR(info="Collector-substrate diffusion voltage"); |
|||
parameter real PS = 0.34 from (0.01:0.99) |
|||
`ATTR(info="Collector-substrate grading coefficient"); |
|||
parameter real VGS = 1.20 from [0.1:inf) |
|||
`ATTR(info="band-gap voltage of the substrate"); |
|||
parameter real AS = 1.58 |
|||
`ATTR(info="Substrate temperature coefficient"); |
|||
parameter real ASUB = 2.0 |
|||
`ATTR(info="Temperature coefficient for mobility of minorities in the substrate"); |
|||
`MPRco( ISS ,48.0a ,"" ,0.0 ,inf ,"Base-substrate saturation current" ) |
|||
`MPRoo( ICSS ,-1.0 ,"" ,-inf ,inf ,"Collector-substrate ideal saturation current" ) |
|||
`MPRco( IKS ,250.0u ,"" ,1.0p ,inf ,"Base-substrate high injection knee current" ) |
|||
`MPRco( CJS ,315.0f ,"" ,0.0 ,inf ,"Zero-bias collector-substrate depletion capacitance" ) |
|||
`MPRoo( VDS ,0.62 ,"" ,0.05 ,inf ,"Collector-substrate diffusion voltage" ) |
|||
`MPRoo( PS ,0.34 ,"" ,0.01 ,0.99 ,"Collector-substrate grading coefficient" ) |
|||
`MPRco( VGS ,1.20 ,"" ,0.1 ,inf ,"Band-gap voltage of the substrate" ) |
|||
`MPRnb( AS ,1.58 ,"" ,"Substrate temperature coefficient" ) |
|||
`MPRnb( ASUB ,2.0 ,"" ,"Temperature coefficient for mobility of minorities in the substrate" ) |
|||
`endif |
|||
|
|||
`ifdef SELFHEATING |
|||
parameter real RTH = 300.0 from (0.0:inf) |
|||
`ATTR(info="Thermal resistance"); |
|||
parameter real CTH = 3.0n from [0.0:inf) |
|||
`ATTR(info="Thermal capacitance"); |
|||
parameter real ATH = 0.0 |
|||
`ATTR(info="Temperature coefficient of the thermal resistance"); |
|||
`MPRoo( RTH ,300.0 ,"" ,0.0 ,inf ,"Thermal resistance" ) |
|||
`MPRco( CTH ,3.0n ,"" ,0.0 ,inf ,"Thermal capacitance" ) |
|||
`MPRnb( ATH ,0.0 ,"" ,"Temperature coefficient of the thermal resistance" ) |
|||
`endif |
|||
|
|||
parameter real MULT = 1.0 from (0.0:inf) |
|||
`ATTR(info="Multiplication factor"); |
|||
`MPRoo( MULT ,1.0 ,"" ,0.0 ,inf ,"Multiplication factor" ) |
|||
`MPIty( TYPE ,1 ,"" ,"Flag for NPN (1) or PNP (-1) transistor type" ) |
|||
`MPRoc( GMIN ,1.0e-13 ,"" ,0.0 ,1e-10 ,"Minimum conductance" ) |
|||
|
|||
|
|||
|
|||
// Non-standard (additional) model parameters |
|||
// (introduced for the users' convenience) |
|||
|
|||
`ifdef insideADMS |
|||
parameter integer TYPE = 1 from [-1:1] |
|||
`ATTR(info="Flag for NPN (1) or PNP (-1) transistor type"); |
|||
`else |
|||
parameter integer TYPE = 1 from [-1:1] exclude 0; |
|||
`endif |
|||
parameter real GMIN = 1.0e-13 from (0:1e-10] |
|||
`ATTR(info="Minimum conductance"); |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue