* Path, Component, Release: cmos8base/rel/HSPICE/models/lpnfet.inc, tech8_models, pcad_8rf_V131x 
* CMVC Revision: 1.5 06/10/06 11:28:47 
* 
*> IBM CMRF8SF/BiCMOS8WL lpnfet 1.5V LP NFET 
* 
*************************************************************************** 
* 
* SYNTAX: xxx ( d g s b ) lpnfet l = nnn w = nnn 
* 
* REQUIRED: 
* + w = 1.0u <- Total device width (meters) 
* + l = 0.12u<- Device length (meters) 
* OPTIONAL: 
* + nf = 1 <- Number of gate stripes or "fingers" in device 
* + m (par) = 1 <- Number of parallel instances (multiplicity) 
* + as = 0 <- Source diffusion area (meters^2) 
* + ad = 0 <- Drain diffusion area (meters^2) 
* + ps = 0 <- Source diffusion perimeter in (meters) 
* + pd = 0 <- Drain diffusion perimeter in (meters) 
* + nrd = 0 <- Number of squares of drain diffusion 
* + nrs = 0 <- Number of squares of source diffusion 
* + dtemp = 0 <- Device temp rise from ambient (deg C) 
* + lstis = 1 <- Instance flag to control STI stress effects 
* on a local level in conjunction with gstis 
* global flag (0-> no STI stress effects, 
* 1-> w/ STI stress effects) 
* + sa = 0 <- Distance from PC to RX (STI) edge (meters) 
* + sb = 0 <- Distance from PC to RX (STI) edge (meters) 
* + sd = 0 <- Finger to finger spacing for NF>1 (meters) 
* + lnws = 0 <- Instance flag to control Nwell proximity 
* effects on a local level in conjunction with 
* gwells global flag 
* (0-> no Nwell proximity effects, 
* 1-> w/ Nwell proximity effects) 
* 
* Nwell proximity parameters 
* + panw1 = 0 <- Active area within 0 to 0.3um of NW edge 
* + panw2 = 0 <- Active area within 0.3um to 0.35um of NW edge 
* . . 
* . . 
* . . 
* + panw10 = 0 <- Active area within 1.4um to 2.0um of NW edge 
* + plnest = -1 <- Instance flag : nested vs. isolated ACV effect 
* (-1 -> random, default 
* 1 -> nested 
* 0 -> isolated) 
* + plorient = -1 <- Instance flag : horizontal vs. vertical ACV 
* (-1 -> random, default 
* 1 -> vertical 
* 0 -> horizontal) 
* + pld200 = -1 <- Instance flag : ACLV effect within 200um square 
* (-1 -> random, default 
* 1 -> outside 
* 0 -> inside 200um x 200um square) 
* + pwd100 = -1 <- Instance flag : ACWV effect within 100um square 
* (-1 -> random, default 
* 1 -> outside 
* 0 -> inside 100um x 100um square) 
* + rgatemod = 0 <- Gate resistance flag 
* (0-> no gate resistance, 
* 1-> gate resistance w/ no NQS, 
* 2-> gate resistance w/ NQS outside Cov, 
* 3-> gate resistance w/ NQS inside Cov) 
* + ngcon = 1 <- Gate connection switch (1->single-ended, 
* 2->double-ended) 
* + rbodymod = 0 <- Body resistance network flag (0-> network off, 
* 1-> network on) 
* + rf_rsub = 1 <- Body resistance multiplier 
* 
* NOTES: 
* 
* 1. If nrd or nrs are not passed to the model they will default to 0. 
* This will result in 0 ohms of silicided S/D resistance being placed 
* in series with the device model. 
* 
* SUBCIRCUIT SCHEMATIC: 
* 
* drain 
* o 
* | 
* | 
* | 
* | |--- 
* gate | | (BSIM4.4 ) bulk 
* o------| |-----(Internal )-----o 
* | | (Rsub Network) 
* | |--- 
* | 
* | 
* | 
* o 
* source 
* 
* Note: The LDD resistance is accounted for within the BSIM4 model. 
* 
* IBM CONFIDENTIAL 
* (C) 2006 IBM Corporation 
* 
*************************************************************************** 
* 
.subckt lpnfet d g s b PARAMS: w = 1.0u l = 0.12u nf = 1 par = 1 dtemp = 0 
+ as = 0 ps = 0 ad = 0 pd = 0 nrs = 0 nrd = 0 
+ lstis = 1 sa = 0 sb = 0 sd = 0 lnws = 0 
+ panw1 = 0 panw2 = 0 panw3 = 0 panw4 = 0 panw5 = 0 
+ panw6 = 0 panw7 = 0 panw8 = 0 panw9 = 0 panw10 = 0 
+ plnest = -1 plorient = -1 pld200 = -1 pwd100 = -1 
+ rgatemod = 0 ngcon = 1 rbodymod = 0 rf_rsub = 1 
+ rbps = 100 rbpd = 100 rbsb = 1e9 rbpb = 50 rbdb = 1e9 
.param 
* 
* If monte carlo and "pl*" instance parameter = { zero, use values from skew/process file } 
+ a_plnest = { limit(-0.5,0.5) } 
+ sel_plnest = { ((plnest == 1) | ((a_plnest*plnest) == 1)) } 
+ a_plorient = { limit(-0.5,0.5) } 
+ sel_plorient = { ((plorient == 1) | ((a_plorient*plorient) == 1)) } 
+ a_pld200 = { limit(-0.5,0.5) } 
+ sel_pld200 = { ((pld200 == 1) | ((a_pld200*pld200) == 1)) } 
+ a_pwd100 = { limit(-0.5,0.5) } 
+ sel_pwd100 = { ((pwd100 == 1) | ((a_pwd100*pwd100) == 1)) } 
* 
* Calculate aclv/acwv and final lint/wint params 
+ aclv_ni_sws = { (mc_sw + ((mc_fet_mm_f != 1) & (pc_nest == 2))/aclv_factor + cnr_lpn*(1-mc_fet_mm_f)*(pc_nest != 2)) } 
+ aclv_or_sws = { (mc_sw + ((mc_fet_mm_f != 1) & (pc_orient == 2))/aclv_factor + cnr_lpn*(1-mc_fet_mm_f)*(pc_orient != 2)) } 
+ aclv_dist_sws = { (mc_sw + ((mc_fet_mm_f != 1) & (pc_dist == 2))/aclv_factor + cnr_lpn*(1-mc_fet_mm_f)*(pc_dist != 2)) } 
+ aclv_ni = { ((fet_aclv_nest*sel_plnest) + (fet_aclv_iso*(1-sel_plnest)))*aclv_ni_sws } 
+ aclv_or = { ((fet_aclv_v*sel_plorient) + (fet_aclv_h*(1-sel_plorient)))*aclv_or_sws } 
+ aclv_dist = { ((fet_aclv_out*sel_pld200) + (fet_aclv_in*(1-sel_pld200)))*aclv_dist_sws } 
+ aclv_ran = { agauss(cnr_lpn,mc_sw,3) } 
* 
+ acwv_dist_sws = { (-mc_sw + ((mc_fet_mm_f != 1) & (rx_dist == 2))/acwv_factor + cnr_lpn*(1-mc_fet_mm_f)*(rx_dist != 2)) } 
+ acwv_dist = { ((fet_acwv_out*sel_pwd100) + (fet_acwv_in*(1-sel_pwd100)))*acwv_dist_sws } 
+ acwv_ran = { agauss( -cnr_lpn ,mc_sw,3) } 
* 
*.param 
+ xc_lint_1 = { (aclv_ni*aclv_fet_ni + aclv_or*aclv_fet_or) } 
+ xc_lint_2 = { ((aclv_dist*aclv_fet_dist) + (aclv_ran + (mc_global == 2))*aclv_fet_ran) } 
+ xx_lint_3 = { (mc_fet_mm_f + (aclv_factor*(1-mc_fet_mm_f))) } 
+ xx_lint_4 = { ((mc_global == 2)*(-xlint_lpn) + (mc_global != 2)) } 
+ xc_lint_t = { ((xc_lint_1 + xc_lint_2)*xx_lint_3)*xx_lint_4 } 
* 
+ xc_wint_1 = { ((acwv_dist*acwv_fet_dist) + (acwv_ran + (mc_global == 2))*acwv_fet_ran) } 
+ xx_wint_2 = { (mc_fet_mm_f + (acwv_factor*(1-mc_fet_mm_f))) } 
+ xx_wint_3 = { ((mc_global == 2)*(xwint_lpn) + (mc_global != 2)) } 
+ xc_wint_t = { ((xc_wint_1)*xx_wint_2)*xx_wint_3 } 
* 
* final = { nominal + acv * dist(-1,1) + global * dist(-1,1) } 
+ lint_lpnfet = { lint_lpn + 1.5*total_aclv_fet*xc_lint_t*fet_geo_mm + ltol_lpn*xlint_lpn } 
+ wint_lpnfet = { wint_lpn + 1.5*total_acwv_fet*xc_wint_t*fet_geo_mm + wtol_lpn*xwint_lpn } 
* 
.param 
* Switch to turn ON or OFF the STI stress effects 
+ isti = { ((gstis == 1)&(lstis == 1))|(gstis == 2) } 
* 
* Switch to turn ON or OFF the Nwell proximity effects 
+ inw = { ((gwells == 1)&(lnws == 1))|(gwells == 2) } 
* 
* Nwell proximity effect calculations 
+ proxpre = { 0.015e-06 } ; [V-m] 
+ proxlen = { -0.35e-06 } ; [m] 
+ proxk1 = 0.375 ; [unitless] 
+ rxwparm1 = { -0.28 } ; [unitless] 
+ rxwparm2 = { 0.56e-06 } ; [unitless] 
+ rxwparm3 = { 0.0e-6 } ; [m] 
+ nw1b1 = { panw1 /(band1 -proxlen) } 
+ nw2b2 = { panw2 /(band2 -proxlen) } 
+ nw3b3 = { panw3 /(band3 -proxlen) } 
+ nw4b4 = { panw4 /(band4 -proxlen) } 
+ nw5b5 = { panw5 /(band5 -proxlen) } 
+ nw6b6 = { panw6 /(band6 -proxlen) } 
+ nw7b7 = { panw7 /(band7 -proxlen) } 
+ nw8b8 = { panw8 /(band8 -proxlen) } 
+ nw9b9 = { panw9 /(band9 -proxlen) } 
+ nw10b10 = { panw10/(band10-proxlen) } 
+ prox_term = { inw*(proxpre/(l*w))*(nw1b1+ nw2b2+ nw3b3+ nw4b4+ nw5b5+ nw6b6+ nw7b7+ nw8b8+ nw9b9+ nw10b10) } 
+ k1_lpn_base = 0.2699 
+ k1_lpn = { k1_lpn_base+ proxk1*prox_term } 
* 
* Mis-match calculations: include multiplicity (par) 
.param 
+ kvt = { 9.0e-9 } 
+ kvtl = { 8.0e-8 } 
+ kvtw = { 8.0e-8 } 
+ kmb = { 1.4e-5 } 
+ kmbl = { -6.0e-7 } 
+ kmbw = { 9.0e-8 } 
+ sigvth = { kvt/sqrt((w-kvtw)*par*(l-kvtl)) } 
+ sigbeta = { kmb/sqrt((w-kmbw)*par*(l-kmbl)) } 
* 
+ dvth0 = { agauss(0,1,3) } ; Local mis-match distributions 
+ dbeta = { agauss(0,1,3) } 
* $ Select local vs global vs corner 
+ d_vth0 = { dvth0*(mc_global != 2) + xlpnvth0*(mc_global == 2) - cnr_lpn } 
+ d_beta = { dbeta*(mc_global != 2) + dlpnu0*(mc_global == 2) - cnr_lpn } 
* 
+ mmvth0 = { sigvth * d_vth0 * fet_dop_mm } ; vth0 mis-match 
+ mmbeta = { sigbeta * d_beta * fet_dop_mm } ; beta mis-match 
* 
+ pvt_var = { mmvth0 + prox_term } ; local vth0 variation 
* 
.param 
* Flicker noise calculations: statistics are function of w and l 
+ noideva = { 10u * 0.12u * 10 } ; device area for extracted variation 
+ noistd = 1.1513 ; worst case variation value 
* 
+ noi_scale = { noistd-min(ln(sqrt(w*l/noideva)),0) } ; area scaling 
+ noiamult = { exp(dnoi_lpn*noi_scale) } ; gate bias scaliing 
+ noibmult = { exp(dnoi_lpn*noi_scale/2.25) } 
+ noicmult = { exp(dnoi_lpn*noi_scale/5.06) } 
* 
* Gate resistance scaling equations 
+ rg11 = { 0.05e6*l + 12 } 
+ rg12 = { 30e6*l - 3 } 
+ xrg1 = { max(0.1,(rg11*rg12/(rg11+ rg12))) } 
+ xrg2 = { max(0.0,((0.6e-6/l + 1.26)*(0.08e6*w + 2.6)/5)) } 
* 
.param 
* Vtsat trend modification for narrow devices 
+ nar = { (w<1u) } 
+ sw = { (w<3.5u) } 
+ lpe0scl = { (1.193e-7*nar+ (1.193e-7+ 0.16e-7*(w-1u)*1e6)*(1-nar))*sw+ 1.593e-7*(1-sw) } 
+ dvt0wscl = { (-0.09*nar+ (-0.09+ 0.036*(w-1u)*1e6)*(1-nar))*sw } 
*KRS: commenting out dtemp: 
m0 d g s b lpnch w = w l = l nf = nf; dtemp = dtemp 
+ as = as ad = ad ps = ps pd = pd nrs = nrs nrd = nrd 
*KRS: fix braces manually below
+ sa = { isti*sa} sb = {isti*sb} sd = {isti*sd } 
+ rgatemod = rgatemod rbodymod = rbodymod 
* 
*************************************************************************** 
* LP NFET BSIM4v4 Model 
*************************************************************************** 
*KRS: 54 in spice, 14 in xyce
*KRS:  have to change this back to level 14!!!
.model lpnch nmos ( level = 14 
+ version = 4.4 binunit = 1 paramchk = 1 
+ mobmod = 0 rdsmod = 1 permod = 1 
+ epsrox = 3.9 toxe = toxe_lpn toxp = toxp_lpn 
+ toxm = 3.12e-9 xj = 1.5e-7 ndep = 7e17 
+ ngate = 3e20 nsd = 1e20 
+ rsh = rsh_lpn rshg = rsh_lpn 
+ vth0 = { vth0_lpn+ pvt_var } vfb = -1 
+ pvth0 = pvth0_lpn 
+ k1 = k1_lpn k2 = 0.03473 k3 = 56.29 
+ lk1 = -0.001 wk3 = -8.337 lk3b = 0 
+ k3b = 21.37 w0 = 7.244e-07 lpe0 = lpe0scl 
+ lw0 = 0 lk3 = 1.315 pk3 = -0.4966 
+ lpeb = 1.741e-07 dvt0 = 5.417 dvt1 = 1 
+ dvt2 = 0 dvtp0 = 1e-09 dvtp1 = 0 
+ dvt0w = dvt0wscl dvt1w = 1e+06 dvt2w = 0 
+ u0 = { u0_lpn+ mmbeta } ua = 5.1e-12 ub = 1.905e-18 
+ wua = 1.053e-10 lu0 = 5.522 wu0 = -4.613 
+ wub = -1e-19 wuc = -2.692e-11 puc = -1.702e-12 
+ uc = 1.395e-10 vsat = vsat_lpn a0 = 1.188 
+ ags = 0.8577 b0 = 7.386e-06 b1 = 3.575e-05 
+ keta = 1.388e-18 a1 = 0 a2 = 1 
+ lketa = -0.006 wdwg = -2.1e-09 
+ wint = 0 lint = 0 dwg = 1.77e-08 
+ dwb = 0 voff = -0.1594 voffl = -1.459e-09 
+ minv = -0.4054 nfactor = 1.102 eta0 = 0.1185 
+ etab = -0.05133 dsub = 0.2982 cit = 0.001449 
+ cdsc = 0.0007852 cdscb = 0 cdscd = 0 
+ pclm = 0.6534 pdiblc1 = 8.882e-16 pdiblc2 = 0.004978 
+ pdiblcb = 0.02 drout = 1.08 pscbe1 = 4.24e+08 
+ pscbe2 = 1e-05 pvag = 1.988 delta = 0.008 
+ fprout = 4.441e-16 pdits = 0.003091 pditsl = 3967 
+ pditsd = 0.001 
+ rdw = { rdsw_lpn+ 5 } rdwmin = 1.302 rsw = rdsw_lpn 
+ rswmin = 1.864 prwg = 0 prwb = -0.1014 
+ alpha0 = 2.965e-12 alpha1 = 0.0001472 beta0 = 3.436 
+ lalpha0 = 9.153e-12 lalpha1 = -1.08e-5 
+ wr = 1 
*************************************************************************** 
* Jds/Vt Temperature Parameters 
*************************************************************************** 
+ tnom = 25 ute = -1.521 lute = 0.01 
+ kt1 = -0.1817 kt1l = -7.172e-10 kt2 = -2.2e-07 
+ ua1 = 0 ub1 = 0 uc1 = 0 
+ at = 500 prt = 0.33 
+ tempmod = 0 
*************************************************************************** 
* Gate and GIDL Current Model Parameters 
*************************************************************************** 
+ igcmod = 1 igbmod = 1 agidl = 1.988e-07 
+ bgidl = 2.184e+09 cgidl = 13.22 egidl = 2.22e-16 
+ aigbacc = 0.01098 bigbacc = 0.001486 cigbacc = 0.0758 
+ nigbacc = 1.085 aigbinv = 0.008728 bigbinv = 0.0008679 
+ cigbinv = 0.01274 eigbinv = 1 nigbinv = 1.778 
+ aigc = 0.01011 bigc = 0.0007852 cigc = 0.002265 
+ aigsd = 0.01041 bigsd = 0.0003373 cigsd = -0.03802 
+ dlcig = 4.178e-09 nigc = 2.483 poxedge = 1 
+ pigcd = 2.7 ntox = 1.035 toxref = toxe_lpn 
*************************************************************************** 
* STI Stress Model Parameters 
*************************************************************************** 
+ saref = 3e-06 sbref = 3e-06 wlod = 0 
+ ku0 = -2e-08 kvsat = -0.3 tku0 = 0 
+ lku0 = -2e-08 wku0 = -5e-08 llodku0 = 1 
+ wlodku0 = 1 kvth0 = 2e-08 lkvth0 = 8.5e-08 
+ wkvth0 = 2e-07 pkvth0 = 0 llodvth = 1 
+ wlodvth = 1 stk2 = 0 lodk2 = 1 
+ steta0 = 0 lodeta0 = 1 
*************************************************************************** 
* Source/Drain to Body Junction Diode Parameters 
*************************************************************************** 
+ diomod = 1 ijthdfwd = 0.1 ijthsfwd = 0.1 
+ jss = js_lpn jsd = js_lpn jsws = jsw_lpn 
+ jswd = jsw_lpn jswgs = jsw_lpn jswgd = jsw_lpn 
+ cjs = cj_lpn cjd = cj_lpn cjsws = cjsw_lpn 
+ cjswd = cjsw_lpn cjswgs = cjsg_lpn cjswgd = cjsg_lpn 
+ mjs = mj_lpn mjd = mj_lpn mjsws = mjsw_lpn 
+ mjswd = mjsw_lpn mjswgs = mjsg_lpn mjswgd = mjsg_lpn 
+ pbs = pb_lpn pbd = pb_lpn pbsws = pbsw_lpn 
+ pbswd = pbsw_lpn pbswgs = pbsg_lpn pbswgd = pbsg_lpn 
+ njs = n_lpn njd = n_lpn xjbvd = 1 
+ bvd = bd_n xjbvs = 1 bvs = bd_n 
*************************************************************************** 
* Junction Diode Temperature Parameters 
*************************************************************************** 
+ tcj = cta_n tcjsw = ctp_n tcjswg = ctp_n 
+ tpb = pta_n tpbsw = ptp_n tpbswg = ptp_n 
+ xtis = 3 xtid = 3 
*************************************************************************** 
* Capacitance-Voltage (CV) Parameters 
*************************************************************************** 
+ capmod = 2 xpart = 0 dlc = 17n 
+ dwc = 0 cgdo = cgdo_lpn cgso = cgso_lpn 
+ cgsl = cgsl_lpn cgdl = cgdl_lpn ckappas = 10.97 
+ ckappad = 10.97 cf = 0 cgbo = 1.706e-11 
+ acde = 0.4 moin = 14.6 noff = 1.8 
+ voffcv = -0.099 
*************************************************************************** 
* Layout Dependence Parameters 
*************************************************************************** 
+ geomod = { (1 - int((nf+ 1)/2) + int(nf/2)) } rgeomod = 1 
+ xgl = lwbpc xgw = 0.43e-6 xl = { -2*lint_lpnfet } 
+ xw = { -2*wint_lpnfet } dmcg = 0.23e-6 dmci = 0.32e-6 
+ dwj = 0 ngcon = ngcon 
*************************************************************************** 
* RF Model Parameters 
*************************************************************************** 
+ rgatemod = rgatemod trnqsmod = 0 rbodymod = rbodymod 
+ acnqsmod = 0 xrcrg1 = xrg1 xrcrg2 = xrg2 
*KRS: fix the braces on the next two lines manually
+ rbps = { rbps*rf_rsub} rbpd = {rbpd*rf_rsub } 
+ rbsb = { rbsb*rf_rsub} rbpb = {rbpb*rf_rsub} rbdb = {rbdb*rf_rsub } 
*************************************************************************** 
* Flicker Noise Parameters 
*************************************************************************** 
*KRS: fix braces below manually:
+ fnoimod = 1 noia = { 9.1e41*noiamult} noib = {5e23*noibmult } 
+ noic = { 1.75*noicmult } em = 4.10e7 af = 1 
+ ef = 0.95 kf = 0 
*************************************************************************** 
* Channel Thermal Noise Parameters 
*************************************************************************** 
+ tnoimod = 0 ntnoi = 1.5 ) 
* 
.ends lpnfet 
