white spaces and format
This commit is contained in:
parent
ab6ff4a934
commit
51d732a7ba
|
|
@ -1,20 +1,20 @@
|
|||
/*
|
||||
EKV MOS model version 2.6 rev.15 with documentation at: http://ekv.epfl.ch
|
||||
EKV MOS model version 2.6 rev.15 with documentation at: http://ekv.epfl.ch
|
||||
Matthias Bucher, Christophe Lallement, Christian Enz, Fabien Theodoloz, Francois Krummenacher
|
||||
Electronics Laboratories, Swiss Federal Institute of Technology Lausanne, Switzerland
|
||||
This Verilog-A was developed by Wladek Grabinski with modifications
|
||||
by Tiburon Design Automation (www.tiburon-da.com).
|
||||
This software has been provided pursuant to a License Agreement containing restrictions on its use.
|
||||
It may not be copied or distributed in any form or medium, disclosed to third parties,
|
||||
reverse engineered or used in any manner not provided for in said License Agreement
|
||||
reverse engineered or used in any manner not provided for in said License Agreement
|
||||
except with the prior written authorization.
|
||||
Licensed under the Educational Community License, Version 2.0 (the "License");
|
||||
Licensed under the Educational Community License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
||||
You may obtain a copy of the License at http://opensource.org/licenses/ECL-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software distributed under
|
||||
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
Unless required by applicable law or agreed to in writing, software distributed under
|
||||
the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
either express or implied. See the License for the specific language governing permissions
|
||||
and limitations under the License.
|
||||
|
||||
|
|
@ -102,68 +102,68 @@ $RCSfile: ekv.va,v $ $Revision: 2.6.15 $ $Date: 2020/05/29 11:50:10 $
|
|||
// Electrical
|
||||
// Current in amperes
|
||||
nature Current
|
||||
units = "A";
|
||||
access = I;
|
||||
idt_nature = Charge;
|
||||
units = "A";
|
||||
access = I;
|
||||
idt_nature = Charge;
|
||||
`ifdef CURRENT_ABSTOL
|
||||
abstol = `CURRENT_ABSTOL;
|
||||
abstol = `CURRENT_ABSTOL;
|
||||
`else
|
||||
abstol = 1e-12;
|
||||
abstol = 1e-12;
|
||||
`endif
|
||||
endnature
|
||||
// Charge in coulombs
|
||||
nature Charge
|
||||
units = "coul";
|
||||
access = Q;
|
||||
ddt_nature = Current;
|
||||
units = "coul";
|
||||
access = Q;
|
||||
ddt_nature = Current;
|
||||
`ifdef CHARGE_ABSTOL
|
||||
abstol = `CHARGE_ABSTOL;
|
||||
abstol = `CHARGE_ABSTOL;
|
||||
`else
|
||||
abstol = 1e-14;
|
||||
abstol = 1e-14;
|
||||
`endif
|
||||
endnature
|
||||
// Potential in volts
|
||||
nature Voltage
|
||||
units = "V";
|
||||
access = V;
|
||||
idt_nature = Flux;
|
||||
units = "V";
|
||||
access = V;
|
||||
idt_nature = Flux;
|
||||
`ifdef VOLTAGE_ABSTOL
|
||||
abstol = `VOLTAGE_ABSTOL;
|
||||
abstol = `VOLTAGE_ABSTOL;
|
||||
`else
|
||||
abstol = 1e-6;
|
||||
abstol = 1e-6;
|
||||
`endif
|
||||
endnature
|
||||
// Flux in Webers
|
||||
nature Flux
|
||||
units = "Wb";
|
||||
access = Phi;
|
||||
ddt_nature = Voltage;
|
||||
units = "Wb";
|
||||
access = Phi;
|
||||
ddt_nature = Voltage;
|
||||
`ifdef FLUX_ABSTOL
|
||||
abstol = `FLUX_ABSTOL;
|
||||
abstol = `FLUX_ABSTOL;
|
||||
`else
|
||||
abstol = 1e-9;
|
||||
abstol = 1e-9;
|
||||
`endif
|
||||
endnature
|
||||
// Conservative discipline
|
||||
discipline electrical
|
||||
potential Voltage;
|
||||
flow Current;
|
||||
potential Voltage;
|
||||
flow Current;
|
||||
enddiscipline
|
||||
// Signal flow disciplines
|
||||
discipline voltage
|
||||
potential Voltage;
|
||||
potential Voltage;
|
||||
enddiscipline
|
||||
discipline current
|
||||
potential Current;
|
||||
potential Current;
|
||||
enddiscipline
|
||||
//from constants.h we need
|
||||
`define C_EPSSIL 1.03594314e-10
|
||||
`define C_EPSOX 34.5e-12
|
||||
`define C_QE 1.602e-19
|
||||
`define C_K 1.3807e-23
|
||||
`define P_K 1.3806226e-23
|
||||
`define P_EPS0 8.85418792394420013968e-12
|
||||
`define P_CELSIUS0 273.15
|
||||
`define P_K 1.3806226e-23
|
||||
`define P_EPS0 8.85418792394420013968e-12
|
||||
`define P_CELSIUS0 273.15
|
||||
`define POS_MIN 1.0E-6
|
||||
`define SQRT2 1.4142135623730950488016887242097
|
||||
`define ONE3RD 0.33333333333333333333333333333333
|
||||
|
|
@ -271,7 +271,7 @@ module ekv_va(d,g,s,b);
|
|||
real csb_d, cssw_d, csswg_d;
|
||||
real csb_s, cssw_s, csswg_s;
|
||||
real qjd, qjs;
|
||||
|
||||
|
||||
// parameter definitions
|
||||
parameter integer TYPE = 1 from [-1:1] exclude 0; // NMOS=1, PMOS=-1
|
||||
parameter integer Noise = 1 from [0:1]; // Set to zero to prevent noise calculation
|
||||
|
|
@ -399,10 +399,10 @@ module ekv_va(d,g,s,b);
|
|||
*/
|
||||
/* If Temp is explicitly specified, use that value
|
||||
otherwise use Tckt+Trise */
|
||||
if (TEMP == -`NOT_GIVEN) //AB: 040902 Temp -> TEMP
|
||||
if (TEMP == -`NOT_GIVEN) //AB: 040902 Temp -> TEMP
|
||||
T = $temperature + Trise;
|
||||
else
|
||||
T = TEMP + `P_CELSIUS0; //AB: 040902 Temp -> TEMP
|
||||
T = TEMP + `P_CELSIUS0; //AB: 040902 Temp -> TEMP
|
||||
if (TNOM == -`NOT_GIVEN)
|
||||
Tnom = `DEFAULT_TNOM + `P_CELSIUS0;
|
||||
else
|
||||
|
|
@ -415,7 +415,7 @@ module ekv_va(d,g,s,b);
|
|||
Vt_Vt = Vt * Vt;
|
||||
Vt_Vt_2 = Vt_Vt + Vt_Vt;
|
||||
Vt_Vt_16 = 16.0 * Vt_Vt;
|
||||
|
||||
|
||||
Eg = 1.16 - 7.02e-4 * T * T / (T + 1108.0);
|
||||
refEg = 1.16 - (7.02e-4*Tnom*Tnom) / (Tnom + 1108.0);
|
||||
deltaT = T - Tnom;
|
||||
|
|
@ -460,8 +460,8 @@ module ekv_va(d,g,s,b);
|
|||
// VGprime:
|
||||
if (V0 == 0.0)
|
||||
deltaVFB = 0.0;
|
||||
// else begin : VGprime //AB: 040902 VGPrime is also a variable and
|
||||
else begin : VGprime_block //AB: 040902 VGPrime -> VGprime_block
|
||||
// else begin : VGprime //AB: 040902 VGPrime is also a variable and
|
||||
else begin : VGprime_block //AB: 040902 VGPrime -> VGprime_block
|
||||
real sqv;
|
||||
// mb 99/03/26 corrected for multiple device number
|
||||
vL = 0.28 * (Leff/(LK*NS) - 0.1);
|
||||
|
|
@ -824,8 +824,8 @@ module ekv_va(d,g,s,b);
|
|||
I(sb) <+ TYPE * Isub;
|
||||
end
|
||||
I(gb) <+ TYPE * ddt(QG); // wg 22/04/08 corrected for device TYPE
|
||||
// if (Noise) begin : Noise //AB: 040902 Noise is also a variable and
|
||||
if (Noise) begin : Noise_block //AB: 040902 Noise -> Noise_block
|
||||
// if (Noise) begin : Noise //AB: 040902 Noise is also a variable and
|
||||
if (Noise) begin : Noise_block //AB: 040902 Noise -> Noise_block
|
||||
real S_flicker, S_thermal;
|
||||
S_thermal = 4 * `P_K * T * Gn;
|
||||
S_flicker = KF * gm * gm / (Weff * NS * Leff * COX);
|
||||
|
|
@ -835,7 +835,7 @@ module ekv_va(d,g,s,b);
|
|||
///////////////////////////////////
|
||||
//EXTRINSIC PART: JUNCTION DIODES//
|
||||
///////////////////////////////////
|
||||
//diode area and perimeter computation
|
||||
//diode area and perimeter computation
|
||||
if ((AS == 0.0) && (HDIF>0.0)) as_i = 2.0*HDIF*Weff;
|
||||
else as_i = AS;
|
||||
if ((PS == 0.0) && (HDIF>0.0)) ps_i = 4.0*HDIF+1.0*Weff;
|
||||
|
|
@ -844,7 +844,7 @@ module ekv_va(d,g,s,b);
|
|||
else ad_i = AD;
|
||||
if ((PD == 0.0) && (HDIF>0.0)) pd_i = 4.0*HDIF+1.0*Weff;
|
||||
else pd_i = PD;
|
||||
//temperature update for diodes
|
||||
//temperature update for diodes
|
||||
temp_arg = exp((refEg/$vt(Tnom) - Eg/Vt + tp_xti*ln(ratioT))/xd_n);
|
||||
js_t = xd_js*temp_arg;
|
||||
jsw_t = xd_jsw*temp_arg;
|
||||
|
|
@ -865,10 +865,10 @@ module ekv_va(d,g,s,b);
|
|||
is_d = js_t*ad_i+jsw_t*pd_i+jswg_t*Weff;
|
||||
arg_d = -v_di_b*ratioT/(Vt*xd_n);
|
||||
if (arg_d < -40.0) arg_d = -40.0;
|
||||
tmp0 = (-v_di_b+xd_bv)*ratioT/(Vt*xd_n);
|
||||
if (tmp0>70) f_breakdown_d = 1.0;
|
||||
else f_breakdown_d = 1.0 + xd_xjbv*exp(-tmp0);
|
||||
// TRAP-ASSISTED TUNNELING CURRENT
|
||||
tmp0 = (-v_di_b+xd_bv)*ratioT/(Vt*xd_n);
|
||||
if (tmp0>70) f_breakdown_d = 1.0;
|
||||
else f_breakdown_d = 1.0 + xd_xjbv*exp(-tmp0);
|
||||
// TRAP-ASSISTED TUNNELING CURRENT
|
||||
idb_tun = -Weff*jswg_t*(exp(v_di_b*ratioT/(Vt*njtsswg_t) * xd_vtsswg/max(xd_vtsswg+v_di_b,1.0e-3))-1.0);
|
||||
idb_tun = idb_tun - pd_i*jsw_t*(exp(v_di_b*ratioT/(Vt*njtssw_t) * xd_vtssw/max(xd_vtssw+v_di_b,1.0e-3))-1.0);
|
||||
idb_tun = idb_tun - ad_i*js_t*(exp(v_di_b*ratioT/(Vt*njts_t) * xd_vts/max(xd_vts+v_di_b,1.0e-3))-1.0);
|
||||
|
|
@ -877,17 +877,17 @@ module ekv_va(d,g,s,b);
|
|||
is_s = js_t*as_i+jsw_t*ps_i+jswg_t*Weff;
|
||||
arg_s = -v_si_b*ratioT/(Vt*xd_n);
|
||||
if (arg_s < -40.0) arg_s = -40.0;
|
||||
tmp0 = (-v_si_b+xd_bv)*ratioT/(Vt*xd_n);
|
||||
if (tmp0>70) f_breakdown_s = 1.0;
|
||||
else f_breakdown_s = 1.0 + xd_xjbv*exp(-tmp0);
|
||||
// TRAP-ASSISTED TUNNELING CURRENT
|
||||
tmp0 = (-v_si_b+xd_bv)*ratioT/(Vt*xd_n);
|
||||
if (tmp0>70) f_breakdown_s = 1.0;
|
||||
else f_breakdown_s = 1.0 + xd_xjbv*exp(-tmp0);
|
||||
// TRAP-ASSISTED TUNNELING CURRENT
|
||||
isb_tun = -Weff*jswg_t*(exp(v_si_b*ratioT/(Vt*njtsswg_t) * xd_vtsswg/max(xd_vtsswg+v_si_b,1.0e-3))-1.0);
|
||||
isb_tun = isb_tun - ps_i*jsw_t*(exp(v_si_b*ratioT/(Vt*njtssw_t) * xd_vtssw/max(xd_vtssw+v_si_b,1.0e-3))-1.0);
|
||||
isb_tun = isb_tun - as_i*js_t*(exp(v_si_b*ratioT/(Vt*njts_t) * xd_vts/max(xd_vts+v_si_b,1.0e-3))-1.0);
|
||||
I(s,b) <+ (is_s * (1.0 - exp(arg_s))*f_breakdown_s+v_si_b*xd_gmin + isb_tun)*TYPE*M;
|
||||
//AC
|
||||
|
||||
//DRAIN - BULK
|
||||
//AC
|
||||
|
||||
//DRAIN - BULK
|
||||
if (v_di_b>0.0)
|
||||
begin
|
||||
csb_d = cj_t * ad_i * exp(-xd_mj*ln(1.0+v_di_b/pb_t));
|
||||
|
|
@ -917,6 +917,6 @@ module ekv_va(d,g,s,b);
|
|||
end
|
||||
qjs = (csb_s+cssw_s+csswg_s) * v_si_b;
|
||||
I(s,b) <+ ddt(qjs)*TYPE*M;
|
||||
//END OF DIODES
|
||||
//END OF DIODES
|
||||
end
|
||||
endmodule
|
||||
|
|
|
|||
|
|
@ -23,12 +23,12 @@
|
|||
Licensed under Educational Community License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain a copy of the license at
|
||||
http://opensource.org/licenses/ECL-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
The BSIM-BULK standard has been supported by the members of Silicon Integration Initiative's Compact Model Coalition.
|
||||
A link to the most recent version of this standard can be found at:
|
||||
http://www.si2.org/cmc
|
||||
http://www.si2.org/cmc
|
||||
*/
|
||||
|
||||
`include "constants.vams"
|
||||
|
|
@ -1737,9 +1737,9 @@ endfunction
|
|||
// High Voltage Model Parameters
|
||||
|
||||
// --- Mod selectors -----
|
||||
`MPIcc( HVMOD ,0 ,"" ,0 ,1 ,"High Voltage series resistance model, 0: Turn Off 1: Turn On")
|
||||
`MPIcc( HVCAP ,0 ,"" ,0 ,1 ,"High Voltage capacitance model. 0: Turn Off 1: Turn On")
|
||||
`MPIcc( HVCAPS ,0 ,"" ,0 ,1 ,"High Voltage capacitance model at source side. 0: Turn Off 1: Turn On")
|
||||
`MPIcc( HVMOD ,0 ,"" ,0 ,1 ,"High Voltage series resistance model, 0: Turn Off 1: Turn On")
|
||||
`MPIcc( HVCAP ,0 ,"" ,0 ,1 ,"High Voltage capacitance model. 0: Turn Off 1: Turn On")
|
||||
`MPIcc( HVCAPS ,0 ,"" ,0 ,1 ,"High Voltage capacitance model at source side. 0: Turn Off 1: Turn On")
|
||||
`MPIcc( IIMOD ,0 ,"" ,0 ,1 ,"Flag for impact ionization in the drift region 0: Turn-Off, 1: Turn On" )
|
||||
|
||||
// --- Other parameters -----
|
||||
|
|
@ -1754,7 +1754,7 @@ endfunction
|
|||
`MPRnb( VFBOV ,-1 ,"V" ,"Flat-band voltage of the overlap region" )
|
||||
`MPRnb( LOVER ,500n ,"m" ,"Overlap region length" )
|
||||
`MPRnb( LOVERACC ,LOVER ,"m" ,"Drift region length" )
|
||||
`MPRnb( NDR ,NDEP ,"m^3" ,"Drift region doping" )
|
||||
`MPRnb( NDR ,NDEP ,"1/m^3" ,"Drift region doping" )
|
||||
`MPRcz( SLHV ,0 ,"" ,"Parameter and Flag for controlling slope of accumulation region capacitance. 0: Turn-Off, 1: Turn On" )
|
||||
`MPRoz( SLHV1 ,1.0 ,"" ,"Parameter for slope of the accumulation capacitance " )
|
||||
`MPRnb( ALPHADR ,ALPHA0 ,"" ,"First parameter of Iii in the drift region" )
|
||||
|
|
@ -1938,7 +1938,7 @@ real vth0_well, k2_well, mu_well, Wdrn, local_sca, local_scb, local_scc;
|
|||
real ids_edge, ETA0EDGE_t, NFACTOREDGE_t, Vbi_edge, theta_sce_edge, dvth_dibl, dvth_sce, litl_edge, DGAMMAEDGE_i, vdsatedge, Vdsatedge, Vdssate, phib_edge, phib_n_edge, NDEPEDGE_i, gam_edge;
|
||||
real vth0_stress_EDGE, k2_stress_EDGE, eta_stress_EDGE;
|
||||
|
||||
// 1/f noise model for Edge FET
|
||||
// 1/f noise model for Edge FET
|
||||
real nq_edge, qdeff_edge, qs_edge, Leffnoi_edge, Leffnoisq_edge, noia_edge, noib_edge, noic_edge, FNPowerAtedge;
|
||||
|
||||
// Below are used by macros by GEOMOD and RGEOMOD
|
||||
|
|
@ -2632,7 +2632,7 @@ analog begin
|
|||
end else begin
|
||||
RDrainGeo = 0.0;
|
||||
end
|
||||
// Clamping of S/D resistances
|
||||
// Clamping of S/D resistances
|
||||
|
||||
if (RDSMOD == 0) begin
|
||||
if (RSourceGeo < minr) begin
|
||||
|
|
@ -3204,10 +3204,10 @@ analog begin
|
|||
// Vth shift for DIBL
|
||||
dVth_dibl = -(ETA0_a + ETAB_i * Vbsx) * Vdsx;
|
||||
`Smooth2(dVth_dibl, 0.0, 5.0e-5, dVth_dibl)
|
||||
|
||||
|
||||
// Vth shift with temperature
|
||||
dvth_temp = (KT1_i + KT1L / Leff + KT2_i * Vbsx) * (pow(TRatio, KT1EXP) - 1.0);
|
||||
|
||||
|
||||
|
||||
// Vth correction for pocket implants
|
||||
if (DVTP0_i > 0.0) begin
|
||||
|
|
@ -3615,8 +3615,8 @@ analog begin
|
|||
end
|
||||
end
|
||||
|
||||
Rdrain = Rdrain + rdrift_d;
|
||||
Rsource = Rsource + rdrift_s;
|
||||
Rdrain = Rdrain + rdrift_d;
|
||||
Rsource = Rsource + rdrift_s;
|
||||
end
|
||||
|
||||
QIOV = 0;
|
||||
|
|
@ -3660,7 +3660,7 @@ analog begin
|
|||
vgfbdrift = -devsign * V(gm,si) - VFBOV ;
|
||||
vgfbdrift = vgfbdrift/Vt;
|
||||
`PO_psip(vgfbdrift,gamhv,0,phibHV,psip_k)
|
||||
`BSIM_q(psip_k, phibHV, devsign * V(si,bi)/Vt, gamhv, q_k)
|
||||
`BSIM_q(psip_k, phibHV, devsign * V(si,bi)/Vt, gamhv, q_k)
|
||||
|
||||
`Smooth(psip_k, 1.0, 2.0, psipclamp_hv)
|
||||
sqrtpsip_k = sqrt(psipclamp_hv);
|
||||
|
|
@ -3681,7 +3681,7 @@ analog begin
|
|||
|
||||
QIOVS = NF * Wact * LOVERACC * 2 * nq_hv * Vt * T0 * q_k ;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Gcrg = 0.0;
|
||||
|
|
@ -3708,14 +3708,14 @@ analog begin
|
|||
|
||||
// Secondary impact ionization in the drift region
|
||||
if (HVMOD == 1 && IIMOD == 1) begin
|
||||
Ntot = DRII1 * ids/(NF * Weff * `q * VDRIFT_t );
|
||||
Ntot = DRII1 * ids/(NF * Weff * `q * VDRIFT_t );
|
||||
Nextra = Ntot/NDRIFTD - 1;
|
||||
`Smooth(Nextra, 0, DELTAII, Nextra)
|
||||
Nextra = NDRIFTD * Nextra;
|
||||
|
||||
`Smooth(devsign * V(d,bi) - Vdseff - DRII2, 0, 0.05, T2)
|
||||
T3 = 2.0 * `q /(EPSRSUB * `EPS0) * Nextra;
|
||||
T3 = T3 * T2;
|
||||
T3 = T3 * T2;
|
||||
|
||||
if (T3 > BETADR / `EXPL_THRESHOLD) begin
|
||||
T1 = -BETADR/T3;
|
||||
|
|
@ -4008,7 +4008,7 @@ analog begin
|
|||
if (SSLMOD != 0) begin
|
||||
T1 = pow(NDEP_i / 1.0e23, SSLEXP1);
|
||||
T2 = pow(300.0 / DevTemp, SSLEXP2);
|
||||
T3 = (devsign*SSL5 * V(bi,si)) / Vt;
|
||||
T3 = (devsign*SSL5 * V(bi,si)) / Vt;
|
||||
SSL0_NT = SSL0 * lexp(-T1 * T2);
|
||||
SSL1_NT = SSL1 * T2 * T1;
|
||||
PHIB_SSL = SSL3 * tanh(lexp(devsign * SSL4 * (V(gi, bi) - VTH - V(si,bi))));
|
||||
|
|
@ -4042,7 +4042,7 @@ analog begin
|
|||
end else begin
|
||||
LH1 = Leff;
|
||||
T0 = LH1;
|
||||
end
|
||||
end
|
||||
if(LINTNOI >= T0 / 2.0) begin
|
||||
$strobe("Warning: LINTNOI = %e is too large - Leff for noise is negative. Re-setting LINTNOI = 0.", LINTNOI);
|
||||
LINTNOI_i = 0.0;
|
||||
|
|
@ -4158,7 +4158,7 @@ analog begin
|
|||
end
|
||||
I(di, si) <+ flicker_noise(sigvds*FNPowerAt1Hz, EF, "1overf");
|
||||
end
|
||||
|
||||
|
||||
T0 = qia / Esatnoi / Leff;
|
||||
T1 = T0 * T0;
|
||||
T3 = RNOIA * (1.0 + TNOIA * Leff * T1);
|
||||
|
|
@ -4233,7 +4233,7 @@ analog begin
|
|||
if (IGBMOD != 0) begin
|
||||
I(gi, bi) <+ white_noise(2.0 * `q * abs(igb), "igb");
|
||||
end
|
||||
|
||||
|
||||
// C-V model
|
||||
vgfbCV = vgfb;
|
||||
gamg2 = (2.0 * `q * epssi * NGATE_i) / (Cox * Cox * Vt);
|
||||
|
|
@ -4281,7 +4281,7 @@ analog begin
|
|||
qdsat = LambdaC_by2 * (qs * qs + qs) / (1.0 + LambdaC_by2 * (1.0 + qs));
|
||||
vdsatcv = psip - 2.0 * phibCV - (2.0 * qdsat + lln((qdsat * 2.0 * nq * inv_gam) * ((qdsat * 2.0 * nq * inv_gam) + (gam / (nq - 1.0)))));
|
||||
VdsatCV = vdsatcv * Vt;
|
||||
|
||||
|
||||
// Normalized charge qdeff at drain end of channel
|
||||
`Smooth(VdsatCV - Vs, 0.0, 1e-3, VdssatCV)
|
||||
VdssatCV = VdssatCV / ABULK;
|
||||
|
|
@ -4397,7 +4397,7 @@ analog begin
|
|||
end
|
||||
Qovb = -devsign * NF * Lact * CGBO * V(gm, bi);
|
||||
Qovg = -(Qovs + Qovd + Qovb);
|
||||
|
||||
|
||||
// Edge FET model
|
||||
if (EDGEFET == 1) begin
|
||||
phib_edge = lln(NDEPEDGE_i / ni);
|
||||
|
|
@ -4436,12 +4436,12 @@ analog begin
|
|||
gam_edge = sqrt(2.0 * `q * epssi * NDEPEDGE_i * inv_nVt) / Cox;
|
||||
gam_edge = gam_edge * (1.0 + DGAMMAEDGE_i);
|
||||
inv_gam = 1.0 / gam_edge;
|
||||
|
||||
|
||||
// psip: pinch-off voltage
|
||||
phib_n_edge = phib_edge / n;
|
||||
`PO_psip(vgfb, gam_edge, 0.0, phib_n_edge, psip)
|
||||
|
||||
|
||||
|
||||
|
||||
`BSIM_q(psip, phib_n_edge, vs, gam_edge, qs_edge)
|
||||
|
||||
// Approximate pinch-off voltage
|
||||
|
|
@ -4466,7 +4466,7 @@ analog begin
|
|||
nq_edge = 1.0 + gam_edge / (sqrtpsip + T2);
|
||||
ids_edge = 2.0 * NF * nq_edge * ueff * WEDGE / Leff * Cox * nVt * nVt * ((qs_edge - qdeff_edge) * (1.0 + qs_edge + qdeff_edge)) * Moc;
|
||||
ids = ids_edge + ids;
|
||||
|
||||
|
||||
// Flickernoise calculation for Edge FET
|
||||
noia_edge = NOIA * NEDGE;
|
||||
noib_edge = NOIB * NEDGE;
|
||||
|
|
@ -4500,7 +4500,7 @@ analog begin
|
|||
end
|
||||
// End of Edge FET parasitic device drain current model
|
||||
|
||||
|
||||
|
||||
// Charge expressions including fringing and overlap capacitances
|
||||
QB = devsign * (QBi + Qovb + Qbsj + Qbdj);
|
||||
if (sigvds > 0) begin
|
||||
|
|
@ -4522,7 +4522,7 @@ analog begin
|
|||
if (HVCAPS == 1) begin
|
||||
Qovb = Qovb + QIOVS;
|
||||
Qovs = Qovs + QBOVS;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
// Output
|
||||
|
|
@ -4604,8 +4604,8 @@ analog begin
|
|||
if (sigvds > 0)begin
|
||||
GDS = ddx(IDS, V(di)); // Output conductance
|
||||
end else begin
|
||||
GDS = ddx(-IDS, V(si));
|
||||
end
|
||||
GDS = ddx(-IDS, V(si));
|
||||
end
|
||||
|
||||
// Loading variables
|
||||
I(gi, bi) <+ ddt(QGI);
|
||||
|
|
@ -4634,15 +4634,15 @@ analog begin
|
|||
end
|
||||
|
||||
// External S/D resistances
|
||||
|
||||
|
||||
if (RDSMOD !=2 && RDrainGeo >0) begin
|
||||
gdpr = 1.0 / Rdrain; // Note: gdpr considers all fingers
|
||||
I(d, di) <+ V(d, di) * gdpr;
|
||||
I(d, di) <+ white_noise(Nt * gdpr, "rd");
|
||||
end else begin
|
||||
V(d, di) <+ 0.0;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if (RDSMOD !=2 && RSourceGeo >0) begin
|
||||
gspr = 1.0 / Rsource; // Note: gspr considers all fingers
|
||||
I(s, si) <+ V(s, si) * gspr;
|
||||
|
|
@ -4650,8 +4650,8 @@ analog begin
|
|||
end else begin
|
||||
V(s, si) <+ 0.0;
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
if (RGATEMOD == 0) begin
|
||||
V(g, gm) <+ 0.0;
|
||||
end else begin: rgate
|
||||
|
|
@ -4672,7 +4672,7 @@ analog begin
|
|||
end else begin
|
||||
V(gm, gi) <+ 0.0;
|
||||
end
|
||||
|
||||
|
||||
if ((SHMOD != 0) && (RTH0 > 0.0)) begin
|
||||
Pdiss = devsign * sigvds * ids * V(di, si);
|
||||
if (RDSMOD !=2 && RDrainGeo >0) begin
|
||||
|
|
@ -4685,7 +4685,7 @@ analog begin
|
|||
end else begin
|
||||
Temp(t) <+ 0.0;
|
||||
end
|
||||
|
||||
|
||||
if (RBODYMOD != 0) begin
|
||||
I(bi, sbulk) <+ V(bi, sbulk) * Grbps;
|
||||
I(b, sbulk) <+ V(b, sbulk) * Grbsb;
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
Licensed under Educational Community License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain a copy of the license at
|
||||
http://opensource.org/licenses/ECL-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
BSIM-CMG model is supported by the members of Silicon Integration Initiative's Compact Model Coalition. A link to the most recent version of this
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
*/
|
||||
|
||||
`include "constants.vams"
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
Licensed under Educational Community License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain a copy of the license at
|
||||
http://opensource.org/licenses/ECL-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
BSIM-CMG model is supported by the members of Silicon Integration Initiative's Compact Model Coalition. A link to the most recent version of this
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
*/
|
||||
|
||||
analog begin
|
||||
|
|
@ -451,7 +451,7 @@ analog begin
|
|||
end
|
||||
Prsd = FPITCH + DELTAPRSD;
|
||||
// Resistivity calculation
|
||||
if ($param_given(RHORSD)) begin
|
||||
if ($param_given(RHORSD)) begin
|
||||
rhorsd = RHORSD;
|
||||
end else begin
|
||||
mu_max = (TYPE == `ntype) ? 1417.0 : 470.5;
|
||||
|
|
@ -530,22 +530,22 @@ analog begin
|
|||
CGSO_i = CGSO;
|
||||
end else begin
|
||||
if ($param_given(DLC) && DLC > 0.0) begin
|
||||
CGSO_i = max(0.0, DLC * cox - CGSL_i);
|
||||
CGSO_i = max(0.0, DLC * cox - CGSL_i);
|
||||
end else begin
|
||||
CGSO_i = 0.3 * TFIN * cox;
|
||||
CGSO_i = 0.3 * TFIN * cox;
|
||||
end
|
||||
end
|
||||
if ($param_given(CGDO)) begin
|
||||
CGDO_i = CGDO;
|
||||
end else begin
|
||||
if ($param_given(DLC) && DLC > 0.0) begin
|
||||
CGDO_i = max(0.0, DLC * cox - CGDL_i);
|
||||
CGDO_i = max(0.0, DLC * cox - CGDL_i);
|
||||
end else begin
|
||||
CGDO_i = 0.3 * TFIN * cox;
|
||||
CGDO_i = 0.3 * TFIN * cox;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
// Parasitic source/drain-to-gate fringe capacitance
|
||||
if (CGEOMOD == 2) begin
|
||||
Hg = TGATE + TMASK;
|
||||
|
|
@ -1184,9 +1184,9 @@ analog begin
|
|||
T8 = T10 - e0 / e1;
|
||||
T12a = `lexp(-T8) + T8 - 1.0;
|
||||
if (T12a <= 0) begin
|
||||
T12 = 0.0;
|
||||
end else begin
|
||||
T12 = T9 * sqrt(T12a);
|
||||
T12 = 0.0;
|
||||
end else begin
|
||||
T12 = T9 * sqrt(T12a);
|
||||
end
|
||||
|
||||
end else begin
|
||||
|
|
@ -1898,11 +1898,11 @@ analog begin
|
|||
|
||||
// External source/drain resistance
|
||||
if (RDSMOD == 2) begin
|
||||
V(d, di) <+ 0.0;
|
||||
V(s, si) <+ 0.0;
|
||||
V(d, di) <+ 0.0;
|
||||
V(s, si) <+ 0.0;
|
||||
end else begin
|
||||
I(d, di) <+ V(d, di) / Rdrain;
|
||||
I(s, si) <+ V(s, si) / Rsource;
|
||||
I(d, di) <+ V(d, di) / Rdrain;
|
||||
I(s, si) <+ V(s, si) / Rsource;
|
||||
end
|
||||
|
||||
// NQS gate resistance model
|
||||
|
|
@ -2106,7 +2106,7 @@ analog begin
|
|||
CESI = -ddx(QBI, V(si));
|
||||
CEEI = ddx(QBI, V(e));
|
||||
// Total capacitances
|
||||
CGG = CGGI + ddx(qgs_parasitic + qgd_parasitic + (CGEOMOD == 1 ? qgs_fr + qgd_fr : 0.0) - devsign * Qeg, V(ge));
|
||||
CGG = CGGI + ddx(qgs_parasitic + qgd_parasitic + (CGEOMOD == 1 ? qgs_fr + qgd_fr : 0.0) - devsign * Qeg, V(ge));
|
||||
CGS = -ddx(QG, V(si));
|
||||
CGD = -ddx(QG, V(di));
|
||||
CGE = -ddx(QG, V(e));
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
Licensed under Educational Community License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain a copy of the license at
|
||||
http://opensource.org/licenses/ECL-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
BSIM-CMG model is supported by the members of Silicon Integration Initiative's Compact Model Coalition. A link to the most recent version of this
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
*/
|
||||
|
||||
// Parameter checking
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
Licensed under Educational Community License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain a copy of the license at
|
||||
http://opensource.org/licenses/ECL-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
BSIM-CMG model is supported by the members of Silicon Integration Initiative's Compact Model Coalition. A link to the most recent version of this
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
*/
|
||||
|
||||
// Source/drain resistances
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
Licensed under Educational Community License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain a copy of the license at
|
||||
http://opensource.org/licenses/ECL-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
BSIM-CMG model is supported by the members of Silicon Integration Initiative's Compact Model Coalition. A link to the most recent version of this
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
*/
|
||||
|
||||
// Model types
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
Licensed under Educational Community License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain a copy of the license at
|
||||
http://opensource.org/licenses/ECL-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
BSIM-CMG model is supported by the members of Silicon Integration Initiative's Compact Model Coalition. A link to the most recent version of this
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
*/
|
||||
|
||||
// Noise model
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
Licensed under Educational Community License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain a copy of the license at
|
||||
http://opensource.org/licenses/ECL-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
BSIM-CMG model is supported by the members of Silicon Integration Initiative's Compact Model Coalition. A link to the most recent version of this
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
*/
|
||||
|
||||
// Both model and instance parameters
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@
|
|||
Licensed under Educational Community License, Version 2.0 (the "License"); you may
|
||||
not use this file except in compliance with the License. You may obtain a copy of the license at
|
||||
http://opensource.org/licenses/ECL-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
|
||||
BSIM-CMG model is supported by the members of Silicon Integration Initiative's Compact Model Coalition. A link to the most recent version of this
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
standard can be found at: http://www.si2.org/cmc
|
||||
*/
|
||||
|
||||
// Variables
|
||||
|
|
|
|||
Loading…
Reference in New Issue