Browse Source

undo `2011-12-12 Laurent Lemaitre' which broke --adms in favour of --adms3

rlar 14 years ago
parent
commit
206769d241
  1. 8
      ChangeLog
  2. 243
      src/spicelib/devices/adms/hicum0/admsva/hicum0.va
  3. 32
      src/spicelib/devices/adms/mextram/admsva/bjt504t.va
  4. 84
      src/spicelib/devices/adms/psp102/admsva/JUNCAP200_parlist.include
  5. 748
      src/spicelib/devices/adms/psp102/admsva/PSP102_module.include

8
ChangeLog

@ -1,3 +1,11 @@
2011-12-13 Robert Larice
* src/spicelib/devices/adms/hicum0/admsva/hicum0.va ,
* src/spicelib/devices/adms/mextram/admsva/bjt504t.va ,
* src/spicelib/devices/adms/psp102/admsva/JUNCAP200_parlist.include ,
* src/spicelib/devices/adms/psp102/admsva/PSP102_module.include :
undo `2011-12-12 Laurent Lemaitre' which broke --adms in favour of --adms3
adms3 shall now be worked upon in `adms3va' subdirectories
2011-12-13 Robert Larice
* src/spicelib/devices/adms/*/adms3va/* :
copy old amds .va files to a new directory `adms3va'

243
src/spicelib/devices/adms/hicum0/admsva/hicum0.va

@ -39,8 +39,12 @@
`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
@ -197,14 +201,14 @@ 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;
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");
//Branch definitions
@ -227,131 +231,131 @@ module hic0_full (c,b,e,s,tnode);
// 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);
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
(*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];
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
(*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);
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
(*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);
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
(*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];
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
(*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];
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
(*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];
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
(*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];
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
(*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);
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
(*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];
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
(*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);
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
(*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);
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
(*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];
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
(*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;
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
(*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);
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");
// Transistor type
(*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];
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" );
//Circuit simulator specific parameters
(*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;
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");
// Declaration of the variables: begin
real _circuit_gmin;
real HICUMtype ;
real HICUMtype `P(spice:name="type" info="Device type from npn or pnp flags" unit="no" ask="yes");
// QCJMOD
real cj0,vd,z,aj;
@ -381,20 +385,20 @@ module hic0_full (c,b,e,s,tnode);
real aje_t;
// bc charge and cap
(*ask="yes", info="B-C internal junction charge", unit="C"*) real qjci ;
real qjci `P(ask="yes" info="B-C internal junction charge" unit="C");
real qjcx,qjcii,cjcii,qjcxi,qjciii; //cjcx
real cjci0_t_ii,cjcx0_t_ii,cjcx0_t_i,v_j;
// be junction
(*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 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;
// transfer and internal base current
real cc,qj_2,facl;
real tf0,ickf,ickr,itfi,itri,qm;
real qpt,itf,itr;
(*ask="yes", info="Transfer Current", unit="A"*) real it ;
real it `P(ask="yes" info="Transfer Current" unit="A");
real ibe,ire,ibi;
real itfl,itrl,al,s3l,wl,d_qfh;
@ -436,14 +440,14 @@ module hic0_full (c,b,e,s,tnode);
real Vbci,Vbici,Vbiei,Vciei,Vsci,Veie,Vbbi,Vcic,Vbe,Vrth;
//Output to be seen
(*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 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");
real Qbci,Qbe,Qbici,Qbiei;
//Declaration of the variables: end
@ -457,10 +461,11 @@ analog begin
// assign voltages with regard to transistor type
begin : initial_model
if ($param_given(npn))
`INITIAL_MODEL
begin
if (`PGIVEN(npn))
HICUMtype = `NPN;
else if ($param_given(pnp))
else if (`PGIVEN(pnp))
HICUMtype = `PNP;
else
HICUMtype = `NPN;
@ -778,38 +783,38 @@ analog begin
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
// ******************************************
@ -820,7 +825,7 @@ analog begin
//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
// ********************************************

32
src/spicelib/devices/adms/mextram/admsva/bjt504t.va

@ -4,25 +4,31 @@
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;
(*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;
electrical c `P(info="external collector node");
electrical b `P(info="external base node");
electrical e `P(info="external emitter node");
electrical s `P(info="external substrate node");
electrical dt `P(info="external thermal node");
// Internal nodes
(*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;
electrical c1 `P(info="internal collector node 1");
electrical e1 `P(info="internal emitter node");
electrical b1 `P(info="internal base node 1");
electrical b2 `P(info="internal base node 2");
electrical c2 `P(info="internal collector node 2");
electrical c3 `P(info="internal collector node 3");
electrical c4 `P(info="internal collector node 4");
// For correlated noise implementation
(*info="internal noise node"*) electrical noi;
electrical noi `P(info="internal noise node");
`include "parameters.inc"
`include "variables.inc"

84
src/spicelib/devices/adms/psp102/admsva/JUNCAP200_parlist.include

@ -21,45 +21,45 @@
//
//////////////////////////////////////////
(*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 );
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" );

748
src/spicelib/devices/adms/psp102/admsva/PSP102_module.include

@ -86,134 +86,134 @@
///////////////////////////////////////////////////
// Special model parameters, some are also simulator global variables
(*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 );
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" );
// Switch parameters that turn models or effects on or off
(*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 );
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="" );
// Process parameters
(*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 );
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" );
// DIBL parameters
(*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 );
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" );
// Mobility parameters
(*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 );
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="" );
// Series-resistance parameters (for resistance modeling as part of intrinsic mobility reduction)
(*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 );
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" );
// Velocity saturation parameters
(*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 );
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" );
// Saturation voltage parameters
(*info="Linear/saturation transition factor", unit="" *) parameter real AX = 3.0 `from( 2.0,inf );
parameter real AX = 3.0 `from( 2.0,inf ) `P(info="Linear/saturation transition factor" unit="" );
// Channel length modulation (CLM) parameters
(*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 );
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" );
// Impact ionization (II) parameters
(*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 );
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" );
// Gate current parameters
(*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 );
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" );
// Gate Induced Drain/Source Leakage (GIDL) parameters
(*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 ;
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="" );
// Charge model parameters
(*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 );
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" );
// Noise parameters
(*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 );
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" );
`ifdef NQSmodel
// NQS parameters
(*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 );
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" );
`endif // NQSmodel
// JUNCAP Parameters
(*info="reference temperature", unit="C" *) parameter real TRJ = 21 `from(`TRJ_cliplow,inf);
parameter real TRJ = 21 `from(`TRJ_cliplow,inf) `P(info="reference temperature" unit="C" );
`include "JUNCAP200_parlist.include"
// Other parameters
(*info="Temperature offset w.r.t. ambient temperature", unit="K" *) parameter real DTA = 0.0 ;
parameter real DTA = 0.0 `P(info="Temperature offset w.r.t. ambient temperature" unit="K" );
// Instance parameters
(*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 );
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="" );
`else // LocalModel
`ifdef Binning
@ -225,239 +225,239 @@
///////////////////////////////////////////////////
// Special model parameters
(*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 );
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="" );
// Reference Temperature
(*info="nominal (reference) temperature", unit="C" *) parameter real TR = 21.0 `from( -273.0,inf );
parameter real TR = 21.0 `from( -273.0,inf ) `P(info="nominal (reference) temperature" unit="C" );
// Switch parameters that turn models or effects on or off
(*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 );
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="" );
// Process Parameters
(*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 ;
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" );
// DIBL Parameters
(*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 ;
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" );
// Mobility Parameters
(*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 ;
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="" );
// Series Resistance
(*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 ;
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" );
// Velocity Saturation
(*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 ;
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" );
// Saturation Voltage
(*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 );
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="" );
// Channel Length Modulation
(*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 ;
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" );
// Weak-avalanche parameters
(*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 ;
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="" );
// Gate current parameters
(*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 ;
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" );
// Gate-induced drain leakage parameters
(*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 ;
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="" );
// Charge Model Parameters
(*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 ;
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" );
// Noise Model Parameters
(*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 ;
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" );
// Other Parameters
(*info="Temperature offset w.r.t. ambient circuit temperature", unit="K" *) parameter real DTA = 0 ;
parameter real DTA = 0 `P(info="Temperature offset w.r.t. ambient circuit temperature" unit="K" );
`endif // Binning
`ifdef NQSmodel
// NQS parameters
(*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 ;
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" );
`endif // NQSmodel
// Stress Model Parameters
(*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 );
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="" );
// JUNCAP Parameters
(*info="reference temperature", unit="C"*) parameter real TRJ = 21 `from(`TRJ_cliplow,inf);
parameter real TRJ = 21 `from(`TRJ_cliplow,inf) `P(info="reference temperature" unit="C");
`include "JUNCAP200_parlist.include"
// Instance parameters
(*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 );
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="" );
//////////////////////////
//
@ -632,98 +632,98 @@
real id_op, is, ig, ib, P_D, facvsb, facvsb0, sig1k;
(*ask="yes", info="Flag for channel type", unit=""*) real ctype ;
(*ask="yes", info="Flag for source-drain interchange", unit=""*) real sdint ;
(*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 ;
(*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 ;
(*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 ;
(*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 ;
(*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 ;
(*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 ;
(*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 ;
(*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 ;
real ctype `P(ask="yes" info="Flag for channel type" unit="");
real sdint `P(ask="yes" info="Flag for source-drain interchange" unit="");
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");
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");
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");
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");
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");
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");
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");
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");
`endif // OPinfo
/////////////////////////////////////////////////////////////////////////////

Loading…
Cancel
Save