* Path, Component, Release: cmos8base/rel/HSPICE/models/lppfet.inc, tech8_models, pcad_8rf_V131x 
* CMVC Revision: 1.4 06/09/21 14:44:29 
* 
*> IBM CMRF8SF/BiCMOS8WL lppfet 1.5V LP PFET 
* 
*************************************************************************** 
* 
* SYNTAX: xxx ( d g s b ) lppfet 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 lppfet 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_lpp*(1-mc_fet_mm_f)*(pc_nest != 2)) } 
+ aclv_or_sws = { (mc_sw + ((mc_fet_mm_f != 1) & (pc_orient == 2))/aclv_factor + cnr_lpp*(1-mc_fet_mm_f)*(pc_orient != 2)) } 
+ aclv_dist_sws = { (mc_sw + ((mc_fet_mm_f != 1) & (pc_dist == 2))/aclv_factor + cnr_lpp*(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_lpp,mc_sw,3) } 
* 
+ acwv_dist_sws = { (-mc_sw + ((mc_fet_mm_f != 1) & (rx_dist == 2))/acwv_factor + cnr_lpp*(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_lpp ,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_lpp) + (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_lpp) + (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_lppfet = { lint_lpp + 1.5*total_aclv_fet*xc_lint_t*fet_geo_mm + ltol_lpp*xlint_lpp } 
+ wint_lppfet = { wint_lpp + 1.5*total_acwv_fet*xc_wint_t*fet_geo_mm + wtol_lpp*xwint_lpp } 
* 
.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_lpp_base = 0.4644 
+ k1_lpp = { k1_lpp_base+ proxk1*prox_term } 
* 
* Mis-match calculations: include multiplicity (par) 
.param 
+ kvt = { 1.1e-8 } 
+ kvtl = { 5.0e-8 } 
+ kvtw = { -7.0e-8 } 
+ kmb = { 6.5e-6 } 
+ kmbl = { -3.0e-6 } 
+ kmbw = 0 
+ 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) + xlppvth0*(mc_global == 2) - cnr_lpp } 
+ d_beta = { dbeta*(mc_global != 2) + dlppu0*(mc_global == 2) - cnr_lpp } 
* 
+ 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 = 0.886 ; worst case variation value 
* *KRS: need to change 'log' to 'ln'
+ noi_scale = { noistd-min(ln(sqrt(w*l/noideva)),0) } ; area scaling 
+ noiamult = { exp(dnoi_lpp*noi_scale) } ; gate bias scaliing 
+ noibmult = { exp(dnoi_lpp*noi_scale/1.5) } 
+ noicmult = { exp(dnoi_lpp*noi_scale/2.25) } 
* 
* Gate resistance scaling equations 
+ rg11 = { 1e6*l + 12 } 
+ rg12 = { 60e6*l - 4 } 
+ xrg1 = { max(0.1,(rg11*rg12/(rg11+ rg12))) } 
+ xrg2 = { max(0.0,((1.68e-6/l - 1.3)*(52e-6/w + 8)/12)) } 
* 
* KRS: commenting out dtemp
m0 d g s b lppch w = w l = l nf = nf; dtemp = dtemp 
+ as = as ad = ad ps = ps pd = pd nrs = nrs nrd = nrd 
*KRS: manually adding braces in correct places for line below:
+ sa = { isti*sa} sb = {isti*sb} sd = {isti*sd } 
+ rgatemod = rgatemod rbodymod = rbodymod 
* 
*************************************************************************** 
* LP PFET BSIM4v4 Model 
*************************************************************************** 
*KRS: Model level from 54 to 14. 
*KRS: Have to change this back to level 14!!!
.model lppch pmos ( level = 14 
+ version = 4.4 binunit = 1 paramchk = 1 
+ mobmod = 0 rdsmod = 1 permod = 1 
+ epsrox = 3.9 toxe = toxe_lpp toxp = toxp_lpp 
+ toxm = 3.12e-9 xj = 1.5e-07 ndep = 4.5e+17 
+ ngate = 1.2e+20 nsd = 1e+20 
+ rsh = rsh_lpp rshg = rsh_lpp 
+ vth0 = { vth0_lpp+ pvt_var } vfb = -1 
+ wvth0 = 0.022 pvth0 = pvth0_lpp 
+ k1 = k1_lpp k2 = -0.05 k3 = 27.36 
+ k3b = 48.65 w0 = 3.388e-06 lpe0 = 4.7e-8 
+ lpeb = 5.383e-08 dvt0 = 8.266e-09 dvt1 = 0.5129 
+ dvt2 = -0.0001678 dvtp0 = 1e-09 dvtp1 = 0 
+ dvt0w = 1.315e-09 dvt1w = 2.208e+04 dvt2w = -0.032 
+ u0 = { u0_lpp+ mmbeta } ua = 1.796e-09 ub = 3.932e-19 
+ lua = -7.55e-11 wua = -7.211e-11 
+ uc = 0 vsat = 2.259e5 a0 = 2.665e-15 
+ ags = -0.00138 b0 = 1.3e-05 b1 = 1.858e-05 
+ keta = 0.001312 a1 = 0 a2 = 1 
+ wint = 3e-08 lint = -4.2e-08 dwg = 0 
+ dwb = 8.424e-11 voff = -0.1562 voffl = -1.575e-09 
+ minv = -0.2565 nfactor = 1.1 eta0 = 0.009 
+ etab = -0.01659 dsub = 0.2358 cit = 0.001358 
+ cdsc = 0.0007852 cdscb = 0.0008325 cdscd = 0 
+ pclm = 0.8658 pdiblc1 = 3.9e-07 pdiblc2 = 0.01062 
+ pdiblcb = 0.09527 drout = 0.07505 pscbe1 = 4.24e+08 
+ pscbe2 = 1e-05 pvag = 2.22e-15 delta = 0.01511 
+ fprout = 0.9267 pdits = 0.1321 pditsl = 1.074e+05 
+ pditsd = 0.8218 
+ rdw = rdsw_lpp rdwmin = 3.099 rsw = rdsw_lpp 
+ rswmin = 3.038 prwg = 0.004431 prwb = 0.1 
+ alpha0 = 1e-12 alpha1 = 0.00355 beta0 = 10 
+ wr = 1 pnfactor = -0.015 pu0 = 0.37 
*************************************************************************** 
* Jds/Vt Temperature Parameters 
*************************************************************************** 
+ tnom = 25 ute = -0.7622 
+ kt1 = -0.1959 kt1l = -1.928e-09 kt2 = -0.0937 
+ ua1 = 1.834e-09 ub1 = -3.083e-18 uc1 = 0 
+ at = 3.137e+04 prt = 55.98 
+ tempmod = 0 
*************************************************************************** 
* Gate and GIDL Current Model Parameters 
*************************************************************************** 
+ igcmod = 1 igbmod = 1 agidl = 5.9e-09 
+ bgidl = 1.738e+09 cgidl = 1 egidl = 0.55 
+ aigbacc = 0.01153 bigbacc = 0.00131 cigbacc = -1e-04 
+ nigbacc = 2.355 aigbinv = 0.00809 bigbinv = 0.0007038 
+ cigbinv = 0.01089 eigbinv = 1.48 nigbinv = 3.162 
+ aigc = 0.006931 bigc = 0.0001684 cigc = -0.016 
+ aigsd = 0.006931 bigsd = 0.000405 cigsd = 0.000898 
+ dlcig = 2.14e-09 nigc = 2.781 poxedge = 1 
+ pigcd = 3.36 ntox = 1 toxref = toxe_lpp 
*************************************************************************** 
* STI Stress Model Parameters 
*************************************************************************** 
+ saref = 3e-06 sbref = 3e-06 wlod = 0 
+ ku0 = 1.7e-07 kvsat = -1 tku0 = 0 
+ lku0 = 1.9e-07 wku0 = 2.8e-06 llodku0 = 1 
+ wlodku0 = 1 kvth0 = 0 lkvth0 = 0 
+ wkvth0 = -1.84e-07 pkvth0 = 0 llodvth = 1 
+ wlodvth = 1 stk2 = 4e-09 lodk2 = 1 
+ steta0 = 0 lodeta0 = 1 
*************************************************************************** 
* Source/Drain to Body Junction Diode Parameters 
*************************************************************************** 
+ diomod = 1 ijthdfwd = 0.1 ijthsfwd = 0.1 
+ jss = js_lpp jsd = js_lpp jsws = jsw_lpp 
+ jswd = jsw_lpp jswgs = jsw_lpp jswgd = jsw_lpp 
+ cjs = cj_lpp cjd = cj_lpp cjsws = cjsw_lpp 
+ cjswd = cjsw_lpp cjswgs = cjsg_lpp cjswgd = cjsg_lpp 
+ mjs = mj_lpp mjd = mj_lpp mjsws = mjsw_lpp 
+ mjswd = mjsw_lpp mjswgs = mjsg_lpp mjswgd = mjsg_lpp 
+ pbs = pb_lpp pbd = pb_lpp pbsws = pbsw_lpp 
+ pbswd = pbsw_lpp pbswgs = pbsg_lpp pbswgd = pbsg_lpp 
+ njs = n_lpp njd = n_lpp xjbvd = 1 
+ bvd = bd_p xjbvs = 1 bvs = bd_p 
*************************************************************************** 
* Junction Diode Temperature Parameters 
*************************************************************************** 
+ tcj = cta_p tcjsw = ctp_p tcjswg = ctp_p 
+ tpb = pta_p tpbsw = ptp_p tpbswg = ptp_p 
+ xtis = 3 xtid = 3 
*************************************************************************** 
* Capacitance-Voltage (CV) Parameters 
*************************************************************************** 
+ capmod = 2 xpart = 0 dlc = 14n 
+ dwc = 0 cgdo = cgdo_lpp cgso = cgso_lpp 
+ cgsl = cgsl_lpp cgdl = cgdl_lpp ckappas = 5.902 
+ ckappad = 5.902 cf = 0 cgbo = 1.706e-11 
+ acde = 0.4 moin = 8.97 noff = 2.27 
+ voffcv = -0.0969 
*************************************************************************** 
* Layout Dependence Parameters 
*************************************************************************** 
+ geomod = { (1 - int((nf+ 1)/2) + int(nf/2)) } rgeomod = 1 
+ xgl = lwbpc xgw = 0.43e-6 xl = { -2*lint_lppfet } 
+ xw = { -2*wint_lppfet } dmcg = 0.23e-6 dmci = 0.32e-6 
+ dwj = 0 ngcon = ngcon 
+ ww = -2.5e-16 wwn = 1.2 wwc = 0 
+ ll = 1.45e-16 lln = 1.2 llc = 0 
+ lw = -4e-15 lwn = 1 lwc = 0 
*************************************************************************** 
* RF Model Parameters 
*************************************************************************** 
+ rgatemod = rgatemod trnqsmod = 0 rbodymod = rbodymod 
+ acnqsmod = 0 xrcrg1 = xrg1 xrcrg2 = xrg2 
*KRS: fixing braces manually on next two lines:
+ rbps = { rbps*rf_rsub} rbpd = {rbpd*rf_rsub } 
+ rbsb = { rbsb*rf_rsub} rbpb = {rbpb*rf_rsub} rbdb = {rbdb*rf_rsub } 
*************************************************************************** 
* Flicker Noise Parameters 
*************************************************************************** 
*KRS: fixing braces manually:
+ fnoimod = 1 noia = { 3e42*noiamult} noib = {1.6e27*noibmult } 
+ noic = { 2.1e8*noicmult } em = 4.10e7 af = 1 
+ ef = 1.15 kf = 0 
*************************************************************************** 
* Channel Thermal Noise Parameters 
*************************************************************************** 
+ tnoimod = 0 ntnoi = 3 ) 
* 
.ends lppfet 
