Make veriloga models compliant with Language Reference Manual. They will not compile with --adms flag.
This commit is contained in:
parent
e117c389b3
commit
55a87d1b81
|
|
@ -1,8 +1,8 @@
|
|||
// HICUM Level_0 Version_1.12: A Verilog-A description
|
||||
// (A simplified version of HICUM Level2 model for BJT)
|
||||
// (A simplified version of HICUM Level2 model for BJT)
|
||||
// ## It is modified after the first version of HICUM/L0 code ##
|
||||
|
||||
// 12/08: Modifications for ngspice and adms2.2.7 DW
|
||||
// 12/08: Modifications for ngspice and adms2.2.7 DW
|
||||
// Changed VT0 in Vt0 to prevent conflict in compiled C version.
|
||||
// Made a temporary variable cjei_i for cjei output purpose only.
|
||||
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
// Presently this verilog code permits a minimum of 1 milli-Ohm resistance for any
|
||||
// series resistance as well as for thermal resistance RTH. If any of the resistance
|
||||
// values drops below this minimum value, the corresponding nodes are shorted with
|
||||
// zero voltage contribution. We want the model compilers/simulators deal this
|
||||
// zero voltage contribution. We want the model compilers/simulators deal this
|
||||
// situation in such a manner that the corresponding node is COLLAPSED.
|
||||
// We expect that the simulators should permit current contribution statement
|
||||
// for any branch with resistance value more than (or equal to) 1 milli-Ohm without
|
||||
|
|
@ -39,12 +39,8 @@
|
|||
|
||||
`ifdef insideADMS
|
||||
`define P(p) (*p*)
|
||||
`define PGIVEN(p) $given(p)
|
||||
`define INITIAL_MODEL @(initial_model)
|
||||
`else
|
||||
`define P(p)
|
||||
`define PGIVEN(p) p
|
||||
`define INITIAL_MODEL @(initial_step)
|
||||
`endif
|
||||
|
||||
|
||||
|
|
@ -146,7 +142,7 @@
|
|||
end else begin\
|
||||
`QJMODF(vj,cj0,vd,z,2.4,qjf)\
|
||||
end
|
||||
|
||||
|
||||
//Temperature dependence of depletion capacitance parameters
|
||||
`define TMPHICJ(cj0,vd,z,vg,cj0_t,vd_t)\
|
||||
arg = 0.5*vd/Vt0;\
|
||||
|
|
@ -166,7 +162,7 @@
|
|||
end\
|
||||
le = le*limexp(arg);
|
||||
|
||||
// IDEAL DIODE (WITHOUT CAPACITANCE):
|
||||
// IDEAL DIODE (WITHOUT CAPACITANCE):
|
||||
// conductance not calculated
|
||||
// INPUT:
|
||||
// IS, IST : saturation currents (model parameter related)
|
||||
|
|
@ -193,24 +189,24 @@
|
|||
end else begin\
|
||||
Iz = 0.0;\
|
||||
end
|
||||
|
||||
|
||||
module hic0_full (c,b,e,s,tnode);
|
||||
|
||||
|
||||
//Node definitions
|
||||
|
||||
inout c,b,e,s,tnode;
|
||||
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 ci `P(info="internal collector node");
|
||||
electrical bi `P(info="internal base node");
|
||||
electrical ei `P(info="internal emitter node");
|
||||
electrical tnode `P(info="local temperature rise node");
|
||||
|
||||
|
||||
|
||||
module hic0_full (c,b,e,s,tnode);
|
||||
|
||||
|
||||
//Node definitions
|
||||
|
||||
inout c,b,e,s,tnode;
|
||||
(*info="external collector node"*)electrical c;
|
||||
(*info="external base node"*)electrical b;
|
||||
(*info="external emitter node"*)electrical e;
|
||||
(*info="external substrate node"*)electrical s;
|
||||
(*info="internal collector node"*)electrical ci;
|
||||
(*info="internal base node"*)electrical bi;
|
||||
(*info="internal emitter node"*)electrical ei;
|
||||
(*info="local temperature rise node"*)electrical tnode;
|
||||
|
||||
|
||||
//Branch definitions
|
||||
branch (ci,c) br_cic_i;
|
||||
branch (ci,c) br_cic_v;
|
||||
|
|
@ -219,143 +215,143 @@ module hic0_full (c,b,e,s,tnode);
|
|||
branch (bi,ei) br_biei;
|
||||
branch (bi,ci) br_bici;
|
||||
branch (ci,ei) br_ciei;
|
||||
branch (b,bi) br_bbi_i;
|
||||
branch (b,bi) br_bbi_v;
|
||||
branch (b,bi) br_bbi_i;
|
||||
branch (b,bi) br_bbi_v;
|
||||
branch (b,e) br_be;
|
||||
branch (b,ci) br_bci;
|
||||
branch (b,s) br_bs;
|
||||
branch (s,ci) br_sci;
|
||||
branch (tnode ) br_sht;
|
||||
|
||||
//
|
||||
// Parameter initialization with default values
|
||||
|
||||
// Collector current
|
||||
parameter real is = 1.0e-16 from [0:1] `P(spice:name="is" info="(Modified) saturation current" m:factor="yes" unit="A");
|
||||
parameter real mcf = 1.00 from (0:10] `P(spice:name="mcf" info="Non-ideality coefficient of forward collector current");
|
||||
parameter real mcr = 1.00 from (0:10] `P(spice:name="mcr" info="Non-ideality coefficient of reverse collector current");
|
||||
parameter real vef = `INF from (0:`INF] `P(spice:name="vef" info="forward Early voltage (normalization volt.)" unit="V" default:value="infinity");
|
||||
parameter real iqf = `INF from (0:`INF] `P(spice:name="iqf" info="forward d.c. high-injection toll-off current" unit="A" m:factor="yes" default:value="infinity");
|
||||
parameter real iqr = `INF from (0:`INF] `P(spice:name="iqr" info="inverse d.c. high-injection roll-off current" unit="A" m:factor="yes" default:value="infinity");
|
||||
parameter real iqfh = `INF from (0:`INF] `P(spice:name="iqfh" info="high-injection correction current" unit="A" m:factor="yes");
|
||||
parameter real tfh = 0.0 from [0:`INF) `P(spice:name="tfh" info="high-injection correction factor" test:value="2e-9" m:factor="yes");
|
||||
|
||||
// Base current
|
||||
parameter real ibes = 1e-18 from [0:1] `P(spice:name="ibes" info="BE saturation current" unit="A" m:factor="yes");
|
||||
parameter real mbe = 1.0 from (0:10] `P(spice:name="mbe" info="BE non-ideality factor");
|
||||
parameter real ires = 0.0 from [0:1] `P(spice:name="ires" info="BE recombination saturation current" test:value="1e-16" unit="A" m:factor="yes");
|
||||
parameter real mre = 2.0 from (0:10] `P(spice:name="mre" info="BE recombination non-ideality factor");
|
||||
parameter real ibcs = 0.0 from [0:1] `P(spice:name="ibcs" info="BC saturation current" test:value="1e-16" unit="A" m:factor="yes");
|
||||
parameter real mbc = 1.0 from (0:10] `P(spice:name="mbc" info="BC non-ideality factor");
|
||||
|
||||
// BE depletion cap
|
||||
parameter real cje0 = 1.0e-20 from (0:`INF) `P(spice:name="cje0" info="Zero-bias BE depletion capacitance" unit="F" test:value="2e-14" m:factor="yes");
|
||||
parameter real vde = 0.9 from (0:10] `P(spice:name="vde" info="BE built-in voltage" unit="V");
|
||||
parameter real ze = 0.5 from (0:1] `P(spice:name="ze" info="BE exponent factor");
|
||||
parameter real aje = 2.5 from [1:`INF) `P(spice:name="aje" info="Ratio of maximum to zero-bias value");
|
||||
|
||||
// Transit time
|
||||
parameter real t0 = 0.0 from [0:`INF) `P(spice:name="t0" info="low current transit time at Vbici=0" test:value="5e-12" unit="s");
|
||||
parameter real dt0h = 0.0; // from [0:`INF) `P(spice:name="dt0h" info="Base width modulation contribution" test:value="2e-12" unit="s");
|
||||
parameter real tbvl = 0.0 from [0:`INF) `P(spice:name="tbvl" info="SCR width modulation contribution" test:value="4e-12" unit="s");
|
||||
parameter real tef0 = 0.0 from [0:`INF) `P(spice:name="tef0" info="Storage time in neutral emitter" test:value="1e-12" unit="s");
|
||||
parameter real gte = 1.0 from (0:10] `P(spice:name="gte" info="Exponent factor for emmiter transit time");
|
||||
parameter real thcs = 0.0 from [0:`INF) `P(spice:name="thcs" info="Saturation time at high current densities" test:value="3e-11" unit="s");
|
||||
parameter real ahc = 0.1 from (0:10] `P(spice:name="ahc" info="Smoothing facor for current dependence");
|
||||
parameter real tr = 0.0 from [0:`INF) `P(spice:name="tr" info="Storage time at inverse operation" unit="s");
|
||||
|
||||
// Critical current
|
||||
parameter real rci0 = 150 from (0:`INF) `P(spice:name="rci0" info="Low-field collector resistance under emitter" test:value="50" unit="Ohm" m:inverse_factor="yes");
|
||||
parameter real vlim = 0.5 from (0:10] `P(spice:name="vlim" info="Voltage dividing ohmic and satur.region" unit="V");
|
||||
parameter real vpt = 100 from (0:100] `P(spice:name="vpt" info="Punch-through voltage" test:value="10" unit="V" default="infinity");
|
||||
parameter real vces = 0.1 from [0:1] `P(spice:name="vces" info="Saturation voltage" unit="V");
|
||||
|
||||
// BC depletion cap intern
|
||||
parameter real cjci0 = 1.0e-20 from (0:`INF) `P(spice:name="cjci0" info="Total zero-bias BC depletion capacitance" test:value="1e-15" unit="F" m:factor="yes");
|
||||
parameter real vdci = 0.7 from (0:10] `P(spice:name="vdci" info="BC built-in voltage" test:value="0.7" unit="V");
|
||||
parameter real zci = 0.333 from (0:1] `P(spice:name="zci" info="BC exponent factor" test:value="0.4");
|
||||
parameter real vptci = 100 from (0:100] `P(spice:name="vptci" info="Punch-through voltage of BC junction" test:value="50" unit="V");
|
||||
|
||||
// BC depletion cap extern
|
||||
parameter real cjcx0 = 1.0e-20 from [0:`INF) `P(spice:name="cjcx0" info="Zero-bias external BC depletion capacitance" unit="F" test:value="1e-15" m:factor="yes");
|
||||
parameter real vdcx = 0.7 from (0:10] `P(spice:name="vdcx" info="External BC built-in voltage" unit="V");
|
||||
parameter real zcx = 0.333 from (0:1] `P(spice:name="zcx" info="External BC exponent factor");
|
||||
parameter real vptcx = 100 from (0:100] `P(spice:name="vptcx" info="Punch-through voltage" unit="V" test:value="5.0" default="infinity");
|
||||
parameter real fbc = 1.0 from [0:1] `P(spice:name="fbc" info="Split factor = Cjci0/Cjc0" test:value="0.5");
|
||||
|
||||
// Base resistance
|
||||
parameter real rbi0 = 0.0 from [0:`INF) `P(spice:name="rbi0" info="Internal base resistance at zero-bias" test:value="100" unit="Ohm" m:inverse_factor="yes");
|
||||
parameter real vr0e = 2.5 from (0:`INF] `P(spice:name="vr0e" info="forward Early voltage (normalization volt.)" unit="V");
|
||||
parameter real vr0c = `INF from (0:`INF] `P(spice:name="vr0c" info="forward Early voltage (normalization volt.)" unit="V" default="infinity" test:value="25.0");
|
||||
parameter real fgeo = 0.656 from [0:`INF] `P(spice:name="fgeo" info="Geometry factor" test:value="0.73");
|
||||
|
||||
// Series resistances
|
||||
parameter real rbx = 0.0 from [0:`INF) `P(spice:name="rbx" info="External base series resistance" test:value="8.8" unit="Ohm" m:inverse_factor="yes");
|
||||
parameter real rcx = 0.0 from [0:`INF) `P(spice:name="rcx" info="Emitter series resistance" test:value="12.5" unit="Ohm" m:inverse_factor="yes");
|
||||
parameter real re = 0.0 from [0:`INF) `P(spice:name="re" info="External collector series resistance" test:value="9.16" unit="Ohm" m:inverse_factor="yes");
|
||||
|
||||
// Substrate transfer current, diode current and cap
|
||||
parameter real itss = 0.0 from [0:1.0] `P(spice:name="itss" info="Substrate transistor transfer saturation current" unit="A" test:value="1e-17" m:factor="yes");
|
||||
parameter real msf = 1.0 from (0:10] `P(spice:name="msf" info="Substrate transistor transfer current non-ideality factor");
|
||||
parameter real iscs = 0.0 from [0:1.0] `P(spice:name="iscs" info="SC saturation current" unit="A" test:value="1e-17" m:factor="yes");
|
||||
parameter real msc = 1.0 from (0:10] `P(spice:name="msc" info="SC non-ideality factor");
|
||||
parameter real cjs0 = 1.0e-20 from [0:`INF) `P(spice:name="cjs0" info="Zero-bias SC depletion capacitance" unit="F" test:value="1e-15" m:factor="yes");
|
||||
parameter real vds = 0.3 from (0:10] `P(spice:name="vds" info="SC built-in voltage" unit="V");
|
||||
parameter real zs = 0.3 from (0:1] `P(spice:name="zs" info="External SC exponent factor");
|
||||
parameter real vpts = 100 from (0:100] `P(spice:name="vpts" info="SC punch-through voltage" unit="V" test:value="5.0" default="infinity");
|
||||
|
||||
// Parasitic caps
|
||||
parameter real cbcpar = 0.0 from [0:`INF) `P(spice:name="cbcpar" info="Collector-base isolation (overlap) capacitance" unit="F" m:factor="yes" test:value="1e-15");
|
||||
parameter real cbepar = 0.0 from [0:`INF) `P(spice:name="cbepar" info="Emitter-base oxide capacitance" unit="F" m:factor="yes" test:value="2e-15");
|
||||
|
||||
// BC avalanche current
|
||||
parameter real eavl = 0.0 from [0:inf) `P(spice:name="eavl" info="Exponent factor" test:value="1e-14");
|
||||
parameter real kavl = 0.0 from [0:`INF) `P(spice:name="kavl" info="Prefactor" test:value="1.19");
|
||||
|
||||
// Flicker noise
|
||||
parameter real kf = 0.0 from [0:`INF) `P(spice:name="kf" info="flicker noise coefficient" unit="M^(1-AF)");
|
||||
parameter real af = 2.0 from (0:10] `P(spice:name="af" info="flicker noise exponent factor");
|
||||
|
||||
// Temperature dependance
|
||||
parameter real vgb = 1.2 from (0:10] `P(spice:name="vgb" info="Bandgap-voltage" unit="V" test:value="1.17");
|
||||
parameter real vge = 1.17 from (0:10] `P(spice:name="vge" info="Effective emitter bandgap-voltage" unit="V" test:value="1.07");
|
||||
parameter real vgc = 1.17 from (0:10] `P(spice:name="vgc" info="Effective collector bandgap-voltage" unit="V" test:value="1.14");
|
||||
parameter real vgs = 1.17 from (0:10] `P(spice:name="vgs" info="Effective substrate bandgap-voltage" unit="V" test:value="1.17");
|
||||
parameter real f1vg =-1.02377e-4 `P(spice:name="f1vg" info="Coefficient K1 in T-dependent bandgap equation" unit="V/K");
|
||||
parameter real f2vg = 4.3215e-4 `P(spice:name="f2vg" info="Coefficient K2 in T-dependent bandgap equation" unit="V/K");
|
||||
parameter real alt0 = 0.0 `P(spice:name="alt0" info="Frist-order TC of tf0" unit="1/K");
|
||||
parameter real kt0 = 0.0 `P(spice:name="kt0" info="Second-order TC of tf0" unit="1/K^2");
|
||||
parameter real zetact = 3.0 `P(spice:name="zetact" info="Exponent coefficient in transfer current temperature dependence" test:value="3.5");
|
||||
parameter real zetabet = 3.5 `P(spice:name="zetabet" info="Exponent coefficient in BE junction current temperature dependence" test:value="4.0");
|
||||
parameter real zetaci = 0.0 `P(spice:name="zetaci" info="TC of epi-collector diffusivity" test:value="1.6");
|
||||
parameter real alvs = 0.0 `P(spice:name="alvs" info="Relative TC of satur.drift velocity" unit="1/K" test:value="1e-3");
|
||||
parameter real alces = 0.0 `P(spice:name="alces" info="Relative TC of vces" unit="1/K" test:value="4e-4");
|
||||
parameter real zetarbi = 0.0 `P(spice:name="zetarbi" info="TC of internal base resistance" test:value="0.6");
|
||||
parameter real zetarbx = 0.0 `P(spice:name="zetarbx" info="TC of external base resistance" test:value="0.2");
|
||||
parameter real zetarcx = 0.0 `P(spice:name="zetarcx" info="TC of external collector resistance" test:value="0.2");
|
||||
parameter real zetare = 0.0 `P(spice:name="zetare" info="TC of emitter resistances");
|
||||
parameter real alkav = 0.0 `P(spice:name="alkav" info="TC of avalanche prefactor" unit="1/K");
|
||||
parameter real aleav = 0.0 `P(spice:name="aleav" info="TC of avalanche exponential factor" unit="1/K");
|
||||
|
||||
// Self-heating
|
||||
parameter integer flsh = 0 from [0:2] `P(spice:name="flsh" info="Flag for self-heating calculation" test:value="2");
|
||||
parameter real rth = 0.0 from [0:`INF) `P(spice:name="rth" info="Thermal resistance" test:value="200.0" unit="K/W" m:inverse_factor="yes");
|
||||
parameter real cth = 0.0 from [0:`INF) `P(spice:name="cth" info="Thermal capacitance" test:value="0.1" unit="Ws/K" m:factor="yes");
|
||||
|
||||
branch (tnode ) br_sht;
|
||||
|
||||
//
|
||||
// Parameter initialization with default values
|
||||
|
||||
// Collector current
|
||||
(*spice_name="is", info="(Modified) saturation current", m_factor="yes", unit="A"*) parameter real is = 1.0e-16 from [0:1];
|
||||
(*spice_name="mcf", info="Non-ideality coefficient of forward collector current"*) parameter real mcf = 1.00 from (0:10];
|
||||
(*spice_name="mcr", info="Non-ideality coefficient of reverse collector current"*) parameter real mcr = 1.00 from (0:10];
|
||||
(*spice_name="vef", info="forward Early voltage (normalization volt.)", unit="V", default_value="infinity"*) parameter real vef = `INF from (0:`INF];
|
||||
(*spice_name="iqf", info="forward d.c. high-injection toll-off current", unit="A", m_factor="yes", default_value="infinity"*) parameter real iqf = `INF from (0:`INF];
|
||||
(*spice_name="iqr", info="inverse d.c. high-injection roll-off current", unit="A", m_factor="yes", default_value="infinity"*) parameter real iqr = `INF from (0:`INF];
|
||||
(*spice_name="iqfh", info="high-injection correction current", unit="A", m_factor="yes"*) parameter real iqfh = `INF from (0:`INF];
|
||||
(*spice_name="tfh", info="high-injection correction factor", test_value="2e-9", m_factor="yes"*) parameter real tfh = 0.0 from [0:`INF);
|
||||
|
||||
// Base current
|
||||
(*spice_name="ibes", info="BE saturation current", unit="A", m_factor="yes"*) parameter real ibes = 1e-18 from [0:1];
|
||||
(*spice_name="mbe", info="BE non-ideality factor"*) parameter real mbe = 1.0 from (0:10];
|
||||
(*spice_name="ires", info="BE recombination saturation current", test_value="1e-16", unit="A", m_factor="yes"*) parameter real ires = 0.0 from [0:1];
|
||||
(*spice_name="mre", info="BE recombination non-ideality factor"*) parameter real mre = 2.0 from (0:10];
|
||||
(*spice_name="ibcs", info="BC saturation current", test_value="1e-16", unit="A", m_factor="yes"*) parameter real ibcs = 0.0 from [0:1];
|
||||
(*spice_name="mbc", info="BC non-ideality factor"*) parameter real mbc = 1.0 from (0:10];
|
||||
|
||||
// BE depletion cap
|
||||
(*spice_name="cje0", info="Zero-bias BE depletion capacitance", unit="F", test_value="2e-14", m_factor="yes"*) parameter real cje0 = 1.0e-20 from (0:`INF);
|
||||
(*spice_name="vde", info="BE built-in voltage", unit="V"*) parameter real vde = 0.9 from (0:10];
|
||||
(*spice_name="ze", info="BE exponent factor"*) parameter real ze = 0.5 from (0:1];
|
||||
(*spice_name="aje", info="Ratio of maximum to zero-bias value"*) parameter real aje = 2.5 from [1:`INF);
|
||||
|
||||
// Transit time
|
||||
(*spice_name="t0", info="low current transit time at Vbici=0", test_value="5e-12", unit="s"*) parameter real t0 = 0.0 from [0:`INF);
|
||||
(*spice_name="dt0h", info="Base width modulation contribution", test_value="2e-12", unit="s"*) parameter real dt0h = 0.0; // from [0:`INF) ;
|
||||
(*spice_name="tbvl", info="SCR width modulation contribution", test_value="4e-12", unit="s"*) parameter real tbvl = 0.0 from [0:`INF);
|
||||
(*spice_name="tef0", info="Storage time in neutral emitter", test_value="1e-12", unit="s"*) parameter real tef0 = 0.0 from [0:`INF);
|
||||
(*spice_name="gte", info="Exponent factor for emmiter transit time"*) parameter real gte = 1.0 from (0:10];
|
||||
(*spice_name="thcs", info="Saturation time at high current densities", test_value="3e-11", unit="s"*) parameter real thcs = 0.0 from [0:`INF);
|
||||
(*spice_name="ahc", info="Smoothing facor for current dependence"*) parameter real ahc = 0.1 from (0:10];
|
||||
(*spice_name="tr", info="Storage time at inverse operation", unit="s"*) parameter real tr = 0.0 from [0:`INF);
|
||||
|
||||
// Critical current
|
||||
(*spice_name="rci0", info="Low-field collector resistance under emitter", test_value="50", unit="Ohm", m_inverse_factor="yes"*) parameter real rci0 = 150 from (0:`INF);
|
||||
(*spice_name="vlim", info="Voltage dividing ohmic and satur.region", unit="V"*) parameter real vlim = 0.5 from (0:10];
|
||||
(*spice_name="vpt", info="Punch-through voltage", test_value="10", unit="V", default="infinity"*) parameter real vpt = 100 from (0:100];
|
||||
(*spice_name="vces", info="Saturation voltage", unit="V"*) parameter real vces = 0.1 from [0:1];
|
||||
|
||||
// BC depletion cap intern
|
||||
(*spice_name="cjci0", info="Total zero-bias BC depletion capacitance", test_value="1e-15", unit="F", m_factor="yes"*) parameter real cjci0 = 1.0e-20 from (0:`INF);
|
||||
(*spice_name="vdci", info="BC built-in voltage", test_value="0.7", unit="V"*) parameter real vdci = 0.7 from (0:10];
|
||||
(*spice_name="zci", info="BC exponent factor", test_value="0.4"*) parameter real zci = 0.333 from (0:1];
|
||||
(*spice_name="vptci", info="Punch-through voltage of BC junction", test_value="50", unit="V"*) parameter real vptci = 100 from (0:100];
|
||||
|
||||
// BC depletion cap extern
|
||||
(*spice_name="cjcx0", info="Zero-bias external BC depletion capacitance", unit="F", test_value="1e-15", m_factor="yes"*) parameter real cjcx0 = 1.0e-20 from [0:`INF);
|
||||
(*spice_name="vdcx", info="External BC built-in voltage", unit="V"*) parameter real vdcx = 0.7 from (0:10];
|
||||
(*spice_name="zcx", info="External BC exponent factor"*) parameter real zcx = 0.333 from (0:1];
|
||||
(*spice_name="vptcx", info="Punch-through voltage", unit="V", test_value="5.0", default="infinity"*) parameter real vptcx = 100 from (0:100];
|
||||
(*spice_name="fbc", info="Split factor = Cjci0/Cjc0", test_value="0.5"*) parameter real fbc = 1.0 from [0:1];
|
||||
|
||||
// Base resistance
|
||||
(*spice_name="rbi0", info="Internal base resistance at zero-bias", test_value="100", unit="Ohm", m_inverse_factor="yes"*) parameter real rbi0 = 0.0 from [0:`INF);
|
||||
(*spice_name="vr0e", info="forward Early voltage (normalization volt.)", unit="V"*) parameter real vr0e = 2.5 from (0:`INF];
|
||||
(*spice_name="vr0c", info="forward Early voltage (normalization volt.)", unit="V", default="infinity", test_value="25.0"*) parameter real vr0c = `INF from (0:`INF];
|
||||
(*spice_name="fgeo", info="Geometry factor", test_value="0.73"*) parameter real fgeo = 0.656 from [0:`INF];
|
||||
|
||||
// Series resistances
|
||||
(*spice_name="rbx", info="External base series resistance", test_value="8.8", unit="Ohm", m_inverse_factor="yes"*) parameter real rbx = 0.0 from [0:`INF);
|
||||
(*spice_name="rcx", info="Emitter series resistance", test_value="12.5", unit="Ohm", m_inverse_factor="yes"*) parameter real rcx = 0.0 from [0:`INF);
|
||||
(*spice_name="re", info="External collector series resistance", test_value="9.16", unit="Ohm", m_inverse_factor="yes"*) parameter real re = 0.0 from [0:`INF);
|
||||
|
||||
// Substrate transfer current, diode current and cap
|
||||
(*spice_name="itss", info="Substrate transistor transfer saturation current", unit="A", test_value="1e-17", m_factor="yes"*) parameter real itss = 0.0 from [0:1.0];
|
||||
(*spice_name="msf", info="Substrate transistor transfer current non-ideality factor"*) parameter real msf = 1.0 from (0:10];
|
||||
(*spice_name="iscs", info="SC saturation current", unit="A", test_value="1e-17", m_factor="yes"*) parameter real iscs = 0.0 from [0:1.0];
|
||||
(*spice_name="msc", info="SC non-ideality factor"*) parameter real msc = 1.0 from (0:10];
|
||||
(*spice_name="cjs0", info="Zero-bias SC depletion capacitance", unit="F", test_value="1e-15", m_factor="yes"*) parameter real cjs0 = 1.0e-20 from [0:`INF);
|
||||
(*spice_name="vds", info="SC built-in voltage", unit="V"*) parameter real vds = 0.3 from (0:10];
|
||||
(*spice_name="zs", info="External SC exponent factor"*) parameter real zs = 0.3 from (0:1];
|
||||
(*spice_name="vpts", info="SC punch-through voltage", unit="V", test_value="5.0", default="infinity"*) parameter real vpts = 100 from (0:100];
|
||||
|
||||
// Parasitic caps
|
||||
(*spice_name="cbcpar", info="Collector-base isolation (overlap) capacitance", unit="F", m_factor="yes", test_value="1e-15"*) parameter real cbcpar = 0.0 from [0:`INF);
|
||||
(*spice_name="cbepar", info="Emitter-base oxide capacitance", unit="F", m_factor="yes", test_value="2e-15"*) parameter real cbepar = 0.0 from [0:`INF);
|
||||
|
||||
// BC avalanche current
|
||||
(*spice_name="eavl", info="Exponent factor", test_value="1e-14"*) parameter real eavl = 0.0 from [0:inf);
|
||||
(*spice_name="kavl", info="Prefactor", test_value="1.19"*) parameter real kavl = 0.0 from [0:`INF);
|
||||
|
||||
// Flicker noise
|
||||
(*spice_name="kf", info="flicker noise coefficient", unit="M^(1-AF)"*) parameter real kf = 0.0 from [0:`INF);
|
||||
(*spice_name="af", info="flicker noise exponent factor"*) parameter real af = 2.0 from (0:10];
|
||||
|
||||
// Temperature dependance
|
||||
(*spice_name="vgb", info="Bandgap-voltage", unit="V", test_value="1.17"*) parameter real vgb = 1.2 from (0:10];
|
||||
(*spice_name="vge", info="Effective emitter bandgap-voltage", unit="V", test_value="1.07"*) parameter real vge = 1.17 from (0:10];
|
||||
(*spice_name="vgc", info="Effective collector bandgap-voltage", unit="V", test_value="1.14"*) parameter real vgc = 1.17 from (0:10];
|
||||
(*spice_name="vgs", info="Effective substrate bandgap-voltage", unit="V", test_value="1.17"*) parameter real vgs = 1.17 from (0:10];
|
||||
(*spice_name="f1vg", info="Coefficient K1 in T-dependent bandgap equation", unit="V/K"*) parameter real f1vg =-1.02377e-4;
|
||||
(*spice_name="f2vg", info="Coefficient K2 in T-dependent bandgap equation", unit="V/K"*) parameter real f2vg = 4.3215e-4;
|
||||
(*spice_name="alt0", info="Frist-order TC of tf0", unit="1/K"*) parameter real alt0 = 0.0;
|
||||
(*spice_name="kt0", info="Second-order TC of tf0", unit="1/K^2"*) parameter real kt0 = 0.0;
|
||||
(*spice_name="zetact", info="Exponent coefficient in transfer current temperature dependence", test_value="3.5"*) parameter real zetact = 3.0;
|
||||
(*spice_name="zetabet", info="Exponent coefficient in BE junction current temperature dependence", test_value="4.0"*) parameter real zetabet = 3.5;
|
||||
(*spice_name="zetaci", info="TC of epi-collector diffusivity", test_value="1.6"*) parameter real zetaci = 0.0;
|
||||
(*spice_name="alvs", info="Relative TC of satur.drift velocity", unit="1/K", test_value="1e-3"*) parameter real alvs = 0.0;
|
||||
(*spice_name="alces", info="Relative TC of vces", unit="1/K", test_value="4e-4"*) parameter real alces = 0.0;
|
||||
(*spice_name="zetarbi", info="TC of internal base resistance", test_value="0.6"*) parameter real zetarbi = 0.0;
|
||||
(*spice_name="zetarbx", info="TC of external base resistance", test_value="0.2"*) parameter real zetarbx = 0.0;
|
||||
(*spice_name="zetarcx", info="TC of external collector resistance", test_value="0.2"*) parameter real zetarcx = 0.0;
|
||||
(*spice_name="zetare", info="TC of emitter resistances"*) parameter real zetare = 0.0;
|
||||
(*spice_name="alkav", info="TC of avalanche prefactor", unit="1/K"*) parameter real alkav = 0.0;
|
||||
(*spice_name="aleav", info="TC of avalanche exponential factor", unit="1/K"*) parameter real aleav = 0.0;
|
||||
|
||||
// Self-heating
|
||||
(*spice_name="flsh", info="Flag for self-heating calculation", test_value="2"*) parameter integer flsh = 0 from [0:2];
|
||||
(*spice_name="rth", info="Thermal resistance", test_value="200.0", unit="K/W", m_inverse_factor="yes"*) parameter real rth = 0.0 from [0:`INF);
|
||||
(*spice_name="cth", info="Thermal capacitance", test_value="0.1", unit="Ws/K", m_factor="yes"*) parameter real cth = 0.0 from [0:`INF);
|
||||
|
||||
// Transistor type
|
||||
parameter integer npn = 1 from [0:1] `P(spice:isflag="yes" info="model type flag for npn" );
|
||||
parameter integer pnp = 0 from [0:1] `P(info="model type flag for pnp" );
|
||||
(*spice_isflag="yes", info="model type flag for npn" *) parameter integer npn = 1 from [0:1];
|
||||
(*info="model type flag for pnp" *) parameter integer pnp = 0 from [0:1];
|
||||
|
||||
//Circuit simulator specific parameters
|
||||
parameter real tnom = 27 `P(spice:name="tnom" info="Temperature for which parameters are valid" unit="C");
|
||||
parameter real dt = 0.0 `P(spice:name="dt" type="instance" info="Temperature change for particular transistor" unit="K");
|
||||
(*spice_name="tnom", info="Temperature for which parameters are valid", unit="C"*) parameter real tnom = 27;
|
||||
(*spice_name="dt", type="instance", info="Temperature change for particular transistor", unit="K"*) parameter real dt = 0.0;
|
||||
|
||||
|
||||
// Declaration of the variables: begin
|
||||
|
||||
real _circuit_gmin;
|
||||
|
||||
real HICUMtype `P(spice:name="type" info="Device type from npn or pnp flags" unit="no" ask="yes");
|
||||
real HICUMtype ;
|
||||
|
||||
// QCJMOD
|
||||
real cj0,vd,z,aj;
|
||||
|
|
@ -363,17 +359,17 @@ module hic0_full (c,b,e,s,tnode);
|
|||
real cmax,cr,ve;
|
||||
real ee1,ez,ezr,vdj1,vdj2,ex1,vr,vj1,vj2,vj4;
|
||||
real qj1,qj2,qj3,qjf;
|
||||
|
||||
|
||||
|
||||
|
||||
//Cjfun *** VT, removed: BA
|
||||
real cj1,cj2,cj3,cjf;
|
||||
|
||||
|
||||
|
||||
|
||||
//cjtfun *** tnom,VT,mg,Vt0, removed: BA
|
||||
real vg;
|
||||
real vdj0,vdjt,cj0_t,vd_t,aj_t;
|
||||
|
||||
|
||||
|
||||
|
||||
// temperature and drift
|
||||
real VT,Tamb,Tdev,Tnom,dT,qtt0,ln_qtt0;
|
||||
real vde_t,vdci_t,vdcx_t,vds_t;
|
||||
|
|
@ -385,23 +381,23 @@ module hic0_full (c,b,e,s,tnode);
|
|||
real aje_t;
|
||||
|
||||
// bc charge and cap
|
||||
real qjci `P(ask="yes" info="B-C internal junction charge" unit="C");
|
||||
(*ask="yes", info="B-C internal junction charge", unit="C"*) real qjci ;
|
||||
real qjcx,qjcii,cjcii,qjcxi,qjciii; //cjcx
|
||||
real cjci0_t_ii,cjcx0_t_ii,cjcx0_t_i,v_j;
|
||||
|
||||
// be junction
|
||||
real qjei `P(ask="yes" info="B-E internal junction charge" unit="C");
|
||||
real cjei_i `P(ask="yes" info="B-E internal junction capacitance" unit="F"); // dw: adms2.2.7 problem
|
||||
real cjei,vf,vj,x,y,e1,e2;
|
||||
|
||||
(*ask="yes", info="B-E internal junction charge", unit="C"*) real qjei ;
|
||||
(*ask="yes", info="B-E internal junction capacitance", unit="F"*) real cjei_i ; // dw: adms2.2.7 problem
|
||||
real cjei,vf,vj,x,y,e1,e2;
|
||||
|
||||
// transfer and internal base current
|
||||
real cc,qj_2,facl;
|
||||
real tf0,ickf,ickr,itfi,itri,qm;
|
||||
real qpt,itf,itr;
|
||||
real it `P(ask="yes" info="Transfer Current" unit="A");
|
||||
(*ask="yes", info="Transfer Current", unit="A"*) real it ;
|
||||
real ibe,ire,ibi;
|
||||
real itfl,itrl,al,s3l,wl,d_qfh;
|
||||
|
||||
|
||||
// be diffusion charge
|
||||
real qf,qf0,dqfh,dqef;
|
||||
real dtef,dtfh,tf,ick;
|
||||
|
|
@ -412,60 +408,59 @@ module hic0_full (c,b,e,s,tnode);
|
|||
|
||||
// avalanche current source
|
||||
real v_bord,a_iavl,lncc;
|
||||
|
||||
|
||||
// base resistance
|
||||
real rb,eta,rbi,qje,Qz_nom,fQz;
|
||||
real rb,eta,rbi,qje,Qz_nom,fQz;
|
||||
|
||||
// substrate transistor, diode and cap
|
||||
real qjs,HSa,HSb,HSI_Tsu,HSUM;
|
||||
|
||||
// self heating
|
||||
real pterm;
|
||||
|
||||
|
||||
// new for temperature dependence
|
||||
real mg,zetabci,zetasct,zetatef,avs;
|
||||
real k1,k2,vgbe,vgbc,vgsc,dvg;
|
||||
real k1,k2,vgbe,vgbc,vgsc,dvg;
|
||||
real xvf,xvf2,dvj,uvc,Vt0;
|
||||
|
||||
// noise
|
||||
real flicker_Pwr,fourkt,twoq;
|
||||
|
||||
|
||||
// LIN_EXP
|
||||
real le,arg,le1,arg1,le2,arg2;
|
||||
|
||||
|
||||
//HICDIO
|
||||
real IS,IST,UM1,U,Iz,DIOY;
|
||||
|
||||
|
||||
// branch voltages
|
||||
real Vbci,Vbici,Vbiei,Vciei,Vsci,Veie,Vbbi,Vcic,Vbe,Vrth;
|
||||
|
||||
|
||||
//Output to be seen
|
||||
real ijbc `P(ask="yes" info="Base-collector diode current" unit="A");
|
||||
real iavl `P(ask="yes" info="Avalanche current" unit="A");
|
||||
real ijsc `P(ask="yes" info="Substrate-collector diode current" unit="A");
|
||||
real Ieei `P(ask="yes" info="Current through external to internal emitter node" unit="A");
|
||||
real Icci `P(ask="yes" info="Current through external to internal collector node" unit="A");
|
||||
real Ibbi `P(ask="yes" info="Current through external to internal base node" unit="A");
|
||||
real Ibici `P(ask="yes" info="Base-collector diode current minus the avalanche current" unit="A");
|
||||
real ijbe `P(ask="yes" info="Base-emitter diode current" unit="A");
|
||||
(*ask="yes", info="Base-collector diode current", unit="A"*) real ijbc ;
|
||||
(*ask="yes", info="Avalanche current", unit="A"*) real iavl ;
|
||||
(*ask="yes", info="Substrate-collector diode current", unit="A"*) real ijsc ;
|
||||
(*ask="yes", info="Current through external to internal emitter node", unit="A"*) real Ieei ;
|
||||
(*ask="yes", info="Current through external to internal collector node", unit="A"*) real Icci ;
|
||||
(*ask="yes", info="Current through external to internal base node", unit="A"*) real Ibbi ;
|
||||
(*ask="yes", info="Base-collector diode current minus the avalanche current", unit="A"*) real Ibici ;
|
||||
(*ask="yes", info="Base-emitter diode current", unit="A"*) real ijbe ;
|
||||
|
||||
real Qbci,Qbe,Qbici,Qbiei;
|
||||
//Declaration of the variables: end
|
||||
|
||||
|
||||
|
||||
//
|
||||
//======================== calculation of the transistor ===================
|
||||
//======================== calculation of the transistor ===================
|
||||
//
|
||||
|
||||
analog begin
|
||||
|
||||
// assign voltages with regard to transistor type
|
||||
|
||||
`INITIAL_MODEL
|
||||
begin
|
||||
if (`PGIVEN(npn))
|
||||
begin : initial_model
|
||||
if ($param_given(npn))
|
||||
HICUMtype = `NPN;
|
||||
else if (`PGIVEN(pnp))
|
||||
else if ($param_given(pnp))
|
||||
HICUMtype = `PNP;
|
||||
else
|
||||
HICUMtype = `NPN;
|
||||
|
|
@ -491,7 +486,7 @@ analog begin
|
|||
Tnom = tnom+273.15;
|
||||
Tamb = $temperature;
|
||||
Tdev = Tamb+dt+Vrth;
|
||||
|
||||
|
||||
// Limit temperature to avoid FPE's in equations
|
||||
if(Tdev < `TMIN + 273.15) begin
|
||||
Tdev = `TMIN + 273.15;
|
||||
|
|
@ -503,15 +498,15 @@ analog begin
|
|||
|
||||
Vt0 = `P_K*Tnom /`P_Q;
|
||||
VT = `P_K*Tdev /`P_Q;
|
||||
dT = Tdev-Tnom;
|
||||
dT = Tdev-Tnom;
|
||||
qtt0 = Tdev/Tnom;
|
||||
ln_qtt0 = ln(qtt0);
|
||||
k1 = f1vg*Tnom;
|
||||
k2 = f2vg*Tnom+k1*ln(Tnom);
|
||||
avs = alvs*Tnom;
|
||||
vgbe = (vgb+vge)/2;
|
||||
vgbc = (vgb+vgc)/2;
|
||||
vgsc = (vgs+vgc)/2;
|
||||
vgbe = (vgb+vge)/2;
|
||||
vgbc = (vgb+vgc)/2;
|
||||
vgsc = (vgs+vgc)/2;
|
||||
mg = 3-`P_Q*f1vg/`P_K;
|
||||
zetabci = mg+1-zetaci;
|
||||
zetasct = mg-1.5; //+1-m_upS with m_upS=2.5
|
||||
|
|
@ -551,13 +546,13 @@ analog begin
|
|||
// The cjcx0 value is used to switch between one (cjcx0=0) and two bc parameter sets
|
||||
// 1. For one parameter set only the internal bc set is partitioned by fbc
|
||||
// 2. For two independent sets only the external set is partitioned by fbc
|
||||
|
||||
if (cjcx0_t==0) begin
|
||||
|
||||
if (cjcx0_t==0) begin
|
||||
cjci0_t_ii = cjci0_t*fbc; // zero bias internal portion
|
||||
qjcxi = 0;
|
||||
cjcx0_t_i = cjci0_t*(1-fbc); // zero bias external portion
|
||||
`HICJQ(Vbci,cjcx0_t_i,vdci_t,zci,vptci,qjcx)
|
||||
end else begin
|
||||
end else begin
|
||||
cjci0_t_ii = cjci0_t; // zero bias internal portion
|
||||
cjcx0_t_ii = cjcx0_t*fbc;
|
||||
`HICJQ(Vbici,cjcx0_t_ii,vdcx_t,zcx,vptcx,qjcxi)
|
||||
|
|
@ -566,9 +561,9 @@ analog begin
|
|||
end
|
||||
`HICJQ(Vbici,cjci0_t_ii,vdci_t,zci,vptci,qjci)
|
||||
qjcii = qjci+qjcxi;
|
||||
|
||||
|
||||
//Internal bc cap without punch through for cc
|
||||
|
||||
|
||||
//`HICJQ(Vbici,cjci0_t_ii,vdci_t,zci,100,qjciii)
|
||||
`QCMODF(Vbici,cjci0_t_ii,vdci_t,zci,2.4,cjcii)
|
||||
//cjcii = ddx(qjciii,V(bi));
|
||||
|
|
@ -582,7 +577,7 @@ analog begin
|
|||
// Critical current: ick
|
||||
vc = Vciei-vces_t;
|
||||
uvc = vc/VT-1;
|
||||
vceff = VT*(1+0.5*(uvc+sqrt(uvc*uvc+1.921812)));
|
||||
vceff = VT*(1+0.5*(uvc+sqrt(uvc*uvc+1.921812)));
|
||||
x = (vceff-vlim_t)/vpt;
|
||||
ick = vceff*(1+0.5*(x+sqrt(x*x+1e-3)))/rci0_t/sqrt(1+vceff*vceff/vlim_t/vlim_t);
|
||||
|
||||
|
|
@ -590,7 +585,7 @@ analog begin
|
|||
|
||||
// Normalized BC cap and carge
|
||||
cc = cjci0_t_ii/cjcii;
|
||||
qjci = qjci/cjci0_t_ii;
|
||||
qjci = qjci/cjci0_t_ii;
|
||||
qj_2 = (1+qjci/vef)/2;
|
||||
|
||||
// Minority charge transit time
|
||||
|
|
@ -604,7 +599,7 @@ analog begin
|
|||
arg1 = Vbiei/(mcf*VT);
|
||||
`LIN_EXP(le1,arg1)
|
||||
itfi=is_t*le1;
|
||||
|
||||
|
||||
arg2 = Vbici/(mcr*VT);
|
||||
`LIN_EXP(le2,arg2)
|
||||
itri=is_t*le2;
|
||||
|
|
@ -617,10 +612,10 @@ analog begin
|
|||
qpt = qj_2+sqrt((qj_2)*(qj_2)+qm);
|
||||
if (qpt<=1e-20) begin
|
||||
qpt=1e-20;
|
||||
end
|
||||
end
|
||||
|
||||
// Low transfer current
|
||||
itfl = itfi/qpt;
|
||||
itfl = itfi/qpt;
|
||||
itrl = itri/qpt;
|
||||
|
||||
// Normalized injection width with low transfer current
|
||||
|
|
@ -632,7 +627,7 @@ analog begin
|
|||
s3l = sqrt(al*al+ahc);
|
||||
wl = (al+s3l)/(1+sqrt(1+ahc));
|
||||
d_qfh = (wl*wl+tfh*itfl/ick)*itfl/iqfh;
|
||||
|
||||
|
||||
// Transfer current
|
||||
facl = 1/(1+d_qfh/qpt);
|
||||
itf = itfl*facl;
|
||||
|
|
@ -654,15 +649,15 @@ analog begin
|
|||
tww = thcs_t*w*w;
|
||||
dqfh = tww*itf;
|
||||
dtfh = tww*(1+2*ick/itf/s3);
|
||||
|
||||
|
||||
// Emitter component
|
||||
dtef = tef0_t*exp(gte*ln(itf/ick));
|
||||
dqef = dtef*itf/(gte+1.0);
|
||||
|
||||
// Total minority charge and transit time
|
||||
|
||||
// Total minority charge and transit time
|
||||
qf = qf0+dqef+dqfh;
|
||||
tf = tf0+dtfh+dtef;
|
||||
|
||||
|
||||
// BC diffusion charge
|
||||
qr = tr*itr;
|
||||
|
||||
|
|
@ -679,7 +674,7 @@ analog begin
|
|||
// Total base current
|
||||
ibi = ijbe+ijbc;
|
||||
|
||||
// Avalanche current
|
||||
// Avalanche current
|
||||
|
||||
if (Vbici < 0) begin : HICAVL
|
||||
v_bord = eavl_t*vdci_t;
|
||||
|
|
@ -687,7 +682,7 @@ analog begin
|
|||
a_iavl = kavl_t/vdci_t*exp(-cc);
|
||||
iavl = itf*a_iavl*(v_bord+(1+cc)*(vdci_t-Vbici-v_bord));
|
||||
end else begin
|
||||
lncc = ln(1/cc);
|
||||
lncc = ln(1/cc);
|
||||
iavl = kavl_t*itf*exp(-1/zci*lncc-eavl_t*exp((1/zci-1)*lncc));
|
||||
end
|
||||
end else begin
|
||||
|
|
@ -717,7 +712,7 @@ analog begin
|
|||
end else begin
|
||||
rbi = 0.0;
|
||||
end
|
||||
// Total base resistance
|
||||
// Total base resistance
|
||||
rb = rbi+rbx_t;
|
||||
|
||||
// Parasitic substrate transistor transfer current
|
||||
|
|
@ -739,7 +734,7 @@ analog begin
|
|||
// Self heating
|
||||
|
||||
if (flsh == 1 && rth >= `MIN_R) begin
|
||||
pterm = it*Vciei+iavl*(vdci_t-Vbici);
|
||||
pterm = it*Vciei+iavl*(vdci_t-Vbici);
|
||||
end else if (flsh == 2 && rth >= `MIN_R) begin
|
||||
pterm = Vciei*it + (vdci_t-Vbici)*iavl + ijbe*Vbiei + ijbc*Vbici + ijsc*Vsci;
|
||||
if (rb >= `MIN_R) begin
|
||||
|
|
@ -756,7 +751,7 @@ analog begin
|
|||
//
|
||||
// Compute branch sources
|
||||
//
|
||||
|
||||
|
||||
Ibici = ijbc - iavl;
|
||||
|
||||
Qbci = cbcpar*Vbci;
|
||||
|
|
@ -766,70 +761,70 @@ analog begin
|
|||
|
||||
ijsc = HICUMtype*ijsc;
|
||||
qjs = HICUMtype*qjs;
|
||||
qjcx = HICUMtype*qjcx;
|
||||
qjcx = HICUMtype*qjcx;
|
||||
Qbci = HICUMtype*Qbci;
|
||||
Qbe = HICUMtype*Qbe;
|
||||
|
||||
|
||||
Ibici = HICUMtype*Ibici;
|
||||
Qbici = HICUMtype*Qbici;
|
||||
ijbe = HICUMtype*ijbe;
|
||||
Qbiei = HICUMtype*Qbiei;
|
||||
Qbiei = HICUMtype*Qbiei;
|
||||
it = HICUMtype*it;
|
||||
|
||||
|
||||
//
|
||||
// Define branch sources
|
||||
//
|
||||
I(br_biei) <+ _circuit_gmin*V(br_biei);
|
||||
I(br_bici) <+ _circuit_gmin*V(br_bici);
|
||||
|
||||
|
||||
I(br_bs) <+ HSI_Tsu;
|
||||
I(br_sci) <+ ijsc + _circuit_gmin*V(br_sci); //`P(spectre:gmin="add" spectre:pwl_passive="1e10");
|
||||
I(br_sci) <+ ijsc + _circuit_gmin*V(br_sci); //`P(spectre_gmin="add", spectre_pwl_passive="1e10");
|
||||
I(br_sci) <+ ddt(qjs);
|
||||
I(br_bci) <+ ddt(qjcx);
|
||||
I(br_bci) <+ ddt(Qbci);
|
||||
I(br_be) <+ ddt(Qbe);
|
||||
if (re >= `MIN_R) begin
|
||||
I(br_eie_i) <+ Veie/re_t + _circuit_gmin*V(br_eie_i);//`P(spectre:gmin="add");
|
||||
I(br_eie_i) <+ Veie/re_t + _circuit_gmin*V(br_eie_i);//`P(spectre_gmin="add");
|
||||
end else begin
|
||||
V(br_eie_v) <+ 0.0;
|
||||
end
|
||||
if (rcx >= `MIN_R) begin
|
||||
I(br_cic_i) <+ Vcic/rcx_t + _circuit_gmin*V(br_cic_i);//`P(spectre:gmin="add");
|
||||
I(br_cic_i) <+ Vcic/rcx_t + _circuit_gmin*V(br_cic_i);//`P(spectre_gmin="add");
|
||||
end else begin
|
||||
V(br_cic_v) <+ 0.0;
|
||||
end
|
||||
if (rbi0 >= `MIN_R || rbx >= `MIN_R) begin
|
||||
I(br_bbi_i) <+ Vbbi/rb + _circuit_gmin*V(br_bbi_i); //`P(spectre:gmin="add");
|
||||
I(br_bbi_i) <+ Vbbi/rb + _circuit_gmin*V(br_bbi_i); //`P(spectre_gmin="add");
|
||||
end else begin
|
||||
V(br_bbi_v) <+ 0.0;
|
||||
end
|
||||
I(br_bici) <+ Ibici + _circuit_gmin*V(br_bici); //`P(spectre:gmin="add" spectre:pwl_sat_current="IMAX" spectre:pwl_sat_cond="imax/0.025" spectre:pwl_rev_current="imax" spectre:pwl_rev_cond="IMAX/0.025");
|
||||
I(br_bici) <+ Ibici + _circuit_gmin*V(br_bici); //`P(spectre_gmin="add", spectre_pwl_sat_current="IMAX", spectre_pwl_sat_cond="imax/0.025", spectre_pwl_rev_current="imax", spectre_pwl_rev_cond="IMAX/0.025");
|
||||
I(br_bici) <+ ddt(Qbici);
|
||||
I(br_biei) <+ ijbe + _circuit_gmin*V(br_biei); //`P(spectre:gmin="add" spectre:pwl_fwd_current="IBEIS*exp(25.0)" spectre:pwl_fwd_node="bi" spectre:pwl_fwd_cond="IBEIS*exp(25.0)/0.025" spectre:pwl_sat_current="IMAX" spectre:pwl_sat_cond="IMAX/0.025" spectre:pwl_passive="1e10");
|
||||
I(br_biei) <+ ijbe + _circuit_gmin*V(br_biei); //`P(spectre_gmin="add", spectre_pwl_fwd_current="IBEIS*exp(25.0)", spectre_pwl_fwd_node="bi", spectre_pwl_fwd_cond="IBEIS*exp(25.0)/0.025", spectre_pwl_sat_current="IMAX", spectre_pwl_sat_cond="IMAX/0.025", spectre_pwl_passive="1e10");
|
||||
I(br_biei) <+ ddt(Qbiei);
|
||||
I(br_ciei) <+ it `P(spectre:pwl_fwd_current="IS*exp(25.0)" spectre:pwl_fwd_node="bi" spectre:pwl_fwd_cond="IS*exp(25.0)/0.025" spectre:pwl_rev_current="IMAX" spectre:pwl_rev_cond="IMAX/0.025" spectre:pwl_passive="1e10");
|
||||
|
||||
I(br_ciei) <+ it; //`P(spectre_pwl_fwd_current="IS*exp(25.0)", spectre_pwl_fwd_node="bi", spectre_pwl_fwd_cond="IS*exp(25.0)/0.025", spectre_pwl_rev_current="IMAX", spectre_pwl_rev_cond="IMAX/0.025", spectre_pwl_passive="1e10")
|
||||
|
||||
// Following code is an intermediate solution:
|
||||
// ******************************************
|
||||
if(flsh == 0 || rth < `MIN_R) begin
|
||||
I(br_sht) <+ Vrth/`MIN_R;
|
||||
end else begin
|
||||
I(br_sht) <+ Vrth/rth-pterm + _circuit_gmin*V(br_sht);//`P(spectre:gmin="add");
|
||||
I(br_sht) <+ Vrth/rth-pterm + _circuit_gmin*V(br_sht);//`P(spectre_gmin="add");
|
||||
I(br_sht) <+ ddt(cth*Vrth);
|
||||
end
|
||||
// ******************************************
|
||||
// For simulators having no problem with V(br_sht) <+ 0.0
|
||||
// For simulators having no problem with V(br_sht) <+ 0.0
|
||||
// with external thermal node, follwing code may be used.
|
||||
// This external thermal node should remain accessible.
|
||||
// ********************************************
|
||||
//if(flsh == 0 || rth < `MIN_R) begin
|
||||
// V(br_sht) <+ 0.0;
|
||||
//end else begin
|
||||
// I(br_sht) <+ Vrth/rth-pterm `P(spectre:gmin="add");
|
||||
// I(br_sht) <+ Vrth/rth-pterm `P(spectre_gmin="add");
|
||||
// I(br_sht) <+ ddt(cth*Vrth);
|
||||
//end
|
||||
// ********************************************
|
||||
|
||||
|
||||
// Noise sources
|
||||
// Thermal noise
|
||||
fourkt = 4.0 * `P_K * Tdev;
|
||||
|
|
@ -847,8 +842,8 @@ analog begin
|
|||
twoq = 2.0 * `P_Q;
|
||||
I(br_biei) <+ white_noise(twoq*ijbe);
|
||||
I(br_ciei) <+ white_noise(twoq*it);
|
||||
|
||||
// Flicker noise
|
||||
|
||||
// Flicker noise
|
||||
flicker_Pwr = kf*pow(ijbe,af);
|
||||
I(br_biei) <+ flicker_noise(flicker_Pwr,1.0);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,31 +4,25 @@
|
|||
|
||||
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");
|
||||
(*info="external collector node"*) electrical c;
|
||||
(*info="external base node"*) electrical b;
|
||||
(*info="external emitter node"*) electrical e;
|
||||
(*info="external substrate node"*) electrical s;
|
||||
(*info="external thermal node"*) electrical dt;
|
||||
|
||||
// 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");
|
||||
(*info="internal collector node 1"*) electrical c1;
|
||||
(*info="internal emitter node"*) electrical e1;
|
||||
(*info="internal base node 1"*) electrical b1;
|
||||
(*info="internal base node 2"*) electrical b2;
|
||||
(*info="internal collector node 2"*) electrical c2;
|
||||
(*info="internal collector node 3"*) electrical c3;
|
||||
(*info="internal collector node 4"*) electrical c4;
|
||||
// For correlated noise implementation
|
||||
electrical noi `P(info="internal noise node");
|
||||
(*info="internal noise node"*) electrical noi;
|
||||
|
||||
`include "parameters.inc"
|
||||
`include "variables.inc"
|
||||
|
|
|
|||
|
|
@ -21,45 +21,45 @@
|
|||
//
|
||||
//////////////////////////////////////////
|
||||
|
||||
parameter real IMAX = 1000 `from(`IMAX_cliplow ,inf ) `P(info="Maximum current up to which forward current behaves exponentially" unit="A" );
|
||||
parameter real CJORBOT = 1E-3 `from(`CJORBOT_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-area of bottom component" unit="Fm^-2" );
|
||||
parameter real CJORSTI = 1E-9 `from(`CJORSTI_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-length of STI-edge component" unit="Fm^-1" );
|
||||
parameter real CJORGAT = 1E-9 `from(`CJORGAT_cliplow ,inf ) `P(info="Zero-bias capacitance per unit-of-length of gate-edge component" unit="Fm^-1" );
|
||||
parameter real VBIRBOT = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of bottom component" unit="V" );
|
||||
parameter real VBIRSTI = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of STI-edge component" unit="V" );
|
||||
parameter real VBIRGAT = 1 `from(`VBIR_cliplow ,inf ) `P(info="Built-in voltage at the reference temperature of gate-edge component" unit="V" );
|
||||
parameter real PBOT = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of bottom component" unit="" );
|
||||
parameter real PSTI = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of STI-edge component" unit="" );
|
||||
parameter real PGAT = 0.5 `from(`P_cliplow ,`P_cliphigh ) `P(info="Grading coefficient of gate-edge component" unit="" );
|
||||
parameter real PHIGBOT = 1.16 `P(info="Zero-temperature bandgap voltage of bottom component" unit="V" );
|
||||
parameter real PHIGSTI = 1.16 `P(info="Zero-temperature bandgap voltage of STI-edge component" unit="V" );
|
||||
parameter real PHIGGAT = 1.16 `P(info="Zero-temperature bandgap voltage of gate-edge component" unit="V" );
|
||||
parameter real IDSATRBOT = 1E-12 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of bottom component" unit="Am^-2" );
|
||||
parameter real IDSATRSTI = 1E-18 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of STI-edge component" unit="Am^-1" );
|
||||
parameter real IDSATRGAT = 1E-18 `from(`IDSATR_cliplow ,inf ) `P(info="Saturation current density at the reference temperature of gate-edge component" unit="Am^-1" );
|
||||
parameter real CSRHBOT = 1E2 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of bottom component" unit="Am^-3" );
|
||||
parameter real CSRHSTI = 1E-4 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of STI-edge component" unit="Am^-2" );
|
||||
parameter real CSRHGAT = 1E-4 `from(`CSRH_cliplow ,inf ) `P(info="Shockley-Read-Hall prefactor of gate-edge component" unit="Am^-2" );
|
||||
parameter real XJUNSTI = 100E-9 `from(`XJUN_cliplow ,inf ) `P(info="Junction depth of STI-edge component" unit="m" );
|
||||
parameter real XJUNGAT = 100E-9 `from(`XJUN_cliplow ,inf ) `P(info="Junction depth of gate-edge component" unit="m" );
|
||||
parameter real CTATBOT = 1E2 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of bottom component" unit="Am^-3" );
|
||||
parameter real CTATSTI = 1E-4 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of STI-edge component" unit="Am^-2" );
|
||||
parameter real CTATGAT = 1E-4 `from(`CTAT_cliplow ,inf ) `P(info="Trap-assisted tunneling prefactor of gate-edge component" unit="Am^-2" );
|
||||
parameter real MEFFTATBOT = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of bottom component" unit="" );
|
||||
parameter real MEFFTATSTI = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of STI-edge component" unit="" );
|
||||
parameter real MEFFTATGAT = 0.25 `from(`MEFFTAT_cliplow ,inf ) `P(info="Effective mass (in units of m0) for trap-assisted tunneling of gate-edge component" unit="" );
|
||||
parameter real CBBTBOT = 1E-12 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of bottom component" unit="AV^-3" );
|
||||
parameter real CBBTSTI = 1E-18 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of STI-edge component" unit="AV^-3m" );
|
||||
parameter real CBBTGAT = 1E-18 `from(`CBBT_cliplow ,inf ) `P(info="Band-to-band tunneling prefactor of gate-edge component" unit="AV^-3m" );
|
||||
parameter real FBBTRBOT = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of bottom component" unit="Vm^-1" );
|
||||
parameter real FBBTRSTI = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of STI-edge component" unit="Vm^-1" );
|
||||
parameter real FBBTRGAT = 1E9 `P(info="Normalization field at the reference temperature for band-to-band tunneling of gate-edge component" unit="Vm^-1" );
|
||||
parameter real STFBBTBOT = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of bottom component" unit="K^-1" );
|
||||
parameter real STFBBTSTI = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of STI-edge component" unit="K^-1" );
|
||||
parameter real STFBBTGAT = -1E-3 `P(info="Temperature scaling parameter for band-to-band tunneling of gate-edge component" unit="K^-1" );
|
||||
parameter real VBRBOT = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of bottom component" unit="V" );
|
||||
parameter real VBRSTI = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of STI-edge component" unit="V" );
|
||||
parameter real VBRGAT = 10 `from(`VBR_cliplow ,inf ) `P(info="Breakdown voltage of gate-edge component" unit="V" );
|
||||
parameter real PBRBOT = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of bottom component" unit="V" );
|
||||
parameter real PBRSTI = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of STI-edge component" unit="V" );
|
||||
parameter real PBRGAT = 4 `from(`PBR_cliplow ,inf ) `P(info="Breakdown onset tuning parameter of gate-edge component" unit="V" );
|
||||
(*info="Maximum current up to which forward current behaves exponentially", unit="A" *) parameter real IMAX = 1000 `from(`IMAX_cliplow ,inf );
|
||||
(*info="Zero-bias capacitance per unit-of-area of bottom component", unit="Fm^-2" *) parameter real CJORBOT = 1E-3 `from(`CJORBOT_cliplow ,inf );
|
||||
(*info="Zero-bias capacitance per unit-of-length of STI-edge component", unit="Fm^-1" *) parameter real CJORSTI = 1E-9 `from(`CJORSTI_cliplow ,inf );
|
||||
(*info="Zero-bias capacitance per unit-of-length of gate-edge component", unit="Fm^-1" *) parameter real CJORGAT = 1E-9 `from(`CJORGAT_cliplow ,inf );
|
||||
(*info="Built-in voltage at the reference temperature of bottom component", unit="V" *) parameter real VBIRBOT = 1 `from(`VBIR_cliplow ,inf );
|
||||
(*info="Built-in voltage at the reference temperature of STI-edge component", unit="V" *) parameter real VBIRSTI = 1 `from(`VBIR_cliplow ,inf );
|
||||
(*info="Built-in voltage at the reference temperature of gate-edge component", unit="V" *) parameter real VBIRGAT = 1 `from(`VBIR_cliplow ,inf );
|
||||
(*info="Grading coefficient of bottom component", unit="" *) parameter real PBOT = 0.5 `from(`P_cliplow ,`P_cliphigh );
|
||||
(*info="Grading coefficient of STI-edge component", unit="" *) parameter real PSTI = 0.5 `from(`P_cliplow ,`P_cliphigh );
|
||||
(*info="Grading coefficient of gate-edge component", unit="" *) parameter real PGAT = 0.5 `from(`P_cliplow ,`P_cliphigh );
|
||||
(*info="Zero-temperature bandgap voltage of bottom component", unit="V" *) parameter real PHIGBOT = 1.16 ;
|
||||
(*info="Zero-temperature bandgap voltage of STI-edge component", unit="V" *) parameter real PHIGSTI = 1.16 ;
|
||||
(*info="Zero-temperature bandgap voltage of gate-edge component", unit="V" *) parameter real PHIGGAT = 1.16 ;
|
||||
(*info="Saturation current density at the reference temperature of bottom component", unit="Am^-2" *) parameter real IDSATRBOT = 1E-12 `from(`IDSATR_cliplow ,inf );
|
||||
(*info="Saturation current density at the reference temperature of STI-edge component", unit="Am^-1" *) parameter real IDSATRSTI = 1E-18 `from(`IDSATR_cliplow ,inf );
|
||||
(*info="Saturation current density at the reference temperature of gate-edge component", unit="Am^-1" *) parameter real IDSATRGAT = 1E-18 `from(`IDSATR_cliplow ,inf );
|
||||
(*info="Shockley-Read-Hall prefactor of bottom component", unit="Am^-3" *) parameter real CSRHBOT = 1E2 `from(`CSRH_cliplow ,inf );
|
||||
(*info="Shockley-Read-Hall prefactor of STI-edge component", unit="Am^-2" *) parameter real CSRHSTI = 1E-4 `from(`CSRH_cliplow ,inf );
|
||||
(*info="Shockley-Read-Hall prefactor of gate-edge component", unit="Am^-2" *) parameter real CSRHGAT = 1E-4 `from(`CSRH_cliplow ,inf );
|
||||
(*info="Junction depth of STI-edge component", unit="m" *) parameter real XJUNSTI = 100E-9 `from(`XJUN_cliplow ,inf );
|
||||
(*info="Junction depth of gate-edge component", unit="m" *) parameter real XJUNGAT = 100E-9 `from(`XJUN_cliplow ,inf );
|
||||
(*info="Trap-assisted tunneling prefactor of bottom component", unit="Am^-3" *) parameter real CTATBOT = 1E2 `from(`CTAT_cliplow ,inf );
|
||||
(*info="Trap-assisted tunneling prefactor of STI-edge component", unit="Am^-2" *) parameter real CTATSTI = 1E-4 `from(`CTAT_cliplow ,inf );
|
||||
(*info="Trap-assisted tunneling prefactor of gate-edge component", unit="Am^-2" *) parameter real CTATGAT = 1E-4 `from(`CTAT_cliplow ,inf );
|
||||
(*info="Effective mass (in units of m0) for trap-assisted tunneling of bottom component", unit="" *) parameter real MEFFTATBOT = 0.25 `from(`MEFFTAT_cliplow ,inf );
|
||||
(*info="Effective mass (in units of m0) for trap-assisted tunneling of STI-edge component", unit="" *) parameter real MEFFTATSTI = 0.25 `from(`MEFFTAT_cliplow ,inf );
|
||||
(*info="Effective mass (in units of m0) for trap-assisted tunneling of gate-edge component", unit="" *) parameter real MEFFTATGAT = 0.25 `from(`MEFFTAT_cliplow ,inf );
|
||||
(*info="Band-to-band tunneling prefactor of bottom component", unit="AV^-3" *) parameter real CBBTBOT = 1E-12 `from(`CBBT_cliplow ,inf );
|
||||
(*info="Band-to-band tunneling prefactor of STI-edge component", unit="AV^-3m" *) parameter real CBBTSTI = 1E-18 `from(`CBBT_cliplow ,inf );
|
||||
(*info="Band-to-band tunneling prefactor of gate-edge component", unit="AV^-3m" *) parameter real CBBTGAT = 1E-18 `from(`CBBT_cliplow ,inf );
|
||||
(*info="Normalization field at the reference temperature for band-to-band tunneling of bottom component", unit="Vm^-1" *) parameter real FBBTRBOT = 1E9 ;
|
||||
(*info="Normalization field at the reference temperature for band-to-band tunneling of STI-edge component", unit="Vm^-1" *) parameter real FBBTRSTI = 1E9 ;
|
||||
(*info="Normalization field at the reference temperature for band-to-band tunneling of gate-edge component", unit="Vm^-1" *) parameter real FBBTRGAT = 1E9 ;
|
||||
(*info="Temperature scaling parameter for band-to-band tunneling of bottom component", unit="K^-1" *) parameter real STFBBTBOT = -1E-3 ;
|
||||
(*info="Temperature scaling parameter for band-to-band tunneling of STI-edge component", unit="K^-1" *) parameter real STFBBTSTI = -1E-3 ;
|
||||
(*info="Temperature scaling parameter for band-to-band tunneling of gate-edge component", unit="K^-1" *) parameter real STFBBTGAT = -1E-3 ;
|
||||
(*info="Breakdown voltage of bottom component", unit="V" *) parameter real VBRBOT = 10 `from(`VBR_cliplow ,inf );
|
||||
(*info="Breakdown voltage of STI-edge component", unit="V" *) parameter real VBRSTI = 10 `from(`VBR_cliplow ,inf );
|
||||
(*info="Breakdown voltage of gate-edge component", unit="V" *) parameter real VBRGAT = 10 `from(`VBR_cliplow ,inf );
|
||||
(*info="Breakdown onset tuning parameter of bottom component", unit="V" *) parameter real PBRBOT = 4 `from(`PBR_cliplow ,inf );
|
||||
(*info="Breakdown onset tuning parameter of STI-edge component", unit="V" *) parameter real PBRSTI = 4 `from(`PBR_cliplow ,inf );
|
||||
(*info="Breakdown onset tuning parameter of gate-edge component", unit="V" *) parameter real PBRGAT = 4 `from(`PBR_cliplow ,inf );
|
||||
|
|
|
|||
|
|
@ -86,134 +86,134 @@
|
|||
///////////////////////////////////////////////////
|
||||
|
||||
// Special model parameters, some are also simulator global variables
|
||||
parameter real LEVEL = 102 `P(info="Model level" unit="" );
|
||||
parameter real TYPE = 1.0 `from( -1.0,1.0 ) `P(info="Channel type parameter, +1=NMOS -1=PMOS" unit="" );
|
||||
parameter real TR = 21.0 `from( -273.0,inf ) `P(info="nominal (reference) temperature" unit="C" );
|
||||
(*info="Model level", unit="" *) parameter real LEVEL = 102 ;
|
||||
(*info="Channel type parameter, +1=NMOS -1=PMOS", unit="" *) parameter real TYPE = 1.0 `from( -1.0,1.0 );
|
||||
(*info="nominal (reference) temperature", unit="C" *) parameter real TR = 21.0 `from( -273.0,inf );
|
||||
|
||||
// Switch parameters that turn models or effects on or off
|
||||
parameter real SWIGATE = 0.0 `from( 0.0,1.0 ) `P(info="Flag for gate current, 0=turn off IG" unit="" );
|
||||
parameter real SWIMPACT = 0.0 `from( 0.0,1.0 ) `P(info="Flag for impact ionization current, 0=turn off II" unit="" );
|
||||
parameter real SWGIDL = 0.0 `from( 0.0,1.0 ) `P(info="Flag for GIDL current, 0=turn off IGIDL" unit="" );
|
||||
parameter real SWJUNCAP = 0.0 `from( 0.0,3.0 ) `P(info="Flag for juncap, 0=turn off juncap" unit="" );
|
||||
parameter real QMC = 1.0 `from( 0.0,inf ) `P(info="Quantum-mechanical correction factor" unit="" );
|
||||
(*info="Flag for gate current, 0=turn off IG", unit="" *) parameter real SWIGATE = 0.0 `from( 0.0,1.0 );
|
||||
(*info="Flag for impact ionization current, 0=turn off II", unit="" *) parameter real SWIMPACT = 0.0 `from( 0.0,1.0 );
|
||||
(*info="Flag for GIDL current, 0=turn off IGIDL", unit="" *) parameter real SWGIDL = 0.0 `from( 0.0,1.0 );
|
||||
(*info="Flag for juncap, 0=turn off juncap", unit="" *) parameter real SWJUNCAP = 0.0 `from( 0.0,3.0 );
|
||||
(*info="Quantum-mechanical correction factor", unit="" *) parameter real QMC = 1.0 `from( 0.0,inf );
|
||||
|
||||
// Process parameters
|
||||
parameter real VFB = -1.0 `P(info="Flatband voltage at TR" unit="V" );
|
||||
parameter real STVFB = 5.0e-4 `P(info="Temperature dependence of VFB" unit="V/K" );
|
||||
parameter real TOX = 2.0e-09 `from( 1e-10,inf ) `P(info="Gate oxide thickness" unit="m" );
|
||||
parameter real NEFF = 5.0e+23 `from( 1e20,1e26 ) `P(info="Effective substrate doping" unit="m^-3" );
|
||||
parameter real VNSUB = 0.0 `P(info="Effective doping bias-dependence parameter" unit="V" );
|
||||
parameter real NSLP = 0.05 `from( 1e-3,inf ) `P(info="Effective doping bias-dependence parameter" unit="V" );
|
||||
parameter real DNSUB = 0.0 `from( 0.0,1.0 ) `P(info="Effective doping bias-dependence parameter" unit="V^-1" );
|
||||
parameter real DPHIB = 0.0 `P(info="Offset parameter for PHIB" unit="V" );
|
||||
parameter real NP = 1.0e+26 `from( 0.0,inf ) `P(info="Gate poly-silicon doping" unit="m^-3" );
|
||||
parameter real CT = 0.0 `from( 0.0,inf ) `P(info="Interface states factor" unit="" );
|
||||
parameter real TOXOV = 2.0e-09 `from( 1e-10,inf ) `P(info="Overlap oxide thickness" unit="m" );
|
||||
parameter real NOV = 5.0e+25 `from( 1e20,1e27 ) `P(info="Effective doping of overlap region" unit="m^-3" );
|
||||
(*info="Flatband voltage at TR", unit="V" *) parameter real VFB = -1.0 ;
|
||||
(*info="Temperature dependence of VFB", unit="V/K" *) parameter real STVFB = 5.0e-4 ;
|
||||
(*info="Gate oxide thickness", unit="m" *) parameter real TOX = 2.0e-09 `from( 1e-10,inf );
|
||||
(*info="Effective substrate doping", unit="m^-3" *) parameter real NEFF = 5.0e+23 `from( 1e20,1e26 );
|
||||
(*info="Effective doping bias-dependence parameter", unit="V" *) parameter real VNSUB = 0.0 ;
|
||||
(*info="Effective doping bias-dependence parameter", unit="V" *) parameter real NSLP = 0.05 `from( 1e-3,inf );
|
||||
(*info="Effective doping bias-dependence parameter", unit="V^-1" *) parameter real DNSUB = 0.0 `from( 0.0,1.0 );
|
||||
(*info="Offset parameter for PHIB", unit="V" *) parameter real DPHIB = 0.0 ;
|
||||
(*info="Gate poly-silicon doping", unit="m^-3" *) parameter real NP = 1.0e+26 `from( 0.0,inf );
|
||||
(*info="Interface states factor", unit="" *) parameter real CT = 0.0 `from( 0.0,inf );
|
||||
(*info="Overlap oxide thickness", unit="m" *) parameter real TOXOV = 2.0e-09 `from( 1e-10,inf );
|
||||
(*info="Effective doping of overlap region", unit="m^-3" *) parameter real NOV = 5.0e+25 `from( 1e20,1e27 );
|
||||
|
||||
// DIBL parameters
|
||||
parameter real CF = 0.0 `from( 0.0,inf ) `P(info="DIBL-parameter" unit="V^-1" );
|
||||
parameter real CFB = 0.0 `from( 0.0,1.0 ) `P(info="Back bias dependence of CF" unit="V^-1" );
|
||||
(*info="DIBL-parameter", unit="V^-1" *) parameter real CF = 0.0 `from( 0.0,inf );
|
||||
(*info="Back bias dependence of CF", unit="V^-1" *) parameter real CFB = 0.0 `from( 0.0,1.0 );
|
||||
|
||||
// Mobility parameters
|
||||
parameter real BETN = 7e-2 `from( 0.0,inf ) `P(info="Channel aspect ratio times zero-field mobility" unit="m^2/V/s" );
|
||||
parameter real STBET = 1.0 `P(info="Temperature dependence of BETN" unit="" );
|
||||
parameter real MUE = 0.5 `from( 0.0,inf ) `P(info="Mobility reduction coefficient at TR" unit="m/V" );
|
||||
parameter real STMUE = 0.0 `P(info="Temperature dependence of MUE" unit="" );
|
||||
parameter real THEMU = 1.5 `from( 0.0,inf ) `P(info="Mobility reduction exponent at TR" unit="" );
|
||||
parameter real STTHEMU = 1.5 `P(info="Temperature dependence of THEMU" unit="" );
|
||||
parameter real CS = 0.0 `from( 0.0,inf ) `P(info="Coulomb scattering parameter at TR" unit="" );
|
||||
parameter real STCS = 0.0 `P(info="Temperature dependence of CS" unit="" );
|
||||
parameter real XCOR = 0.0 `from( 0.0,inf ) `P(info="Non-universality factor" unit="V^-1" );
|
||||
parameter real STXCOR = 0.0 `P(info="Temperature dependence of XCOR" unit="" );
|
||||
parameter real FETA = 1.0 `from( 0.0,inf ) `P(info="Effective field parameter" unit="" );
|
||||
(*info="Channel aspect ratio times zero-field mobility", unit="m^2/V/s" *) parameter real BETN = 7e-2 `from( 0.0,inf );
|
||||
(*info="Temperature dependence of BETN", unit="" *) parameter real STBET = 1.0 ;
|
||||
(*info="Mobility reduction coefficient at TR", unit="m/V" *) parameter real MUE = 0.5 `from( 0.0,inf );
|
||||
(*info="Temperature dependence of MUE", unit="" *) parameter real STMUE = 0.0 ;
|
||||
(*info="Mobility reduction exponent at TR", unit="" *) parameter real THEMU = 1.5 `from( 0.0,inf );
|
||||
(*info="Temperature dependence of THEMU", unit="" *) parameter real STTHEMU = 1.5 ;
|
||||
(*info="Coulomb scattering parameter at TR", unit="" *) parameter real CS = 0.0 `from( 0.0,inf );
|
||||
(*info="Temperature dependence of CS", unit="" *) parameter real STCS = 0.0 ;
|
||||
(*info="Non-universality factor", unit="V^-1" *) parameter real XCOR = 0.0 `from( 0.0,inf );
|
||||
(*info="Temperature dependence of XCOR", unit="" *) parameter real STXCOR = 0.0 ;
|
||||
(*info="Effective field parameter", unit="" *) parameter real FETA = 1.0 `from( 0.0,inf );
|
||||
|
||||
// Series-resistance parameters (for resistance modeling as part of intrinsic mobility reduction)
|
||||
parameter real RS = 30 `from( 0.0,inf ) `P(info="Series resistance at TR" unit="Ohm" );
|
||||
parameter real STRS = 1.0 `P(info="Temperature dependence of RS" unit="" );
|
||||
parameter real RSB = 0.0 `from( -0.5,1.0 ) `P(info="Back-bias dependence of series resistance" unit="V^-1" );
|
||||
parameter real RSG = 0.0 `from( -0.5,inf ) `P(info="Gate-bias dependence of series resistance" unit="V^-1" );
|
||||
(*info="Series resistance at TR", unit="Ohm" *) parameter real RS = 30 `from( 0.0,inf );
|
||||
(*info="Temperature dependence of RS", unit="" *) parameter real STRS = 1.0 ;
|
||||
(*info="Back-bias dependence of series resistance", unit="V^-1" *) parameter real RSB = 0.0 `from( -0.5,1.0 );
|
||||
(*info="Gate-bias dependence of series resistance", unit="V^-1" *) parameter real RSG = 0.0 `from( -0.5,inf );
|
||||
|
||||
// Velocity saturation parameters
|
||||
parameter real THESAT = 1.0 `from( 0.0,inf ) `P(info="Velocity saturation parameter at TR" unit="V^-1" );
|
||||
parameter real STTHESAT = 1.0 `P(info="Temperature dependence of THESAT" unit="" );
|
||||
parameter real THESATB = 0.0 `from( -0.5,1.0 ) `P(info="Back-bias dependence of velocity saturation" unit="V^-1" );
|
||||
parameter real THESATG = 0.0 `from( -0.5,inf ) `P(info="Gate-bias dependence of velocity saturation" unit="V^-1" );
|
||||
(*info="Velocity saturation parameter at TR", unit="V^-1" *) parameter real THESAT = 1.0 `from( 0.0,inf );
|
||||
(*info="Temperature dependence of THESAT", unit="" *) parameter real STTHESAT = 1.0 ;
|
||||
(*info="Back-bias dependence of velocity saturation", unit="V^-1" *) parameter real THESATB = 0.0 `from( -0.5,1.0 );
|
||||
(*info="Gate-bias dependence of velocity saturation", unit="V^-1" *) parameter real THESATG = 0.0 `from( -0.5,inf );
|
||||
|
||||
// Saturation voltage parameters
|
||||
parameter real AX = 3.0 `from( 2.0,inf ) `P(info="Linear/saturation transition factor" unit="" );
|
||||
(*info="Linear/saturation transition factor", unit="" *) parameter real AX = 3.0 `from( 2.0,inf );
|
||||
|
||||
// Channel length modulation (CLM) parameters
|
||||
parameter real ALP = 0.01 `from( 0.0,inf ) `P(info="CLM pre-factor" unit="" );
|
||||
parameter real ALP1 = 0.00 `from( 0.0,inf ) `P(info="CLM enhancement factor above threshold" unit="V" );
|
||||
parameter real ALP2 = 0.00 `from( 0.0,inf ) `P(info="CLM enhancement factor below threshold" unit="V^-1" );
|
||||
parameter real VP = 0.05 `from( 1e-10,inf ) `P(info="CLM logarithm dependence factor" unit="V" );
|
||||
(*info="CLM pre-factor", unit="" *) parameter real ALP = 0.01 `from( 0.0,inf );
|
||||
(*info="CLM enhancement factor above threshold", unit="V" *) parameter real ALP1 = 0.00 `from( 0.0,inf );
|
||||
(*info="CLM enhancement factor below threshold", unit="V^-1" *) parameter real ALP2 = 0.00 `from( 0.0,inf );
|
||||
(*info="CLM logarithm dependence factor", unit="V" *) parameter real VP = 0.05 `from( 1e-10,inf );
|
||||
|
||||
// Impact ionization (II) parameters
|
||||
parameter real A1 = 1.0 `from( 0.0,inf ) `P(info="Impact-ionization pre-factor" unit="" );
|
||||
parameter real A2 = 10.0 `from( 0.0,inf ) `P(info="Impact-ionization exponent at TR" unit="V" );
|
||||
parameter real STA2 = 0.0 `P(info="Temperature dependence of A2" unit="V" );
|
||||
parameter real A3 = 1.0 `from( 0.0,inf ) `P(info="Saturation-voltage dependence of impact-ionization" unit="" );
|
||||
parameter real A4 = 0.0 `from( 0.0,inf ) `P(info="Back-bias dependence of impact-ionization" unit="V^-0.5" );
|
||||
(*info="Impact-ionization pre-factor", unit="" *) parameter real A1 = 1.0 `from( 0.0,inf );
|
||||
(*info="Impact-ionization exponent at TR", unit="V" *) parameter real A2 = 10.0 `from( 0.0,inf );
|
||||
(*info="Temperature dependence of A2", unit="V" *) parameter real STA2 = 0.0 ;
|
||||
(*info="Saturation-voltage dependence of impact-ionization", unit="" *) parameter real A3 = 1.0 `from( 0.0,inf );
|
||||
(*info="Back-bias dependence of impact-ionization", unit="V^-0.5" *) parameter real A4 = 0.0 `from( 0.0,inf );
|
||||
|
||||
// Gate current parameters
|
||||
parameter real GCO = 0.0 `from( -10.0,10.0 ) `P(info="Gate tunnelling energy adjustment" unit="" );
|
||||
parameter real IGINV = 0.0 `from( 0.0,inf ) `P(info="Gate channel current pre-factor" unit="A" );
|
||||
parameter real IGOV = 0.0 `from( 0.0,inf ) `P(info="Gate overlap current pre-factor" unit="A" );
|
||||
parameter real STIG = 2.0 `P(info="Temperature dependence of IGINV and IGOV" unit="" );
|
||||
parameter real GC2 = 0.375 `from( 0.0,10.0 ) `P(info="Gate current slope factor" unit="" );
|
||||
parameter real GC3 = 0.063 `from( -2.0,2.0 ) `P(info="Gate current curvature factor" unit="" );
|
||||
parameter real CHIB = 3.1 `from( 1.0,inf ) `P(info="Tunnelling barrier height" unit="V" );
|
||||
(*info="Gate tunnelling energy adjustment", unit="" *) parameter real GCO = 0.0 `from( -10.0,10.0 );
|
||||
(*info="Gate channel current pre-factor", unit="A" *) parameter real IGINV = 0.0 `from( 0.0,inf );
|
||||
(*info="Gate overlap current pre-factor", unit="A" *) parameter real IGOV = 0.0 `from( 0.0,inf );
|
||||
(*info="Temperature dependence of IGINV and IGOV", unit="" *) parameter real STIG = 2.0 ;
|
||||
(*info="Gate current slope factor", unit="" *) parameter real GC2 = 0.375 `from( 0.0,10.0 );
|
||||
(*info="Gate current curvature factor", unit="" *) parameter real GC3 = 0.063 `from( -2.0,2.0 );
|
||||
(*info="Tunnelling barrier height", unit="V" *) parameter real CHIB = 3.1 `from( 1.0,inf );
|
||||
|
||||
// Gate Induced Drain/Source Leakage (GIDL) parameters
|
||||
parameter real AGIDL = 0.0 `from( 0.0,inf ) `P(info="GIDL pre-factor" unit="A/V^3" );
|
||||
parameter real BGIDL = 41.0 `from( 0.0,inf ) `P(info="GIDL probability factor at TR" unit="V" );
|
||||
parameter real STBGIDL = 0.0 `P(info="Temperature dependence of BGIDL" unit="V/K" );
|
||||
parameter real CGIDL = 0.0 `P(info="Back-bias dependence of GIDL" unit="" );
|
||||
(*info="GIDL pre-factor", unit="A/V^3" *) parameter real AGIDL = 0.0 `from( 0.0,inf );
|
||||
(*info="GIDL probability factor at TR", unit="V" *) parameter real BGIDL = 41.0 `from( 0.0,inf );
|
||||
(*info="Temperature dependence of BGIDL", unit="V/K" *) parameter real STBGIDL = 0.0 ;
|
||||
(*info="Back-bias dependence of GIDL", unit="" *) parameter real CGIDL = 0.0 ;
|
||||
|
||||
// Charge model parameters
|
||||
parameter real COX = 1.0e-14 `from( 0.0,inf ) `P(info="Oxide capacitance for intrinsic channel" unit="F" );
|
||||
parameter real CGOV = 1.0e-15 `from( 0.0,inf ) `P(info="Oxide capacitance for gate-drain/source overlap" unit="F" );
|
||||
parameter real CGBOV = 0.0 `from( 0.0,inf ) `P(info="Oxide capacitance for gate-bulk overlap" unit="F" );
|
||||
parameter real CFR = 0.0 `from( 0.0,inf ) `P(info="Outer fringe capacitance" unit="F" );
|
||||
(*info="Oxide capacitance for intrinsic channel", unit="F" *) parameter real COX = 1.0e-14 `from( 0.0,inf );
|
||||
(*info="Oxide capacitance for gate-drain/source overlap", unit="F" *) parameter real CGOV = 1.0e-15 `from( 0.0,inf );
|
||||
(*info="Oxide capacitance for gate-bulk overlap", unit="F" *) parameter real CGBOV = 0.0 `from( 0.0,inf );
|
||||
(*info="Outer fringe capacitance", unit="F" *) parameter real CFR = 0.0 `from( 0.0,inf );
|
||||
|
||||
// Noise parameters
|
||||
parameter real FNT = 1.0 `from( 0.0,inf ) `P(info="Thermal noise coefficient" unit="" );
|
||||
parameter real NFA = 8.0e+22 `from( 0.0,inf ) `P(info="First coefficient of flicker noise" unit="V^-1/m^4" );
|
||||
parameter real NFB = 3.0e+07 `from( 0.0,inf ) `P(info="Second coefficient of flicker noise" unit="V^-1/m^2" );
|
||||
parameter real NFC = 0.0 `from( 0.0,inf ) `P(info="Third coefficient of flicker noise" unit="V^-1" );
|
||||
(*info="Thermal noise coefficient", unit="" *) parameter real FNT = 1.0 `from( 0.0,inf );
|
||||
(*info="First coefficient of flicker noise", unit="V^-1/m^4" *) parameter real NFA = 8.0e+22 `from( 0.0,inf );
|
||||
(*info="Second coefficient of flicker noise", unit="V^-1/m^2" *) parameter real NFB = 3.0e+07 `from( 0.0,inf );
|
||||
(*info="Third coefficient of flicker noise", unit="V^-1" *) parameter real NFC = 0.0 `from( 0.0,inf );
|
||||
`ifdef NQSmodel
|
||||
|
||||
// NQS parameters
|
||||
parameter real SWNQS = 0.0 `from( 0.0,9.0 ) `P(info="Flag for NQS, 0=off, 1, 2, 3, 5, or 9=number of collocation points" unit="" );
|
||||
parameter real MUNQS = 1.0 `from( 0.0,inf ) `P(info="Relative mobility for NQS modelling" );
|
||||
parameter real RG = 1.0e-3 `from( 1.0e-6,inf ) `P(info="Gate resistance" unit="Ohm" );
|
||||
parameter real RBULK = 1.0e-3 `from( 1.0e-6,inf ) `P(info="Bulk resistance between node BP and BI" unit="Ohm" );
|
||||
parameter real RWELL = 1.0e-3 `from( 1.0e-6,inf ) `P(info="Well resistance between node BI and B" unit="Ohm" );
|
||||
parameter real RJUNS = 1.0e-3 `from( 1.0e-6,inf ) `P(info="Source-side bulk resistance between node BI and BS" unit="Ohm" );
|
||||
parameter real RJUND = 1.0e-3 `from( 1.0e-6,inf ) `P(info="Drain-side bulk resistance between node BI and BD" unit="Ohm" );
|
||||
(*info="Flag for NQS, 0=off, 1, 2, 3, 5, or 9=number of collocation points", unit="" *) parameter real SWNQS = 0.0 `from( 0.0,9.0 );
|
||||
(*info="Relative mobility for NQS modelling" *) parameter real MUNQS = 1.0 `from( 0.0,inf );
|
||||
(*info="Gate resistance", unit="Ohm" *) parameter real RG = 1.0e-3 `from( 1.0e-6,inf );
|
||||
(*info="Bulk resistance between node BP and BI", unit="Ohm" *) parameter real RBULK = 1.0e-3 `from( 1.0e-6,inf );
|
||||
(*info="Well resistance between node BI and B", unit="Ohm" *) parameter real RWELL = 1.0e-3 `from( 1.0e-6,inf );
|
||||
(*info="Source-side bulk resistance between node BI and BS", unit="Ohm" *) parameter real RJUNS = 1.0e-3 `from( 1.0e-6,inf );
|
||||
(*info="Drain-side bulk resistance between node BI and BD", unit="Ohm" *) parameter real RJUND = 1.0e-3 `from( 1.0e-6,inf );
|
||||
`endif // NQSmodel
|
||||
|
||||
// JUNCAP Parameters
|
||||
parameter real TRJ = 21 `from(`TRJ_cliplow,inf) `P(info="reference temperature" unit="C" );
|
||||
(*info="reference temperature", unit="C" *) parameter real TRJ = 21 `from(`TRJ_cliplow,inf);
|
||||
`include "JUNCAP200_parlist.include"
|
||||
|
||||
// Other parameters
|
||||
parameter real DTA = 0.0 `P(info="Temperature offset w.r.t. ambient temperature" unit="K" );
|
||||
(*info="Temperature offset w.r.t. ambient temperature", unit="K" *) parameter real DTA = 0.0 ;
|
||||
|
||||
// Instance parameters
|
||||
parameter real ABSOURCE = 1e-12 `from(`AB_cliplow,inf) `P(type="instance" info="Bottom area of source junction" unit="m^2" );
|
||||
parameter real LSSOURCE = 1e-6 `from(`LS_cliplow,inf) `P(type="instance" info="STI-edge length of source junction" unit="m" );
|
||||
parameter real LGSOURCE = 1e-6 `from(`LG_cliplow,inf) `P(type="instance" info="Gate-edge length of source junction" unit="m" );
|
||||
parameter real ABDRAIN = 1e-12 `from(`AB_cliplow,inf) `P(type="instance" info="Bottom area of drain junction" unit="m^2" );
|
||||
parameter real LSDRAIN = 1e-6 `from(`LS_cliplow,inf) `P(type="instance" info="STI-edge length of drain junction" unit="m" );
|
||||
parameter real LGDRAIN = 1e-6 `from(`LG_cliplow,inf) `P(type="instance" info="Gate-edge length of drain junction" unit="m" );
|
||||
parameter real AS = 1E-12 `from(`AB_cliplow,inf) `P(type="instance" info="Bottom area of source junction" unit="m^2" );
|
||||
parameter real PS = 1E-6 `from(`LS_cliplow,inf) `P(type="instance" info="Perimeter of source junction" unit="m" );
|
||||
parameter real AD = 1E-12 `from(`AB_cliplow,inf) `P(type="instance" info="Bottom area of drain junction" unit="m^2" );
|
||||
parameter real PD = 1E-6 `from(`LS_cliplow,inf) `P(type="instance" info="Perimeter of drain junction" unit="m" );
|
||||
parameter real JW = 1E-6 `from(`LG_cliplow,inf) `P(type="instance" info="Gate-edge length of source/drain junction" unit="m" );
|
||||
parameter real MULT = 1.0 `from( 0.0,inf ) `P(type="instance" info="Number of devices in parallel" unit="" );
|
||||
(*type="instance", info="Bottom area of source junction", unit="m^2" *) parameter real ABSOURCE = 1e-12 `from(`AB_cliplow,inf);
|
||||
(*type="instance", info="STI-edge length of source junction", unit="m" *) parameter real LSSOURCE = 1e-6 `from(`LS_cliplow,inf);
|
||||
(*type="instance", info="Gate-edge length of source junction", unit="m" *) parameter real LGSOURCE = 1e-6 `from(`LG_cliplow,inf);
|
||||
(*type="instance", info="Bottom area of drain junction", unit="m^2" *) parameter real ABDRAIN = 1e-12 `from(`AB_cliplow,inf);
|
||||
(*type="instance", info="STI-edge length of drain junction", unit="m" *) parameter real LSDRAIN = 1e-6 `from(`LS_cliplow,inf);
|
||||
(*type="instance", info="Gate-edge length of drain junction", unit="m" *) parameter real LGDRAIN = 1e-6 `from(`LG_cliplow,inf);
|
||||
(*type="instance", info="Bottom area of source junction", unit="m^2" *) parameter real AS = 1E-12 `from(`AB_cliplow,inf);
|
||||
(*type="instance", info="Perimeter of source junction", unit="m" *) parameter real PS = 1E-6 `from(`LS_cliplow,inf);
|
||||
(*type="instance", info="Bottom area of drain junction", unit="m^2" *) parameter real AD = 1E-12 `from(`AB_cliplow,inf);
|
||||
(*type="instance", info="Perimeter of drain junction", unit="m" *) parameter real PD = 1E-6 `from(`LS_cliplow,inf);
|
||||
(*type="instance", info="Gate-edge length of source/drain junction", unit="m" *) parameter real JW = 1E-6 `from(`LG_cliplow,inf);
|
||||
(*type="instance", info="Number of devices in parallel", unit="" *) parameter real MULT = 1.0 `from( 0.0,inf );
|
||||
`else // LocalModel
|
||||
`ifdef Binning
|
||||
|
||||
|
|
@ -225,239 +225,239 @@
|
|||
///////////////////////////////////////////////////
|
||||
|
||||
// Special model parameters
|
||||
parameter real LEVEL = 1020 `P(info="Model level" unit="" );
|
||||
parameter real TYPE = 1.0 `from( -1,1 ) `P(info="Channel type parameter, +1=NMOS -1=PMOS" unit="" );
|
||||
(*info="Model level", unit="" *) parameter real LEVEL = 1020 ;
|
||||
(*info="Channel type parameter, +1=NMOS -1=PMOS", unit="" *) parameter real TYPE = 1.0 `from( -1,1 );
|
||||
|
||||
// Reference Temperature
|
||||
parameter real TR = 21.0 `from( -273.0,inf ) `P(info="nominal (reference) temperature" unit="C" );
|
||||
(*info="nominal (reference) temperature", unit="C" *) parameter real TR = 21.0 `from( -273.0,inf );
|
||||
|
||||
// Switch parameters that turn models or effects on or off
|
||||
parameter real SWIGATE = 0.0 `from( 0.0,1.0 ) `P(info="Flag for gate current, 0=turn off IG" unit="" );
|
||||
parameter real SWIMPACT = 0.0 `from( 0.0,1.0 ) `P(info="Flag for impact ionization current, 0=turn off II" unit="" );
|
||||
parameter real SWGIDL = 0.0 `from( 0.0,1.0 ) `P(info="Flag for GIDL current, 0=turn off IGIDL" unit="" );
|
||||
parameter real SWJUNCAP = 0.0 `from( 0.0,3.0 ) `P(info="Flag for juncap, 0=turn off juncap" unit="" );
|
||||
parameter real QMC = 1.0 `from( 0.0,inf ) `P(info="Quantum-mechanical correction factor" unit="" );
|
||||
(*info="Flag for gate current, 0=turn off IG", unit="" *) parameter real SWIGATE = 0.0 `from( 0.0,1.0 );
|
||||
(*info="Flag for impact ionization current, 0=turn off II", unit="" *) parameter real SWIMPACT = 0.0 `from( 0.0,1.0 );
|
||||
(*info="Flag for GIDL current, 0=turn off IGIDL", unit="" *) parameter real SWGIDL = 0.0 `from( 0.0,1.0 );
|
||||
(*info="Flag for juncap, 0=turn off juncap", unit="" *) parameter real SWJUNCAP = 0.0 `from( 0.0,3.0 );
|
||||
(*info="Quantum-mechanical correction factor", unit="" *) parameter real QMC = 1.0 `from( 0.0,inf );
|
||||
|
||||
// Process Parameters
|
||||
parameter real LVARO = 0.0 `P(info="Geom. independent difference between actual and programmed gate length" unit="m" );
|
||||
parameter real LVARL = 0.0 `P(info="Length dependence of LVAR" unit="" );
|
||||
parameter real LVARW = 0.0 `P(info="Width dependence of LVAR" unit="" );
|
||||
parameter real LAP = 0.0 `P(info="Effective channel length reduction per side" unit="m" );
|
||||
parameter real WVARO = 0.0 `P(info="Geom. independent difference between actual and programmed field-oxide opening" unit="m" );
|
||||
parameter real WVARL = 0.0 `P(info="Length dependence of WVAR" unit="" );
|
||||
parameter real WVARW = 0.0 `P(info="Width dependence of WVAR" unit="" );
|
||||
parameter real WOT = 0.0 `P(info="Effective channel width reduction per side" unit="m" );
|
||||
parameter real DLQ = 0.0 `P(info="Effective channel length reduction for CV" unit="m" );
|
||||
parameter real DWQ = 0.0 `P(info="Effective channel width reduction for CV" unit="m" );
|
||||
parameter real VFBO = -1.0 `P(info="Geometry-independent flat-band voltage at TR" unit="V" );
|
||||
parameter real VFBL = 0.0 `P(info="Length dependence of flat-band voltage" unit="" );
|
||||
parameter real VFBW = 0.0 `P(info="Width dependence of flat-band voltage" unit="" );
|
||||
parameter real VFBLW = 0.0 `P(info="Area dependence of flat-band voltage" unit="" );
|
||||
parameter real STVFBO = 5e-4 `P(info="Geometry-independent temperature dependence of VFB" unit="V/K" );
|
||||
parameter real STVFBL = 0.0 `P(info="Length dependence of temperature dependence of VFB" unit="" );
|
||||
parameter real STVFBW = 0.0 `P(info="Width dependence of temperature dependence of VFB" unit="" );
|
||||
parameter real STVFBLW = 0.0 `P(info="Area dependence of temperature dependence of VFB" unit="" );
|
||||
parameter real TOXO = 2e-9 `from( 1e-10,inf ) `P(info="Gate oxide thickness" unit="m" );
|
||||
parameter real NSUBO = 3e23 `from( 1e20,inf ) `P(info="Geometry independent substrate doping" unit="m^-3" );
|
||||
parameter real NSUBW = 0.0 `P(info="Width dependence of background doping NSUBO due to segregation" unit="" );
|
||||
parameter real WSEG = 1e-8 `from( 1e-10,inf ) `P(info="Char. length of segregation of background doping NSUBO" unit="m" );
|
||||
parameter real NPCK = 1e24 `from( 0.0,inf ) `P(info="Pocket doping level" unit="m^-3" );
|
||||
parameter real NPCKW = 0.0 `P(info="Width dependence of pocket doping NPCK due to segregation" unit="" );
|
||||
parameter real WSEGP = 1e-8 `from( 1e-10,inf ) `P(info="Char. length of segregation of pocket doping NPCK" unit="m" );
|
||||
parameter real LPCK = 1e-8 `from( 1e-10,inf ) `P(info="Char. length of lateral doping profile" unit="m" );
|
||||
parameter real LPCKW = 0.0 `P(info="Width dependence of char. length of lateral doping profile" unit="" );
|
||||
parameter real FOL1 = 0.0 `P(info="First length dependence coefficient for short channel body effect" unit="" );
|
||||
parameter real FOL2 = 0.0 `P(info="Second length dependence coefficient for short channel body effect" unit="" );
|
||||
parameter real VNSUBO = 0.0 `P(info="Effective doping bias-dependence parameter" unit="V" );
|
||||
parameter real NSLPO = 0.05 `P(info="Effective doping bias-dependence parameter" unit="V" );
|
||||
parameter real DNSUBO = 0.0 `P(info="Effective doping bias-dependence parameter" unit="V^-1" );
|
||||
parameter real DPHIBO = 0.0 `P(info="Geometry independent offset of PHIB" unit="V" );
|
||||
parameter real DPHIBL = 0.0 `P(info="Length dependence offset of PHIB" unit="V" );
|
||||
parameter real DPHIBLEXP= 1.0 `P(info="Exponent for length dependence of offset of PHIB" unit="" );
|
||||
parameter real DPHIBW = 0.0 `P(info="Width dependence of offset of PHIB" unit="" );
|
||||
parameter real DPHIBLW = 0.0 `P(info="Area dependence of offset of PHIB" unit="" );
|
||||
parameter real NPO = 1e26 `P(info="Geometry-independent gate poly-silicon doping" unit="m^-3" );
|
||||
parameter real NPL = 0.0 `P(info="Length dependence of gate poly-silicon doping" unit="" );
|
||||
parameter real CTO = 0.0 `P(info="Geometry-independent interface states factor" unit="" );
|
||||
parameter real CTL = 0.0 `P(info="Length dependence of interface states factor" unit="" );
|
||||
parameter real CTLEXP = 1.0 `P(info="Exponent for length dependence of interface states factor" unit="" );
|
||||
parameter real CTW = 0.0 `P(info="Width dependence of interface states factor" unit="" );
|
||||
parameter real CTLW = 0.0 `P(info="Area dependence of interface states factor" unit="" );
|
||||
parameter real TOXOVO = 2e-9 `from( 1e-10,inf ) `P(info="Overlap oxide thickness" unit="m" );
|
||||
parameter real LOV = 0 `from( 0.0,inf ) `P(info="Overlap length for gate/drain and gate/source overlap capacitance" unit="m" );
|
||||
parameter real NOVO = 5e25 `P(info="Effective doping of overlap region" unit="m^-3" );
|
||||
(*info="Geom. independent difference between actual and programmed gate length", unit="m" *) parameter real LVARO = 0.0 ;
|
||||
(*info="Length dependence of LVAR", unit="" *) parameter real LVARL = 0.0 ;
|
||||
(*info="Width dependence of LVAR", unit="" *) parameter real LVARW = 0.0 ;
|
||||
(*info="Effective channel length reduction per side", unit="m" *) parameter real LAP = 0.0 ;
|
||||
(*info="Geom. independent difference between actual and programmed field-oxide opening", unit="m" *) parameter real WVARO = 0.0 ;
|
||||
(*info="Length dependence of WVAR", unit="" *) parameter real WVARL = 0.0 ;
|
||||
(*info="Width dependence of WVAR", unit="" *) parameter real WVARW = 0.0 ;
|
||||
(*info="Effective channel width reduction per side", unit="m" *) parameter real WOT = 0.0 ;
|
||||
(*info="Effective channel length reduction for CV", unit="m" *) parameter real DLQ = 0.0 ;
|
||||
(*info="Effective channel width reduction for CV", unit="m" *) parameter real DWQ = 0.0 ;
|
||||
(*info="Geometry-independent flat-band voltage at TR", unit="V" *) parameter real VFBO = -1.0 ;
|
||||
(*info="Length dependence of flat-band voltage", unit="" *) parameter real VFBL = 0.0 ;
|
||||
(*info="Width dependence of flat-band voltage", unit="" *) parameter real VFBW = 0.0 ;
|
||||
(*info="Area dependence of flat-band voltage", unit="" *) parameter real VFBLW = 0.0 ;
|
||||
(*info="Geometry-independent temperature dependence of VFB", unit="V/K" *) parameter real STVFBO = 5e-4 ;
|
||||
(*info="Length dependence of temperature dependence of VFB", unit="" *) parameter real STVFBL = 0.0 ;
|
||||
(*info="Width dependence of temperature dependence of VFB", unit="" *) parameter real STVFBW = 0.0 ;
|
||||
(*info="Area dependence of temperature dependence of VFB", unit="" *) parameter real STVFBLW = 0.0 ;
|
||||
(*info="Gate oxide thickness", unit="m" *) parameter real TOXO = 2e-9 `from( 1e-10,inf );
|
||||
(*info="Geometry independent substrate doping", unit="m^-3" *) parameter real NSUBO = 3e23 `from( 1e20,inf );
|
||||
(*info="Width dependence of background doping NSUBO due to segregation", unit="" *) parameter real NSUBW = 0.0 ;
|
||||
(*info="Char. length of segregation of background doping NSUBO", unit="m" *) parameter real WSEG = 1e-8 `from( 1e-10,inf );
|
||||
(*info="Pocket doping level", unit="m^-3" *) parameter real NPCK = 1e24 `from( 0.0,inf );
|
||||
(*info="Width dependence of pocket doping NPCK due to segregation", unit="" *) parameter real NPCKW = 0.0 ;
|
||||
(*info="Char. length of segregation of pocket doping NPCK", unit="m" *) parameter real WSEGP = 1e-8 `from( 1e-10,inf );
|
||||
(*info="Char. length of lateral doping profile", unit="m" *) parameter real LPCK = 1e-8 `from( 1e-10,inf );
|
||||
(*info="Width dependence of char. length of lateral doping profile", unit="" *) parameter real LPCKW = 0.0 ;
|
||||
(*info="First length dependence coefficient for short channel body effect", unit="" *) parameter real FOL1 = 0.0 ;
|
||||
(*info="Second length dependence coefficient for short channel body effect", unit="" *) parameter real FOL2 = 0.0 ;
|
||||
(*info="Effective doping bias-dependence parameter", unit="V" *) parameter real VNSUBO = 0.0 ;
|
||||
(*info="Effective doping bias-dependence parameter", unit="V" *) parameter real NSLPO = 0.05 ;
|
||||
(*info="Effective doping bias-dependence parameter", unit="V^-1" *) parameter real DNSUBO = 0.0 ;
|
||||
(*info="Geometry independent offset of PHIB", unit="V" *) parameter real DPHIBO = 0.0 ;
|
||||
(*info="Length dependence offset of PHIB", unit="V" *) parameter real DPHIBL = 0.0 ;
|
||||
(*info="Exponent for length dependence of offset of PHIB", unit="" *) parameter real DPHIBLEXP= 1.0 ;
|
||||
(*info="Width dependence of offset of PHIB", unit="" *) parameter real DPHIBW = 0.0 ;
|
||||
(*info="Area dependence of offset of PHIB", unit="" *) parameter real DPHIBLW = 0.0 ;
|
||||
(*info="Geometry-independent gate poly-silicon doping", unit="m^-3" *) parameter real NPO = 1e26 ;
|
||||
(*info="Length dependence of gate poly-silicon doping", unit="" *) parameter real NPL = 0.0 ;
|
||||
(*info="Geometry-independent interface states factor", unit="" *) parameter real CTO = 0.0 ;
|
||||
(*info="Length dependence of interface states factor", unit="" *) parameter real CTL = 0.0 ;
|
||||
(*info="Exponent for length dependence of interface states factor", unit="" *) parameter real CTLEXP = 1.0 ;
|
||||
(*info="Width dependence of interface states factor", unit="" *) parameter real CTW = 0.0 ;
|
||||
(*info="Area dependence of interface states factor", unit="" *) parameter real CTLW = 0.0 ;
|
||||
(*info="Overlap oxide thickness", unit="m" *) parameter real TOXOVO = 2e-9 `from( 1e-10,inf );
|
||||
(*info="Overlap length for gate/drain and gate/source overlap capacitance", unit="m" *) parameter real LOV = 0 `from( 0.0,inf );
|
||||
(*info="Effective doping of overlap region", unit="m^-3" *) parameter real NOVO = 5e25 ;
|
||||
|
||||
// DIBL Parameters
|
||||
parameter real CFL = 0.0 `P(info="Length dependence of DIBL-parameter" unit="V^-1" );
|
||||
parameter real CFLEXP = 2.0 `P(info="Exponent for length dependence of CF" unit="" );
|
||||
parameter real CFW = 0.0 `P(info="Width dependence of CF" unit="" );
|
||||
parameter real CFBO = 0.0 `P(info="Back-bias dependence of CF" unit="V^-1" );
|
||||
(*info="Length dependence of DIBL-parameter", unit="V^-1" *) parameter real CFL = 0.0 ;
|
||||
(*info="Exponent for length dependence of CF", unit="" *) parameter real CFLEXP = 2.0 ;
|
||||
(*info="Width dependence of CF", unit="" *) parameter real CFW = 0.0 ;
|
||||
(*info="Back-bias dependence of CF", unit="V^-1" *) parameter real CFBO = 0.0 ;
|
||||
|
||||
// Mobility Parameters
|
||||
parameter real UO = 5e-2 `P(info="Zero-field mobility at TR" unit="m^2/V/s" );
|
||||
parameter real FBET1 = 0.0 `P(info="Relative mobility decrease due to first lateral profile" unit="" );
|
||||
parameter real FBET1W = 0.0 `P(info="Width dependence of relative mobility decrease due to first lateral profile" unit="" );
|
||||
parameter real LP1 = 1e-8 `from( 1e-10,inf ) `P(info="Mobility-related characteristic length of first lateral profile" unit="m" );
|
||||
parameter real LP1W = 0.0 `P(info="Width dependence of mobility-related characteristic length of first lateral profile" unit="" );
|
||||
parameter real FBET2 = 0.0 `P(info="Relative mobility decrease due to second lateral profile" unit="" );
|
||||
parameter real LP2 = 1e-8 `from( 1e-10,inf ) `P(info="Mobility-related characteristic length of second lateral profile" unit="m" );
|
||||
parameter real BETW1 = 0.0 `P(info="First higher-order width scaling coefficient of BETN" unit="" );
|
||||
parameter real BETW2 = 0.0 `P(info="Second higher-order width scaling coefficient of BETN" unit="" );
|
||||
parameter real WBET = 1e-9 `from( 1e-10,inf ) `P(info="Characteristic width for width scaling of BETN" unit="m" );
|
||||
parameter real STBETO = 1.0 `P(info="Geometry independent temperature dependence of BETN" unit="" );
|
||||
parameter real STBETL = 0.0 `P(info="Length dependence of temperature dependence of BETN" unit="" );
|
||||
parameter real STBETW = 0.0 `P(info="Width dependence of temperature dependence of BETN" unit="" );
|
||||
parameter real STBETLW = 0.0 `P(info="Area dependence of temperature dependence of BETN" unit="" );
|
||||
parameter real MUEO = 0.5 `P(info="Geometry independent mobility reduction coefficient at TR" unit="m/V" );
|
||||
parameter real MUEW = 0.0 `P(info="Width dependence of mobility reduction coefficient at TR" unit="" );
|
||||
parameter real STMUEO = 0.0 `P(info="Temperature dependence of MUE" unit="" );
|
||||
parameter real THEMUO = 1.5 `P(info="Mobility reduction exponent at TR" unit="" );
|
||||
parameter real STTHEMUO = 1.5 `P(info="Temperature dependence of THEMU" unit="" );
|
||||
parameter real CSO = 0.0 `P(info="Geometry independent coulomb scattering parameter at TR" unit="" );
|
||||
parameter real CSL = 0.0 `P(info="Length dependence of CS" unit="" );
|
||||
parameter real CSLEXP = 0.0 `P(info="Exponent for length dependence of CS" unit="" );
|
||||
parameter real CSW = 0.0 `P(info="Width dependence of CS" unit="" );
|
||||
parameter real CSLW = 0.0 `P(info="Area dependence of CS" unit="" );
|
||||
parameter real STCSO = 0.0 `P(info="Temperature dependence of CS" unit="" );
|
||||
parameter real XCORO = 0.0 `P(info="Geometry independent non-universality parameter" unit="V^-1" );
|
||||
parameter real XCORL = 0.0 `P(info="Length dependence of non-universality parameter" unit="" );
|
||||
parameter real XCORW = 0.0 `P(info="Width dependence of non-universality parameter" unit="" );
|
||||
parameter real XCORLW = 0.0 `P(info="Area dependence of non-universality parameter" unit="" );
|
||||
parameter real STXCORO = 0.0 `P(info="Temperature dependence of XCOR" unit="" );
|
||||
parameter real FETAO = 1.0 `P(info="Effective field parameter" unit="" );
|
||||
(*info="Zero-field mobility at TR", unit="m^2/V/s" *) parameter real UO = 5e-2 ;
|
||||
(*info="Relative mobility decrease due to first lateral profile", unit="" *) parameter real FBET1 = 0.0 ;
|
||||
(*info="Width dependence of relative mobility decrease due to first lateral profile", unit="" *) parameter real FBET1W = 0.0 ;
|
||||
(*info="Mobility-related characteristic length of first lateral profile", unit="m" *) parameter real LP1 = 1e-8 `from( 1e-10,inf );
|
||||
(*info="Width dependence of mobility-related characteristic length of first lateral profile", unit="" *) parameter real LP1W = 0.0 ;
|
||||
(*info="Relative mobility decrease due to second lateral profile", unit="" *) parameter real FBET2 = 0.0 ;
|
||||
(*info="Mobility-related characteristic length of second lateral profile", unit="m" *) parameter real LP2 = 1e-8 `from( 1e-10,inf );
|
||||
(*info="First higher-order width scaling coefficient of BETN", unit="" *) parameter real BETW1 = 0.0 ;
|
||||
(*info="Second higher-order width scaling coefficient of BETN", unit="" *) parameter real BETW2 = 0.0 ;
|
||||
(*info="Characteristic width for width scaling of BETN", unit="m" *) parameter real WBET = 1e-9 `from( 1e-10,inf );
|
||||
(*info="Geometry independent temperature dependence of BETN", unit="" *) parameter real STBETO = 1.0 ;
|
||||
(*info="Length dependence of temperature dependence of BETN", unit="" *) parameter real STBETL = 0.0 ;
|
||||
(*info="Width dependence of temperature dependence of BETN", unit="" *) parameter real STBETW = 0.0 ;
|
||||
(*info="Area dependence of temperature dependence of BETN", unit="" *) parameter real STBETLW = 0.0 ;
|
||||
(*info="Geometry independent mobility reduction coefficient at TR", unit="m/V" *) parameter real MUEO = 0.5 ;
|
||||
(*info="Width dependence of mobility reduction coefficient at TR", unit="" *) parameter real MUEW = 0.0 ;
|
||||
(*info="Temperature dependence of MUE", unit="" *) parameter real STMUEO = 0.0 ;
|
||||
(*info="Mobility reduction exponent at TR", unit="" *) parameter real THEMUO = 1.5 ;
|
||||
(*info="Temperature dependence of THEMU", unit="" *) parameter real STTHEMUO = 1.5 ;
|
||||
(*info="Geometry independent coulomb scattering parameter at TR", unit="" *) parameter real CSO = 0.0 ;
|
||||
(*info="Length dependence of CS", unit="" *) parameter real CSL = 0.0 ;
|
||||
(*info="Exponent for length dependence of CS", unit="" *) parameter real CSLEXP = 0.0 ;
|
||||
(*info="Width dependence of CS", unit="" *) parameter real CSW = 0.0 ;
|
||||
(*info="Area dependence of CS", unit="" *) parameter real CSLW = 0.0 ;
|
||||
(*info="Temperature dependence of CS", unit="" *) parameter real STCSO = 0.0 ;
|
||||
(*info="Geometry independent non-universality parameter", unit="V^-1" *) parameter real XCORO = 0.0 ;
|
||||
(*info="Length dependence of non-universality parameter", unit="" *) parameter real XCORL = 0.0 ;
|
||||
(*info="Width dependence of non-universality parameter", unit="" *) parameter real XCORW = 0.0 ;
|
||||
(*info="Area dependence of non-universality parameter", unit="" *) parameter real XCORLW = 0.0 ;
|
||||
(*info="Temperature dependence of XCOR", unit="" *) parameter real STXCORO = 0.0 ;
|
||||
(*info="Effective field parameter", unit="" *) parameter real FETAO = 1.0 ;
|
||||
|
||||
// Series Resistance
|
||||
parameter real RSW1 = 2.5e3 `P(info="Source/drain series resistance for 1 um wide channel at TR" unit="Ohm" );
|
||||
parameter real RSW2 = 0.0 `P(info="Higher-order width scaling of RS" unit="" );
|
||||
parameter real STRSO = 1.0 `P(info="Temperature dependence of RS" unit="" );
|
||||
parameter real RSBO = 0.0 `P(info="Back-bias dependence of series resistance" unit="V^-1" );
|
||||
parameter real RSGO = 0.0 `P(info="Gate-bias dependence of series resistance" unit="V^-1" );
|
||||
(*info="Source/drain series resistance for 1 um wide channel at TR", unit="Ohm" *) parameter real RSW1 = 2.5e3 ;
|
||||
(*info="Higher-order width scaling of RS", unit="" *) parameter real RSW2 = 0.0 ;
|
||||
(*info="Temperature dependence of RS", unit="" *) parameter real STRSO = 1.0 ;
|
||||
(*info="Back-bias dependence of series resistance", unit="V^-1" *) parameter real RSBO = 0.0 ;
|
||||
(*info="Gate-bias dependence of series resistance", unit="V^-1" *) parameter real RSGO = 0.0 ;
|
||||
|
||||
// Velocity Saturation
|
||||
parameter real THESATO = 0.0 `P(info="Geometry independent velocity saturation parameter at TR" unit="V^-1" );
|
||||
parameter real THESATL = 0.05 `P(info="Length dependence of THESAT" unit="V^-1" );
|
||||
parameter real THESATLEXP= 1.0 `P(info="Exponent for length dependence of THESAT" unit="" );
|
||||
parameter real THESATW = 0.0 `P(info="Width dependence of velocity saturation parameter" unit="" );
|
||||
parameter real THESATLW = 0.0 `P(info="Area dependence of velocity saturation parameter" unit="" );
|
||||
parameter real STTHESATO= 1.0 `P(info="Geometry independent temperature dependence of THESAT" unit="" );
|
||||
parameter real STTHESATL= 0.0 `P(info="Length dependence of temperature dependence of THESAT" unit="" );
|
||||
parameter real STTHESATW= 0.0 `P(info="Width dependence of temperature dependence of THESAT" unit="" );
|
||||
parameter real STTHESATLW= 0.0 `P(info="Area dependence of temperature dependence of THESAT" unit="" );
|
||||
parameter real THESATBO = 0.0 `P(info="Back-bias dependence of velocity saturation" unit="V^-1" );
|
||||
parameter real THESATGO = 0.0 `P(info="Gate-bias dependence of velocity saturation" unit="V^-1" );
|
||||
(*info="Geometry independent velocity saturation parameter at TR", unit="V^-1" *) parameter real THESATO = 0.0 ;
|
||||
(*info="Length dependence of THESAT", unit="V^-1" *) parameter real THESATL = 0.05 ;
|
||||
(*info="Exponent for length dependence of THESAT", unit="" *) parameter real THESATLEXP= 1.0 ;
|
||||
(*info="Width dependence of velocity saturation parameter", unit="" *) parameter real THESATW = 0.0 ;
|
||||
(*info="Area dependence of velocity saturation parameter", unit="" *) parameter real THESATLW = 0.0 ;
|
||||
(*info="Geometry independent temperature dependence of THESAT", unit="" *) parameter real STTHESATO= 1.0 ;
|
||||
(*info="Length dependence of temperature dependence of THESAT", unit="" *) parameter real STTHESATL= 0.0 ;
|
||||
(*info="Width dependence of temperature dependence of THESAT", unit="" *) parameter real STTHESATW= 0.0 ;
|
||||
(*info="Area dependence of temperature dependence of THESAT", unit="" *) parameter real STTHESATLW= 0.0 ;
|
||||
(*info="Back-bias dependence of velocity saturation", unit="V^-1" *) parameter real THESATBO = 0.0 ;
|
||||
(*info="Gate-bias dependence of velocity saturation", unit="V^-1" *) parameter real THESATGO = 0.0 ;
|
||||
|
||||
// Saturation Voltage
|
||||
parameter real AXO = 18 `P(info="Geometry independent linear/saturation transition factor" unit="" );
|
||||
parameter real AXL = 0.4 `from( 0.0,inf ) `P(info="Length dependence of AX" unit="" );
|
||||
(*info="Geometry independent linear/saturation transition factor", unit="" *) parameter real AXO = 18 ;
|
||||
(*info="Length dependence of AX", unit="" *) parameter real AXL = 0.4 `from( 0.0,inf );
|
||||
|
||||
// Channel Length Modulation
|
||||
parameter real ALPL = 5e-4 `P(info="Length dependence of ALP" unit="" );
|
||||
parameter real ALPLEXP = 1.0 `P(info="Exponent for length dependence of ALP" unit="" );
|
||||
parameter real ALPW = 0.0 `P(info="Width dependence of ALP" unit="" );
|
||||
parameter real ALP1L1 = 0.0 `P(info="Length dependence of CLM enhancement factor above threshold" unit="V" );
|
||||
parameter real ALP1LEXP = 0.5 `P(info="Exponent for length dependence of ALP1" unit="" );
|
||||
parameter real ALP1L2 = 0.0 `from( 0.0,inf ) `P(info="Second_order length dependence of ALP1" unit="" );
|
||||
parameter real ALP1W = 0.0 `P(info="Width dependence of ALP1" unit="" );
|
||||
parameter real ALP2L1 = 0.0 `P(info="Length dependence of CLM enhancement factor below threshold" unit="V^-1" );
|
||||
parameter real ALP2LEXP = 0.5 `P(info="Exponent for length dependence of ALP2" unit="" );
|
||||
parameter real ALP2L2 = 0.0 `from( 0.0,inf ) `P(info="Second_order length dependence of ALP2" unit="" );
|
||||
parameter real ALP2W = 0.0 `P(info="Width dependence of ALP2" unit="" );
|
||||
parameter real VPO = 0.05 `P(info="CLM logarithmic dependence parameter" unit="V" );
|
||||
(*info="Length dependence of ALP", unit="" *) parameter real ALPL = 5e-4 ;
|
||||
(*info="Exponent for length dependence of ALP", unit="" *) parameter real ALPLEXP = 1.0 ;
|
||||
(*info="Width dependence of ALP", unit="" *) parameter real ALPW = 0.0 ;
|
||||
(*info="Length dependence of CLM enhancement factor above threshold", unit="V" *) parameter real ALP1L1 = 0.0 ;
|
||||
(*info="Exponent for length dependence of ALP1", unit="" *) parameter real ALP1LEXP = 0.5 ;
|
||||
(*info="Second_order length dependence of ALP1", unit="" *) parameter real ALP1L2 = 0.0 `from( 0.0,inf );
|
||||
(*info="Width dependence of ALP1", unit="" *) parameter real ALP1W = 0.0 ;
|
||||
(*info="Length dependence of CLM enhancement factor below threshold", unit="V^-1" *) parameter real ALP2L1 = 0.0 ;
|
||||
(*info="Exponent for length dependence of ALP2", unit="" *) parameter real ALP2LEXP = 0.5 ;
|
||||
(*info="Second_order length dependence of ALP2", unit="" *) parameter real ALP2L2 = 0.0 `from( 0.0,inf );
|
||||
(*info="Width dependence of ALP2", unit="" *) parameter real ALP2W = 0.0 ;
|
||||
(*info="CLM logarithmic dependence parameter", unit="V" *) parameter real VPO = 0.05 ;
|
||||
|
||||
// Weak-avalanche parameters
|
||||
parameter real A1O = 1.0 `P(info="Geometry independent impact-ionization pre-factor" unit="" );
|
||||
parameter real A1L = 0.0 `P(info="Length dependence of A1" unit="" );
|
||||
parameter real A1W = 0.0 `P(info="Width dependence of A1" unit="" );
|
||||
parameter real A2O = 10 `P(info="Impact-ionization exponent at TR" unit="V" );
|
||||
parameter real STA2O = 0.0 `P(info="Temperature dependence of A2" unit="V" );
|
||||
parameter real A3O = 1.0 `P(info="Geometry independent saturation-voltage dependence of II" unit="" );
|
||||
parameter real A3L = 0.0 `P(info="Length dependence of A3" unit="" );
|
||||
parameter real A3W = 0.0 `P(info="Width dependence of A3" unit="" );
|
||||
parameter real A4O = 0.0 `P(info="Geometry independent back-bias dependence of II" unit="V^-0.5" );
|
||||
parameter real A4L = 0.0 `P(info="Length dependence of A4" unit="" );
|
||||
parameter real A4W = 0.0 `P(info="Width dependence of A4" unit="" );
|
||||
(*info="Geometry independent impact-ionization pre-factor", unit="" *) parameter real A1O = 1.0 ;
|
||||
(*info="Length dependence of A1", unit="" *) parameter real A1L = 0.0 ;
|
||||
(*info="Width dependence of A1", unit="" *) parameter real A1W = 0.0 ;
|
||||
(*info="Impact-ionization exponent at TR", unit="V" *) parameter real A2O = 10 ;
|
||||
(*info="Temperature dependence of A2", unit="V" *) parameter real STA2O = 0.0 ;
|
||||
(*info="Geometry independent saturation-voltage dependence of II", unit="" *) parameter real A3O = 1.0 ;
|
||||
(*info="Length dependence of A3", unit="" *) parameter real A3L = 0.0 ;
|
||||
(*info="Width dependence of A3", unit="" *) parameter real A3W = 0.0 ;
|
||||
(*info="Geometry independent back-bias dependence of II", unit="V^-0.5" *) parameter real A4O = 0.0 ;
|
||||
(*info="Length dependence of A4", unit="" *) parameter real A4L = 0.0 ;
|
||||
(*info="Width dependence of A4", unit="" *) parameter real A4W = 0.0 ;
|
||||
|
||||
// Gate current parameters
|
||||
parameter real GCOO = 0.0 `P(info="Gate tunnelling energy adjustment" unit="" );
|
||||
parameter real IGINVLW = 0.0 `P(info="Gate channel current pre-factor for 1 um^2 channel area" unit="A" );
|
||||
parameter real IGOVW = 0.0 `P(info="Gate overlap current pre-factor for 1 um wide channel" unit="A" );
|
||||
parameter real STIGO = 2.0 `P(info="Temperature dependence of IGINV and IGOV" unit="" );
|
||||
parameter real GC2O = 0.375 `P(info="Gate current slope factor" unit="" );
|
||||
parameter real GC3O = 0.063 `P(info="Gate current curvature factor" unit="" );
|
||||
parameter real CHIBO = 3.1 `P(info="Tunnelling barrier height" unit="V" );
|
||||
(*info="Gate tunnelling energy adjustment", unit="" *) parameter real GCOO = 0.0 ;
|
||||
(*info="Gate channel current pre-factor for 1 um^2 channel area", unit="A" *) parameter real IGINVLW = 0.0 ;
|
||||
(*info="Gate overlap current pre-factor for 1 um wide channel", unit="A" *) parameter real IGOVW = 0.0 ;
|
||||
(*info="Temperature dependence of IGINV and IGOV", unit="" *) parameter real STIGO = 2.0 ;
|
||||
(*info="Gate current slope factor", unit="" *) parameter real GC2O = 0.375 ;
|
||||
(*info="Gate current curvature factor", unit="" *) parameter real GC3O = 0.063 ;
|
||||
(*info="Tunnelling barrier height", unit="V" *) parameter real CHIBO = 3.1 ;
|
||||
|
||||
// Gate-induced drain leakage parameters
|
||||
parameter real AGIDLW = 0.0 `P(info="Width dependence of GIDL pre-factor" unit="A/V^3" );
|
||||
parameter real BGIDLO = 41 `P(info="GIDL probability factor at TR" unit="V" );
|
||||
parameter real STBGIDLO = 0.0 `P(info="Temperature dependence of BGIDL" unit="V/K" );
|
||||
parameter real CGIDLO = 0.0 `P(info="Back-bias dependence of GIDL" unit="" );
|
||||
(*info="Width dependence of GIDL pre-factor", unit="A/V^3" *) parameter real AGIDLW = 0.0 ;
|
||||
(*info="GIDL probability factor at TR", unit="V" *) parameter real BGIDLO = 41 ;
|
||||
(*info="Temperature dependence of BGIDL", unit="V/K" *) parameter real STBGIDLO = 0.0 ;
|
||||
(*info="Back-bias dependence of GIDL", unit="" *) parameter real CGIDLO = 0.0 ;
|
||||
|
||||
// Charge Model Parameters
|
||||
parameter real CGBOVL = 0.0 `P(info="Oxide capacitance for gate-bulk overlap for 1 um^2 area" unit="F" );
|
||||
parameter real CFRW = 0.0 `P(info="Outer fringe capacitance for 1 um wide channel" unit="F" );
|
||||
(*info="Oxide capacitance for gate-bulk overlap for 1 um^2 area", unit="F" *) parameter real CGBOVL = 0.0 ;
|
||||
(*info="Outer fringe capacitance for 1 um wide channel", unit="F" *) parameter real CFRW = 0.0 ;
|
||||
|
||||
// Noise Model Parameters
|
||||
parameter real FNTO = 1.0 `P(info="Thermal noise coefficient" unit="" );
|
||||
parameter real NFALW = 8e22 `P(info="First coefficient of flicker noise for 1 um^2 channel area" unit="V^-1/m^4" );
|
||||
parameter real NFBLW = 3e7 `P(info="Second coefficient of flicker noise for 1 um^2 channel area" unit="V^-1/m^2" );
|
||||
parameter real NFCLW = 0.0 `P(info="Third coefficient of flicker noise for 1 um^2 channel area" unit="V^-1" );
|
||||
(*info="Thermal noise coefficient", unit="" *) parameter real FNTO = 1.0 ;
|
||||
(*info="First coefficient of flicker noise for 1 um^2 channel area", unit="V^-1/m^4" *) parameter real NFALW = 8e22 ;
|
||||
(*info="Second coefficient of flicker noise for 1 um^2 channel area", unit="V^-1/m^2" *) parameter real NFBLW = 3e7 ;
|
||||
(*info="Third coefficient of flicker noise for 1 um^2 channel area", unit="V^-1" *) parameter real NFCLW = 0.0 ;
|
||||
|
||||
// Other Parameters
|
||||
parameter real DTA = 0 `P(info="Temperature offset w.r.t. ambient circuit temperature" unit="K" );
|
||||
(*info="Temperature offset w.r.t. ambient circuit temperature", unit="K" *) parameter real DTA = 0 ;
|
||||
`endif // Binning
|
||||
`ifdef NQSmodel
|
||||
|
||||
// NQS parameters
|
||||
parameter real SWNQS = 0.0 `from( 0.0,9.0 ) `P(info="Flag for NQS, 0=off, 1, 2, 3, 5, or 9=number of collocation points" unit="" );
|
||||
parameter real MUNQSO = 1.0 `P(info="Relative mobility for NQS modelling" );
|
||||
parameter real RGO = 1.0e-3 `P(info="Gate resistance" );
|
||||
parameter real RBULKO = 1.0e-3 `P(info="Bulk resistance between node BP and BI" unit="Ohm" );
|
||||
parameter real RWELLO = 1.0e-3 `P(info="Well resistance between node BI and B" unit="Ohm" );
|
||||
parameter real RJUNSO = 1.0e-3 `P(info="Source-side bulk resistance between node BI and BS" unit="Ohm" );
|
||||
parameter real RJUNDO = 1.0e-3 `P(info="Drain-side bulk resistance between node BI and BD" unit="Ohm" );
|
||||
(*info="Flag for NQS, 0=off, 1, 2, 3, 5, or 9=number of collocation points", unit="" *) parameter real SWNQS = 0.0 `from( 0.0,9.0 );
|
||||
(*info="Relative mobility for NQS modelling" *) parameter real MUNQSO = 1.0 ;
|
||||
(*info="Gate resistance" *) parameter real RGO = 1.0e-3 ;
|
||||
(*info="Bulk resistance between node BP and BI", unit="Ohm" *) parameter real RBULKO = 1.0e-3 ;
|
||||
(*info="Well resistance between node BI and B", unit="Ohm" *) parameter real RWELLO = 1.0e-3 ;
|
||||
(*info="Source-side bulk resistance between node BI and BS", unit="Ohm" *) parameter real RJUNSO = 1.0e-3 ;
|
||||
(*info="Drain-side bulk resistance between node BI and BD", unit="Ohm" *) parameter real RJUNDO = 1.0e-3 ;
|
||||
`endif // NQSmodel
|
||||
|
||||
// Stress Model Parameters
|
||||
parameter real SAREF = 1.0e-6 `from( 1e-9,inf ) `P(info="Reference distance beteen OD-edge to poly from one side" unit="m" );
|
||||
parameter real SBREF = 1.0e-6 `from( 1e-9,inf ) `P(info="Reference distance beteen OD-edge to poly from other side" unit="m" );
|
||||
parameter real WLOD = 0 `P(info="Width parameter" unit="m" );
|
||||
parameter real KUO = 0 `P(info="Mobility degradation/enhancement coefficient" unit="m" );
|
||||
parameter real KVSAT = 0 `from( -1.0,1.0 ) `P(info="Saturation velocity degradation/enhancement coefficient" unit="m" );
|
||||
parameter real TKUO = 0 `P(info="Temperature dependence of KUO" unit="" );
|
||||
parameter real LKUO = 0 `P(info="Length dependence of KUO" unit="m^LLODKUO" );
|
||||
parameter real WKUO = 0 `P(info="Width dependence of KUO" unit="m^WLODKUO" );
|
||||
parameter real PKUO = 0 `P(info="Cross-term dependence of KUO" unit="m^(LLODKUO+WLODKUO)" );
|
||||
parameter real LLODKUO = 0 `from( 0.0,inf ) `P(info="Length parameter for UO stress effect" unit="" );
|
||||
parameter real WLODKUO = 0 `from( 0.0,inf ) `P(info="Width parameter for UO stress effect" unit="" );
|
||||
parameter real KVTHO = 0 `P(info="Threshold shift parameter" unit="Vm" );
|
||||
parameter real LKVTHO = 0 `P(info="Length dependence of KVTHO" unit="m^LLODVTH" );
|
||||
parameter real WKVTHO = 0 `P(info="Width dependence of KVTHO" unit="m^WLODVTH" );
|
||||
parameter real PKVTHO = 0 `P(info="Cross-term dependence of KVTHO" unit="m^(LLODVTH+WLODVTH)" );
|
||||
parameter real LLODVTH = 0 `from( 0.0,inf ) `P(info="Length parameter for VTH-stress effect" unit="" );
|
||||
parameter real WLODVTH = 0 `from( 0.0,inf ) `P(info="Width parameter for VTH-stress effect" unit="" );
|
||||
parameter real STETAO = 0 `P(info="eta0 shift factor related to VTHO change" unit="m" );
|
||||
parameter real LODETAO = 1.0 `from( 0.0,inf ) `P(info="eta0 shift modifaction factor for stress effect" unit="" );
|
||||
(*info="Reference distance beteen OD-edge to poly from one side", unit="m" *) parameter real SAREF = 1.0e-6 `from( 1e-9,inf );
|
||||
(*info="Reference distance beteen OD-edge to poly from other side", unit="m" *) parameter real SBREF = 1.0e-6 `from( 1e-9,inf );
|
||||
(*info="Width parameter", unit="m" *) parameter real WLOD = 0 ;
|
||||
(*info="Mobility degradation/enhancement coefficient", unit="m" *) parameter real KUO = 0 ;
|
||||
(*info="Saturation velocity degradation/enhancement coefficient", unit="m" *) parameter real KVSAT = 0 `from( -1.0,1.0 );
|
||||
(*info="Temperature dependence of KUO", unit="" *) parameter real TKUO = 0 ;
|
||||
(*info="Length dependence of KUO", unit="m^LLODKUO" *) parameter real LKUO = 0 ;
|
||||
(*info="Width dependence of KUO", unit="m^WLODKUO" *) parameter real WKUO = 0 ;
|
||||
(*info="Cross-term dependence of KUO", unit="m^(LLODKUO+WLODKUO)" *) parameter real PKUO = 0 ;
|
||||
(*info="Length parameter for UO stress effect", unit="" *) parameter real LLODKUO = 0 `from( 0.0,inf );
|
||||
(*info="Width parameter for UO stress effect", unit="" *) parameter real WLODKUO = 0 `from( 0.0,inf );
|
||||
(*info="Threshold shift parameter", unit="Vm" *) parameter real KVTHO = 0 ;
|
||||
(*info="Length dependence of KVTHO", unit="m^LLODVTH" *) parameter real LKVTHO = 0 ;
|
||||
(*info="Width dependence of KVTHO", unit="m^WLODVTH" *) parameter real WKVTHO = 0 ;
|
||||
(*info="Cross-term dependence of KVTHO", unit="m^(LLODVTH+WLODVTH)" *) parameter real PKVTHO = 0 ;
|
||||
(*info="Length parameter for VTH-stress effect", unit="" *) parameter real LLODVTH = 0 `from( 0.0,inf );
|
||||
(*info="Width parameter for VTH-stress effect", unit="" *) parameter real WLODVTH = 0 `from( 0.0,inf );
|
||||
(*info="eta0 shift factor related to VTHO change", unit="m" *) parameter real STETAO = 0 ;
|
||||
(*info="eta0 shift modifaction factor for stress effect", unit="" *) parameter real LODETAO = 1.0 `from( 0.0,inf );
|
||||
|
||||
// JUNCAP Parameters
|
||||
parameter real TRJ = 21 `from(`TRJ_cliplow,inf) `P(info="reference temperature" unit="C");
|
||||
(*info="reference temperature", unit="C"*) parameter real TRJ = 21 `from(`TRJ_cliplow,inf);
|
||||
`include "JUNCAP200_parlist.include"
|
||||
|
||||
// Instance parameters
|
||||
parameter real L = 10e-6 `from( 1e-9,inf ) `P(type="instance" info="Design length" unit="m" );
|
||||
parameter real W = 10e-6 `from( 1e-9,inf ) `P(type="instance" info="Design width" unit="m" );
|
||||
parameter real SA = 0.0 `P(type="instance" info="Distance beteen OD-edge to poly from one side" unit="m" );
|
||||
parameter real SB = 0.0 `P(type="instance" info="Distance beteen OD-edge to poly from other side" unit="m" );
|
||||
parameter real ABSOURCE = 1E-12 `from(`AB_cliplow,inf) `P(type="instance" info="Bottom area of source junction" unit="m^2" );
|
||||
parameter real LSSOURCE = 1E-6 `from(`LS_cliplow,inf) `P(type="instance" info="STI-edge length of source junction" unit="m" );
|
||||
parameter real LGSOURCE = 1E-6 `from(`LG_cliplow,inf) `P(type="instance" info="Gate-edge length of source junction" unit="m" );
|
||||
parameter real ABDRAIN = 1E-12 `from(`AB_cliplow,inf) `P(type="instance" info="Bottom area of drain junction" unit="m^2" );
|
||||
parameter real LSDRAIN = 1E-6 `from(`LS_cliplow,inf) `P(type="instance" info="STI-edge length of drain junction" unit="m" );
|
||||
parameter real LGDRAIN = 1E-6 `from(`LG_cliplow,inf) `P(type="instance" info="Gate-edge length of drain junction" unit="m" );
|
||||
parameter real AS = 1E-12 `from(`AB_cliplow,inf) `P(type="instance" info="Bottom area of source junction" unit="m^2" );
|
||||
parameter real PS = 1E-6 `from(`LS_cliplow,inf) `P(type="instance" info="Perimeter of source junction" unit="m" );
|
||||
parameter real AD = 1E-12 `from(`AB_cliplow,inf) `P(type="instance" info="Bottom area of drain junction" unit="m^2" );
|
||||
parameter real PD = 1E-6 `from(`LS_cliplow,inf) `P(type="instance" info="Perimeter of drain junction" unit="m" );
|
||||
parameter real MULT = 1.0 `from( 0.0,inf ) `P(type="instance" info="Number of devices in parallel" unit="" );
|
||||
(*type="instance", info="Design length", unit="m" *) parameter real L = 10e-6 `from( 1e-9,inf );
|
||||
(*type="instance", info="Design width", unit="m" *) parameter real W = 10e-6 `from( 1e-9,inf );
|
||||
(*type="instance", info="Distance beteen OD-edge to poly from one side", unit="m" *) parameter real SA = 0.0 ;
|
||||
(*type="instance", info="Distance beteen OD-edge to poly from other side", unit="m" *) parameter real SB = 0.0 ;
|
||||
(*type="instance", info="Bottom area of source junction", unit="m^2" *) parameter real ABSOURCE = 1E-12 `from(`AB_cliplow,inf);
|
||||
(*type="instance", info="STI-edge length of source junction", unit="m" *) parameter real LSSOURCE = 1E-6 `from(`LS_cliplow,inf);
|
||||
(*type="instance", info="Gate-edge length of source junction", unit="m" *) parameter real LGSOURCE = 1E-6 `from(`LG_cliplow,inf);
|
||||
(*type="instance", info="Bottom area of drain junction", unit="m^2" *) parameter real ABDRAIN = 1E-12 `from(`AB_cliplow,inf);
|
||||
(*type="instance", info="STI-edge length of drain junction", unit="m" *) parameter real LSDRAIN = 1E-6 `from(`LS_cliplow,inf);
|
||||
(*type="instance", info="Gate-edge length of drain junction", unit="m" *) parameter real LGDRAIN = 1E-6 `from(`LG_cliplow,inf);
|
||||
(*type="instance", info="Bottom area of source junction", unit="m^2" *) parameter real AS = 1E-12 `from(`AB_cliplow,inf);
|
||||
(*type="instance", info="Perimeter of source junction", unit="m" *) parameter real PS = 1E-6 `from(`LS_cliplow,inf);
|
||||
(*type="instance", info="Bottom area of drain junction", unit="m^2" *) parameter real AD = 1E-12 `from(`AB_cliplow,inf);
|
||||
(*type="instance", info="Perimeter of drain junction", unit="m" *) parameter real PD = 1E-6 `from(`LS_cliplow,inf);
|
||||
(*type="instance", info="Number of devices in parallel", unit="" *) parameter real MULT = 1.0 `from( 0.0,inf );
|
||||
|
||||
//////////////////////////
|
||||
//
|
||||
|
|
@ -632,98 +632,98 @@
|
|||
|
||||
real id_op, is, ig, ib, P_D, facvsb, facvsb0, sig1k;
|
||||
|
||||
real ctype `P(ask="yes" info="Flag for channel type" unit="");
|
||||
real sdint `P(ask="yes" info="Flag for source-drain interchange" unit="");
|
||||
(*ask="yes", info="Flag for channel type", unit=""*) real ctype ;
|
||||
(*ask="yes", info="Flag for source-drain interchange", unit=""*) real sdint ;
|
||||
|
||||
real ise `P(ask="yes" info="Total source current" unit="A");
|
||||
real ige `P(ask="yes" info="Total gate current" unit="A");
|
||||
real ide `P(ask="yes" info="Total drain current" unit="A");
|
||||
real ibe `P(ask="yes" info="Total bulk current" unit="A");
|
||||
real ids `P(ask="yes" info="Drain current, excl. avalanche, tunnel, GISL, GIDL, and junction currents" unit="A");
|
||||
real idb `P(ask="yes" info="Drain to bulk current" unit="A");
|
||||
real isb `P(ask="yes" info="Source to bulk current" unit="A");
|
||||
real igs `P(ask="yes" info="Gate-source tunneling current" unit="A");
|
||||
real igd `P(ask="yes" info="Gate-drain tunneling current" unit="A");
|
||||
real igb `P(ask="yes" info="Gate-bulk tunneling current" unit="A");
|
||||
real igcs `P(ask="yes" info="Gate-channel tunneling current (source component)" unit="A");
|
||||
real igcd `P(ask="yes" info="Gate-channel tunneling current (drain component)" unit="A");
|
||||
real iavl `P(ask="yes" info="Substrate current due to weak avelanche" unit="A");
|
||||
real igisl `P(ask="yes" info="Gate-induced source leakage current" unit="A");
|
||||
real igidl `P(ask="yes" info="Gate-induced drain leakage current" unit="A");
|
||||
(*ask="yes", info="Total source current", unit="A"*) real ise ;
|
||||
(*ask="yes", info="Total gate current", unit="A"*) real ige ;
|
||||
(*ask="yes", info="Total drain current", unit="A"*) real ide ;
|
||||
(*ask="yes", info="Total bulk current", unit="A"*) real ibe ;
|
||||
(*ask="yes", info="Drain current, excl. avalanche, tunnel, GISL, GIDL, and junction currents", unit="A"*) real ids ;
|
||||
(*ask="yes", info="Drain to bulk current", unit="A"*) real idb ;
|
||||
(*ask="yes", info="Source to bulk current", unit="A"*) real isb ;
|
||||
(*ask="yes", info="Gate-source tunneling current", unit="A"*) real igs ;
|
||||
(*ask="yes", info="Gate-drain tunneling current", unit="A"*) real igd ;
|
||||
(*ask="yes", info="Gate-bulk tunneling current", unit="A"*) real igb ;
|
||||
(*ask="yes", info="Gate-channel tunneling current (source component)", unit="A"*) real igcs ;
|
||||
(*ask="yes", info="Gate-channel tunneling current (drain component)", unit="A"*) real igcd ;
|
||||
(*ask="yes", info="Substrate current due to weak avelanche", unit="A"*) real iavl ;
|
||||
(*ask="yes", info="Gate-induced source leakage current", unit="A"*) real igisl ;
|
||||
(*ask="yes", info="Gate-induced drain leakage current", unit="A"*) real igidl ;
|
||||
|
||||
real ijs `P(ask="yes" info="Total source junction current" unit="A");
|
||||
real ijsbot `P(ask="yes" info="Source junction current (bottom component)" unit="A");
|
||||
real ijsgat `P(ask="yes" info="Source junction current (gate-edge component)" unit="A");
|
||||
real ijssti `P(ask="yes" info="Source junction current (STI-edge component)" unit="A");
|
||||
real ijd `P(ask="yes" info="Total drain junction current" unit="A");
|
||||
real ijdbot `P(ask="yes" info="Drain junction current (bottom component)" unit="A");
|
||||
real ijdgat `P(ask="yes" info="Drain junction current (gate-edge component)" unit="A");
|
||||
real ijdsti `P(ask="yes" info="Drain junction current (STI-edge component)" unit="A");
|
||||
(*ask="yes", info="Total source junction current", unit="A"*) real ijs ;
|
||||
(*ask="yes", info="Source junction current (bottom component)", unit="A"*) real ijsbot ;
|
||||
(*ask="yes", info="Source junction current (gate-edge component)", unit="A"*) real ijsgat ;
|
||||
(*ask="yes", info="Source junction current (STI-edge component)", unit="A"*) real ijssti ;
|
||||
(*ask="yes", info="Total drain junction current", unit="A"*) real ijd ;
|
||||
(*ask="yes", info="Drain junction current (bottom component)", unit="A"*) real ijdbot ;
|
||||
(*ask="yes", info="Drain junction current (gate-edge component)", unit="A"*) real ijdgat ;
|
||||
(*ask="yes", info="Drain junction current (STI-edge component)", unit="A"*) real ijdsti ;
|
||||
|
||||
real vds `P(ask="yes" info="Drain-source voltage" unit="V");
|
||||
real vgs `P(ask="yes" info="Gate-source voltage" unit="V");
|
||||
real vsb `P(ask="yes" info="Source-bulk voltage" unit="V");
|
||||
real vto `P(ask="yes" info="Zero-bias threshold voltage" unit="V");
|
||||
real vts `P(ask="yes" info="Threshold voltage including back bias effects" unit="V");
|
||||
real vth `P(ask="yes" info="Threshold voltage including back bias and drain bias effects" unit="V");
|
||||
real vgt `P(ask="yes" info="Effective gate drive voltage including back bias and drain bias effects" unit="V");
|
||||
real vdss `P(ask="yes" info="Drain saturation voltage at actual bias" unit="V");
|
||||
real vsat `P(ask="yes" info="Saturation limit" unit="V");
|
||||
(*ask="yes", info="Drain-source voltage", unit="V"*) real vds ;
|
||||
(*ask="yes", info="Gate-source voltage", unit="V"*) real vgs ;
|
||||
(*ask="yes", info="Source-bulk voltage", unit="V"*) real vsb ;
|
||||
(*ask="yes", info="Zero-bias threshold voltage", unit="V"*) real vto ;
|
||||
(*ask="yes", info="Threshold voltage including back bias effects", unit="V"*) real vts ;
|
||||
(*ask="yes", info="Threshold voltage including back bias and drain bias effects", unit="V"*) real vth ;
|
||||
(*ask="yes", info="Effective gate drive voltage including back bias and drain bias effects", unit="V"*) real vgt ;
|
||||
(*ask="yes", info="Drain saturation voltage at actual bias", unit="V"*) real vdss ;
|
||||
(*ask="yes", info="Saturation limit", unit="V"*) real vsat ;
|
||||
|
||||
real gm `P(ask="yes" info="Transconductance" unit="1/Ohm");
|
||||
real gmb `P(ask="yes" info="Substrate transconductance" unit="1/Ohm");
|
||||
real gds `P(ask="yes" info="Output conductance" unit="1/Ohm");
|
||||
real gjs `P(ask="yes" info="Source junction conductance" unit="1/Ohm");
|
||||
real gjd `P(ask="yes" info="Drain junction conductance" unit="1/Ohm");
|
||||
(*ask="yes", info="Transconductance", unit="1/Ohm"*) real gm ;
|
||||
(*ask="yes", info="Substrate transconductance", unit="1/Ohm"*) real gmb ;
|
||||
(*ask="yes", info="Output conductance", unit="1/Ohm"*) real gds ;
|
||||
(*ask="yes", info="Source junction conductance", unit="1/Ohm"*) real gjs ;
|
||||
(*ask="yes", info="Drain junction conductance", unit="1/Ohm"*) real gjd ;
|
||||
|
||||
real cdd `P(ask="yes" info="Drain capacitance" unit="F");
|
||||
real cdg `P(ask="yes" info="Drain-gate capacitance" unit="F");
|
||||
real cds `P(ask="yes" info="Drain-source capacitance" unit="F");
|
||||
real cdb `P(ask="yes" info="Drain-bulk capacitance" unit="F");
|
||||
real cgd `P(ask="yes" info="Gate-drain capacitance" unit="F");
|
||||
real cgg `P(ask="yes" info="Gate capacitance" unit="F");
|
||||
real cgs `P(ask="yes" info="Gate-source capacitance" unit="F");
|
||||
real cgb `P(ask="yes" info="Gate-bulk capacitance" unit="F");
|
||||
real csd `P(ask="yes" info="Source-drain capacitance" unit="F");
|
||||
real csg `P(ask="yes" info="Source-gate capacitance" unit="F");
|
||||
real css `P(ask="yes" info="Source capacitance" unit="F");
|
||||
real csb `P(ask="yes" info="Source-bulk capacitance" unit="F");
|
||||
real cbd `P(ask="yes" info="Bulk-drain capacitance" unit="F");
|
||||
real cbg `P(ask="yes" info="Bulk-gate capacitance" unit="F");
|
||||
real cbs `P(ask="yes" info="Bulk-source capacitance" unit="F");
|
||||
real cbb `P(ask="yes" info="Bulk capacitance" unit="F");
|
||||
real cgsol `P(ask="yes" info="Total gate-source overlap capacitance" unit="F");
|
||||
real cgdol `P(ask="yes" info="Total gate-drain overlap capacitance" unit="F");
|
||||
(*ask="yes", info="Drain capacitance", unit="F"*) real cdd ;
|
||||
(*ask="yes", info="Drain-gate capacitance", unit="F"*) real cdg ;
|
||||
(*ask="yes", info="Drain-source capacitance", unit="F"*) real cds ;
|
||||
(*ask="yes", info="Drain-bulk capacitance", unit="F"*) real cdb ;
|
||||
(*ask="yes", info="Gate-drain capacitance", unit="F"*) real cgd ;
|
||||
(*ask="yes", info="Gate capacitance", unit="F"*) real cgg ;
|
||||
(*ask="yes", info="Gate-source capacitance", unit="F"*) real cgs ;
|
||||
(*ask="yes", info="Gate-bulk capacitance", unit="F"*) real cgb ;
|
||||
(*ask="yes", info="Source-drain capacitance", unit="F"*) real csd ;
|
||||
(*ask="yes", info="Source-gate capacitance", unit="F"*) real csg ;
|
||||
(*ask="yes", info="Source capacitance", unit="F"*) real css ;
|
||||
(*ask="yes", info="Source-bulk capacitance", unit="F"*) real csb ;
|
||||
(*ask="yes", info="Bulk-drain capacitance", unit="F"*) real cbd ;
|
||||
(*ask="yes", info="Bulk-gate capacitance", unit="F"*) real cbg ;
|
||||
(*ask="yes", info="Bulk-source capacitance", unit="F"*) real cbs ;
|
||||
(*ask="yes", info="Bulk capacitance", unit="F"*) real cbb ;
|
||||
(*ask="yes", info="Total gate-source overlap capacitance", unit="F"*) real cgsol ;
|
||||
(*ask="yes", info="Total gate-drain overlap capacitance", unit="F"*) real cgdol ;
|
||||
|
||||
real cjs `P(ask="yes" info="Total source junction capacitance" unit="F");
|
||||
real cjsbot `P(ask="yes" info="Source junction capacitance (bottom component)" unit="F");
|
||||
real cjsgat `P(ask="yes" info="Source junction capacitance (gate-edge component)" unit="F");
|
||||
real cjssti `P(ask="yes" info="Source junction capacitance (STI-edge component)" unit="F");
|
||||
real cjd `P(ask="yes" info="Total drain junction capacitance" unit="F");
|
||||
real cjdbot `P(ask="yes" info="Drain junction capacitance (bottom component)" unit="F");
|
||||
real cjdgat `P(ask="yes" info="Drain junction capacitance (gate-edge component)" unit="F");
|
||||
real cjdsti `P(ask="yes" info="Drain junction capacitance (STI-edge component)" unit="F");
|
||||
(*ask="yes", info="Total source junction capacitance", unit="F"*) real cjs ;
|
||||
(*ask="yes", info="Source junction capacitance (bottom component)", unit="F"*) real cjsbot ;
|
||||
(*ask="yes", info="Source junction capacitance (gate-edge component)", unit="F"*) real cjsgat ;
|
||||
(*ask="yes", info="Source junction capacitance (STI-edge component)", unit="F"*) real cjssti ;
|
||||
(*ask="yes", info="Total drain junction capacitance", unit="F"*) real cjd ;
|
||||
(*ask="yes", info="Drain junction capacitance (bottom component)", unit="F"*) real cjdbot ;
|
||||
(*ask="yes", info="Drain junction capacitance (gate-edge component)", unit="F"*) real cjdgat ;
|
||||
(*ask="yes", info="Drain junction capacitance (STI-edge component)", unit="F"*) real cjdsti ;
|
||||
|
||||
real weff `P(ask="yes" info="Effective channel width for geometrical models" unit="m");
|
||||
real leff `P(ask="yes" info="Effective channel length for geometrical models" unit="m");
|
||||
real u `P(ask="yes" info="Transistor gain" unit="");
|
||||
real rout `P(ask="yes" info="Small-signal output resistance" unit="Ohm");
|
||||
real vearly `P(ask="yes" info="Equivalent Early voltage" unit="V");
|
||||
real beff `P(ask="yes" info="Gain factor" unit="A/V^2");
|
||||
real fug `P(ask="yes" info="Unity gain frequency at actual bias" unit="Hz");
|
||||
(*ask="yes", info="Effective channel width for geometrical models", unit="m"*) real weff ;
|
||||
(*ask="yes", info="Effective channel length for geometrical models", unit="m"*) real leff ;
|
||||
(*ask="yes", info="Transistor gain", unit=""*) real u ;
|
||||
(*ask="yes", info="Small-signal output resistance", unit="Ohm"*) real rout ;
|
||||
(*ask="yes", info="Equivalent Early voltage", unit="V"*) real vearly ;
|
||||
(*ask="yes", info="Gain factor", unit="A/V^2"*) real beff ;
|
||||
(*ask="yes", info="Unity gain frequency at actual bias", unit="Hz"*) real fug ;
|
||||
|
||||
real sfl `P(ask="yes" info="Flicker noise current density at 1 Hz" unit="A/Hz");
|
||||
real sqrtsff `P(ask="yes" info="Input-referred RMS white noise voltage density at 1 kHz" unit="V/sqrt(Hz)");
|
||||
real sqrtsfw `P(ask="yes" info="Input-referred RMS white noise voltage density" unit="V/sqrt(Hz)");
|
||||
real sid `P(ask="yes" info="White noise current density" unit="A^2/Hz");
|
||||
real sig `P(ask="yes" info="Induced gate noise current density at 1 Hz" unit="A^2/Hz");
|
||||
real cigid `P(ask="yes" info="Imaginary part of correlation coefficient between Sig and Sid" unit="");
|
||||
real fknee `P(ask="yes" info="Cross-over frequency above which white noise is dominant" unit="Hz");
|
||||
real sigs `P(ask="yes" info="Gate-source current noise spectral density" unit="A^2/Hz");
|
||||
real sigd `P(ask="yes" info="Gate-drain current noise spectral density" unit="A^2/Hz");
|
||||
real siavl `P(ask="yes" info="Impact ionization current noise spectral density" unit="A^2/Hz");
|
||||
real ssi `P(ask="yes" info="Total source junction current noise spectral density" unit="A^2/Hz");
|
||||
real sdi `P(ask="yes" info="Total drain junction current noise specral density" unit="A^2/Hz");
|
||||
(*ask="yes", info="Flicker noise current density at 1 Hz", unit="A/Hz"*) real sfl ;
|
||||
(*ask="yes", info="Input-referred RMS white noise voltage density at 1 kHz", unit="V/sqrt(Hz)"*) real sqrtsff ;
|
||||
(*ask="yes", info="Input-referred RMS white noise voltage density", unit="V/sqrt(Hz)"*) real sqrtsfw ;
|
||||
(*ask="yes", info="White noise current density", unit="A^2/Hz"*) real sid ;
|
||||
(*ask="yes", info="Induced gate noise current density at 1 Hz", unit="A^2/Hz"*) real sig ;
|
||||
(*ask="yes", info="Imaginary part of correlation coefficient between Sig and Sid", unit=""*) real cigid ;
|
||||
(*ask="yes", info="Cross-over frequency above which white noise is dominant", unit="Hz"*) real fknee ;
|
||||
(*ask="yes", info="Gate-source current noise spectral density", unit="A^2/Hz"*) real sigs ;
|
||||
(*ask="yes", info="Gate-drain current noise spectral density", unit="A^2/Hz"*) real sigd ;
|
||||
(*ask="yes", info="Impact ionization current noise spectral density", unit="A^2/Hz"*) real siavl ;
|
||||
(*ask="yes", info="Total source junction current noise spectral density", unit="A^2/Hz"*) real ssi ;
|
||||
(*ask="yes", info="Total drain junction current noise specral density", unit="A^2/Hz"*) real sdi ;
|
||||
`endif // OPinfo
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
Loading…
Reference in New Issue