Sprocess 14

math coord.ucs #设置 coord,ucs坐标系;coord,坐标;ucs,三维坐标系。
AdvancedCalibration #激活校准模型
AdvancedCalibrationMechanices #
SiGe_and_Stress_Effect 1 1 1 0 #

set mechanical parameters

source mechParams.fps

pdbSet 全局设置,修改参数

pdbSet Mechanics EtchDepoRelax 0 #这将关闭蚀刻和沉积步骤后的应力松弛,加速仿真.在无注入和扩散步骤时关闭
pdbSet Grid MGoals Keep3DBrep 0 #MGoals: 使用MGoals引擎设置网格参数, brep(boundary representation)

pdbSet Math flow 3D ILS.tolrel 1e-11 #ILS(Iterative Solver),迭代求解器;减少预处理残差
pdbSet Math flow 3D ILS.refine.sts 1 #提高应力求解迭代的收敛性convergence

set math section - ParDiso for mechanics and multi-thread simulation

设置Math相关选项 ParDiso系数求解器用于机械和多线程仿真

-math flow dim=3 pardosp numThreads=4

math numThreads=4

start with mgoal mode

从mgoal模式开始
sde off


structure parameters,[um] 结构参数

set Wt @Wtop@ ;#Fin top Width
set Wb @wbottom@;#Fin bottom Width
set W @<0.5*(Wtop+Wbottom)>@ ;#Fin average Width
set H @H@ ;# Fin height
set bHepi 0.014;#SD Epi shape

set L @L@ ;#Channel length 沟道长度
set Tox 0.0023 ;#栅极氧化层厚度
set Tiox 0.0006;#
set Thfo2 0.0014;#Gate high-k thickness 高K介质层厚度
set Lsp0 0.008;#Nitride spacer foot form to epi S/D
set Lsp1 0.0160 ;#Nitride spacer foot from gate to contach
set Ppitch 0.090;#Poly pith Polt间距
set Tgate 0.031;#Poly heith Poly高度
set Tsti 0.100 ;#STI tench depth STI沟槽深度
set Tsub 1.0;#衬底深度
set Tcesl 0.020;#Nitride on top of gate
set Tild 0.100 ;#ILD on top of gate
set Tnisi 0.005 ;#NiSi thickness 氮化硅厚度
set Fpitch 0.048;#Fin间距
set Lm0b 0.018;#contact length
set Lm0t 0.030 ;#contact diameter length接触孔直径
set Dcgt 0.032;Contatc diamerter top接触孔高度
set Dcgb 0.018;#contact diameter on top of gate
set Dcm0t 0.032;#Contact diameter top
set Dcm0b 0.021 ;#Contact diameter on top pf M0
set PY 0.050 ;#Gate extension栅极延申

set Fangle 55.0;#SD facet angle 角度

Doping parametet 参杂参数

set Nch @Nch@;#channel doping 沟道参杂
set Nsd 2.03e20 ;#源漏参杂
set Nstop @Nstop@ ;#Channel stop doping

if @type@==NMOS

set Esd 0.006
set Dch "Boron" ;硼
set Dsd "Phosphorus";磷
set Dstop "Arsenic" 砷

stress/strain input SD SiGe mole fraction 硅锗摩尔分数

set GeMoleFraction 0.5 ;
set iSMG 1.0;#pMos Metal gate stress[GpA] 金属应力

endif

set iSsti 1.0;#STI stress[GPa] STI应力
set iScont 1.0 ;#Contact/M0 stress 接触应力

-----------------------------------------------------

Derived dimensions 维度信息

set AX0 0.0
set AX1 [expr (0.5*$Ppitch)]

set Xmin AX0 set XmaxAX1
set Ymin 0.0

-set Ymax [expr (0.5*Fpitch+PY+0.010)]

set Ymax [expr (0.5*$Fpitch)]

set PX0 [expr (-0.5L)] set PX1 [expr (0.5*L)]
set PY0 [expr (-0.5
Fpitch-PY)]
set PY1 [expr (0.5*Fpitch+PY)]

set SP0X0 [expr (PX0-Lsp0)]
set SP0X1 [expr (PX1+Lsp0)]
set SP0Y0 [expr (PY0-Lsp0)]
set SP0Y1 [expr (PY1+Lsp0)]
set SP1X0 [expr (PX0-Lsp1)]
set SP1X1 [expr (PX1+Lsp1)]
set SP1Y0 [expr (PY0-Lsp1)]
set SP1Y1 [expr (PY1+Lsp1)]

set Moft 0.014
set M0X0 [expr (0.5Ppitch-0.5*Lm0t)]
set M0X1 [expr (0.5
Ppitch+0.5*Lm0t)]
set M0Y0 [expr (-0.5Fpitch-Moft)]
set M0Y1 [expr (0.5
Fpitch+Moft)]
set M0X0b [expr (0.5Ppitch-0.5*Lm0b)]
set M0X1b [expr (0.5
Ppitch+0.5*Lm0b)]
set M0Y0b [expr (-0.5Fpitch-Moft+0.5(Lm0t-Lm0b))]
set M0Y1b [expr (0.5Fpitch+Moft-0.5(Lm0t-Lm0b))]

set Hgate [expr (-1.0*(Tgate+Tox))]
set Hcesl [expr (Hgate-Tcesl)]
set Hild [expr (Hcesl-Tild)]

if @<Wbottom == Wtop>@

set Afin 90.0
set Afin0 90.0

else

set Afin [expr (180.0/3.14159265atan(H/(0.5*(Wb-Wt))))] set Afin0 [expr (180.0/3.14159265*atan(H/(0.5(Wb-Wt))))]

endif

set Am0 [expr (180.0/3.14159265atan((Tcesl+Tgate+Tox-tHepi)/(0.5(Lm0t-Lm0b))))]
set Acg [expr (180.0/3.14159265atan((Tild+Tcesl)/(0.5(Dcgt-Dcgb))))]
set Acm0 [expr (180.0/3.14159265*atan(Tild/(0.5*(Dcm0t-$Dcm0b))))]

-----------------------------------------------------

-----------------------------------------------------

---------------------------------------------------------------------#

SIMULATION CONTROLL

set debug 1
set DoStrain 1
set DoDiff 1
set DoRound 1
set Type @Type@

---------------------------------------------------------------------#

USER-DEFINED PROCEDURES

source user_proc.fps

proc WriteBND {} {
global count

    if { $count < 10} {
       struct tdr.bnd=n@node@_0${count}
    } else {
       struct tdr.bnd=n@node@_${count}
    }
    set count [expr $count+1]

}
set count 1

---------------------------------------------------------------------#

SetTDRList {Stress StressEL Dopants xMoleFraction} !Solutions

设置保存TDR格式文件时要包含的解决方案或术语名称列表。

SetTDRList [Dopants] [<solution/term names>] [Solutions]
将 stress stressEL Dopants xModelFraction都保存到tdr中
!Solution表示关闭所有默认保存(仅由名称指定的字段将保存到TDR文件中)。

line y loc=Ymin tag=back line y loc=Ymax tag=front

line 指定网格线的位置和间距 loc 沿着所选轴定位的位置。 tag标签

line z loc=Xmin tag=left line z loc=Xmax tag=right

line x loc=-0.15
line x loc=0 tag=top
line x loc=H line x loc=Tsub tag=bottom

region Silicon xlo=top xhi=bottom ylo=back yhi=front zlo=left zhi=right substrate

region 创建区域、标记基底(substrate)和更改区域材质。

Silicon 材料
xlo ylo zlo xhi yhi zhi:指定该区域的边界。<c>值必须是在前一行命令中创建的标记之一。
substrate 标记一个已命名的区域作为后续分析的基质。设置!substrate可清除衬底标签。如果未指定区域名称并设置了!substrate,则将清除所有衬底标记。

if "@sOri@" == "100" && "@cDir@" == "100"

init field=Boron concentration=1e15 wafer.orient = { 0 0 1 } flat.orient = { 1 0 0 }

elif "@sOri@" == "100" && "@cDir@" == "110"

init field=Boron concentration=1e15 wafer.orient = { 0 0 1 } flat.orient = { 1 1 0 }

elif "@sOri@" == "110" && "@cDir@" == "100"

init field=Boron concentration=1e15 wafer.orient = { 1 1 0 } flat.orient = { 0 0 1 }

elif "@sOri@" == "110" && "@cDir@" == "110"

init field=Boron concentration=1e15 wafer.orient = { 1 -1 0 } flat.orient = { 1 1 0 }

endif

refinement at interfaces 细化

mgoals accuracy=1e-6
pdbSet Grid SnMesh max.box.angle.3d 165
grid set.min.normal.size= 0.005
set.normal.growth.ratio.3d= 2
set.max.points= 10000000
refinebox interface.materials= {Silicon Polysilicon Oxide Nitride Oxynitride}

----- Mesh refinement -----##### 网格细化

DFISE -Z Y X

refinebox name=All
min= "-2.0 YminXmin"
max= " 1.0 YmaxXmax"
xrefine= 0.5 yrefine= W/2.0 zrefine=L/2.0

set tYmin [expr (-2.0*W)] set tYmax [expr (2.0*W)]

DFISE -Z Y X

refinebox name=gSTI
min= "-0.05 tYminXmin"
max= " 0.10 tYmaxXmax"
xrefine= 0.01 yrefine= W/5.0 zrefine=L/4.0

pdbSet InfoDefault 1

--------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------

----- FIN define -----FIN定义

set tAY0 [expr (-0.5*Wt)] set tAY1 [expr (0.5*Wt)]
mask name=FIN left=tAY0 right=tAY1 back=AX0 front=AX1 negative

photo mask=FIN thickness=0.001
etch material=Silicon type=trapezoidal angle=Afin thickness=1*Tsti
strip Photoresist
if { $debug } { WriteBND }

if { $DoRound } {
######################################################################################

----- Fin Corner Round Etch -----#####
----- Polyhedron is used to accurately control the fin Corner Rounding -----#####
----- Dummy polyhedron is overlapped with Si fin and removed. -----#####
----- Rounded fin is left. -----#####

set PI 3.14159265
set cR 0.0025 ;# Fin corner radius 圆角直径

-- Rounding is approximated by 4 edges. --##

-- Points for etch polyhedron 多面体 --##

set alpha [expr (90.0-0.5Afin)] set rXcR
set rY [expr (0.5
Wt-cR/tan(PI/180.0*alpha))]
set nP 5
set dA [expr (Afin/(nP-1))]
set tx0 [expr (Xmin-1.0)] set tx1 [expr (Xmax+1.0)]
set theta [expr (0dA)] set xv [expr (rX - cR*cos(PI/180.0theta))] set yv [expr (rY + cR*sin(PI/180.0theta))] eval point name=pf0 coord= \{xv yvtx0}
eval point name=pb0 coord= {xvyv tx1\} set theta [expr (1*dA)]
set xv [expr (rX -cR
cos(PI/180.0*theta))]
set yv [expr (rY +cRsin(PI/180.0*theta))]
eval point name=pf1 coord= {xvyv tx0\} eval point name=pb1 coord= \{xv yvtx1}
set theta [expr (2
dA)] set xv [expr (rX - cR*cos(PI/180.0theta))] set yv [expr (rY + cR*sin(PI/180.0theta))] eval point name=pf2 coord= \{xv yvtx0}
eval point name=pb2 coord= {xvyv tx1\} set theta [expr (3*dA)]
set xv [expr (rX -cRcos(PI/180.0*theta))]
set yv [expr (rY +cR
sin(PI/180.0*theta))]
eval point name=pf3 coord= {xvyv tx0\} eval point name=pb3 coord= \{xv yvtx1}
set theta [expr (4dA)] set xv [expr (rX - cR*cos(PI/180.0theta))] set yv [expr (rY + cR*sin(PI/180.0theta))] eval point name=pf4 coord= \{xv yvtx0}
eval point name=pb4 coord= {xvyv tx1\} eval point name=pf00 coord= \{ -1.0*Tox 0.0 tx0 \} eval point name=pf11 coord= \{H 0.5
Wb+Tox tx0 \} eval point name=pf01 coord= \{ -1.0*Tox 0.5Wb+Tox tx0 \} eval point name=pb00 coord= \{ -1.0*Tox 0.0 tx1 \} eval point name=pb11 coord= \{H 0.5Wb+Tox tx1 \} eval point name=pb01 coord= \{ -1.0*Tox 0.5*Wb+Tox $tx1 }
point list

-- Polygons 多边形 for etch polyhedron多面体 --##

set tnP [expr (nP-1)] for {set i 0} {i < tnP} {incr i 1} { set j [expr (i+1)]
set p0Name "pfi" set p1Name "pfj"
set p2Name "pbj" set p3Name "pbi"
set pLName "pLi" eval polygon name=pLName points = { p0Namep1Name p2Namep3Name }
}
set p0Name "pftnP" set p1Name "pf11" set p2Name "pb11" set p3Name "pbtnP"
set pLName "pLtnP" eval polygon name=pLName points = { p0Namep1Name p2Namep3Name }
set tnP [expr (nP-0)] set p0Name "pf11" set p1Name "pf01" set p2Name "pb01" set p3Name "pb11" set pLName "pLtnP"
eval polygon name=pLName points = \{p0Name p1Namep2Name p3Name \} set tnP [expr (nP+1)]
set p0Name "pf01"
set p1Name "pf00"
set p2Name "pb00"
set p3Name "pb01"
set pLName "pLtnP" eval polygon name=pLName points = { p0Namep1Name p2Namep3Name }
set tnP [expr (nP+2)] set p0Name "pf00" set p1Name "pf0" set p2Name "pb0" set p3Name "pb00" set pLName "pLtnP"
eval polygon name=pLName points = \{p0Name p1Namep2Name p3Name \} set tnP [expr (nP+3)]
set pLName "pLtnP" eval polygon name=pLName points = { pf0 pf1 pf2 pf3 pf4 pf11 pf01 pf00 }
set tnP [expr (nP+4)] set pLName "pLtnP"
eval polygon name=$pLName points = { pb0 pb1 pb2 pb3 pb4 pb11 pb01 pb00 }

-- Etch polyhedron --##

polyhedron name= crEtch polygons = { pL0 pL1 pL2 pL3 pL4 pL5 pL6 pL7 pL8 pL9 } info=2
polyhedron list
insert polyhedron=crEtch replace.materials= { Silicon SiFin SiStop }
new.material=Oxynitride new.region=etchedDummy
PolyHedronClear
if { $debug } { WriteBND }

strip Oxynitride
if { $debug } { WriteBND }
######################################################################################
}

-- Define the channel stop region and the channel region for the convenience -##定义沟道停止区 和沟道区域

polyhedron name=sstop brick = { HgateYmin XminTsti YmaxXmax } info=2
polyhedron list
insert polyhedron=sstop replace.materials= { Silicon } new.material=SiStop new.region=ChStop#替换掉材料Silicon
point clear
polygon clear
polyhedron clear
if { $debug } { WriteBND }

polyhedron创建并存储三维多面体,以便以后与插入命令一起插入或与轮廓命令一起使用。

polyhedron name=sfin brick = { HgateYmin XminH YmaxXmax } info=2
polyhedron list
insert polyhedron=sfin replace.materials= { Silicon SiStop } new.material=SiFin new.region=ChFin
point clear
polygon clear
polyhedron clear
if { $debug } { WriteBND }

----- Mesh refinement -----#####

set tYmin [expr (-2.0*W)] set tYmax [expr (2.0*W)]

DFISE -Z Y X

refinebox name=WellIIP0
min= " H-0.005tYmin Xmin" \ max= "H+0.006 tYmaxXmax"
xrefine= 0.005 yrefine= W/5.0 zrefine=L/5.0

DFISE -Z Y X

refinebox name=WellIIP1
min= " H-0.001tYmin Xmin" \ max= "H+0.004 tYmaxXmax"
xrefine= 0.0005 yrefine= W/5.0 zrefine=L/5.0

set tYmin [expr (-1.5*W)] set tYmax [expr (1.5*W)]

DFISE -Z Y X

refinebox name=STI
min= " 0.0 tYminXmin"
max= " H+0.000tYmax AX1" \ xrefine= 0.1*W yrefine= 0.1*W zrefine= 0.1*W

pdbSet InfoDefault 1

----- STI fill -----

if { $DoStrain } {

----- STI stressor -----

--- Calculate intrinsic stress 计算固有应力---------------------------------

set iS [expr (iSsti * 1.0e10 * ( 1.0 - 0.16 ) / ( 1.0 - 2.0 * 0.16 ))] doping name=SxxSTI field=StressELXX depths= { 0 100 } stress.values= {iS iS } doping name=SyySTI field=StressELYY depths= { 0 100 } stress.values= {iS iS } doping name=SzzSTI field=StressELZZ depths= { 0 100 } stress.values= {iS $iS }

淀积 氧化物(Oxide) coord填充坐标到H 区域名称 TRECH 应力掺杂

deposit Oxide type=fill coord=$H region.name=TRECH
doping= { SxxSTI SyySTI SzzSTI }

diffuse temp=600 time=1.0e-6<s> stress.relax
struct tdr=n@node@_sti !gas !interfaces alt.maternames

} else {

deposit Oxide type=fill coord=$H

}
if { $debug } { WriteBND }

----- Gate oxide -----栅极氧化层

etch Oxide type=isotropic thickness=1Tox+0.0005 mgoals analytic.thickness=5e-4 deposit GATEox type=isotropic thickness=1*Tiox
deposit HfO2 type=isotropic thickness=1
Thfo2 if {debug } { WriteBND }

- Remove thin layers in the non-active region (STI) for the mesh and the convergence 移除网格和收敛的非活动区域(STI)中的薄层

polyhedron name=sti brick= { HYmin-0.001 Xmin-0.001H+Tox+0.001Ymax+0.001 Xmax+0.001 } polyhedron list insert polyhedron=sti replace.materials= { HfO2 GATEox Gas } \ new.material=Oxide new.region=TRENCH PolyHedronClear if {debug } { WriteBND }

----- Poly gate -----

polyhedron name=gp brick = { HgatePY0 PX0H+0.0005 PY1PX1 } info=2
polyhedron list
insert polyhedron=gp replace.materials= {Gas } new.material=PolySilicon new.region=GatePoly
point clear
polygon clear
polyhedron clear
if { $debug } { WriteBND }

----- spacer0 -----

polyhedron name=gp brick = { HgateSP0Y0 SP0X0H+0.0005 SP0Y1SP0X1 } info=2
polyhedron list
insert polyhedron=gp replace.materials= { Gas } new.material=LowK new.region=Spacer0
point clear
polygon clear
polyhedron clear
if { $debug } { WriteBND }

----- Mesh refinement -----#####

set tAY0 [expr (-0.5*Wb-0.010)] set tAY1 [expr (0.5*Wb+0.010)]

DFISE -Z Y X

refinebox name=Active
min= "-0.012 tAY0AX0"
max= " H+0.010tAY1 $AX1"
xrefine= 0.002 yrefine= 0.002 zrefine= 0.002

set tAY0 [expr (-0.5Wb-0.002)] set tAY1 [expr (0.5*Wb+0.002)]
set tspx0 [expr (-0.5
L-Lsp1-0.005)]
set tspx1 [expr (0.5*L+Lsp1+0.005)]

DFISE -Z Y X

refinebox name=Channel
min= "-0.004 tAY0tspx0"
max= " H+0.005tAY1 $tspx1"
xrefine= 0.001 yrefine= 0.001 zrefine= 0.001

set tAY0 [expr (-0.5Wb-0.002)] set tAY1 [expr (0.5*Wb+0.002)]
set tpx0 [expr (-0.5
L-0.002)] set tpx1 [expr (0.5*L+0.002)]

DFISE -Z Y X

refinebox name=cChannel
min= "-0.002 tAY0tpx0"
max= " HtAY1 $tpx1"
xrefine= 0.001 yrefine= 0.001 zrefine= 0.0005

----- Generate S/D SiGe epi shape using polyhedron command -----

set tx0 [expr (0.5*L+Lsp0-0.0000)]
set tx1 [expr (Ppitch-0.5*L-$Lsp0+0.0000)]

- Etch out the silicon source/drain region

if "@Type@" == "pMOS"

polyhedron name=dummy brick= { HildYmin-0.001 tx0H+0.0001 Ymax+0.001tx1 }
polyhedron list
insert polyhedron=dummy replace.materials= { HfO2 GATEox SiFin }
new.material=Oxynitride new.region=SDetchDummy
PolyHedronClear

strip Oxynitride

set tx0 [expr (0.5L+Lsp0-Esd)] set tx1 [expr (Ppitch-0.5L-Lsp0+Esd)] polyhedron name=dummy brick= {Hild Ymin-0.001tx0 H+0.0001Ymax+0.001 $tx1 }
polyhedron list
insert polyhedron=dummy replace.materials= { SiFin }
new.material=Oxynitride new.region=SDetchDummy
PolyHedronClear

strip Oxynitride

else

polyhedron name=dummy brick= { HildYmin-0.001 tx0H+0.0001 Ymax+0.001tx1 }
polyhedron list
insert polyhedron=dummy replace.materials= { HfO2 GATEox }
new.material=Oxynitride new.region=SDetchDummy
PolyHedronClear

strip Oxynitride

endif

if { $debug } { WriteBND }

- SiGe or SiC source/drain generation

set th [expr ($H+0.0001)]

if "@Type@" == "pMOS"

set ty0 [expr (-0.5*Wb)] set ty1 [expr (0.5*Wb)]

else

set ty0 [expr (-0.5Wb-1.1*Tox)]
set ty1 [expr (0.5
Wb+1.1*Tox)]

endif

if "@Type@" == "pMOS"

- Fill SiGe epi under Gate Stack.

set tx0 [expr (0.5L+Lsp0-Esd)] set tx1 [expr (0.5*L+Lsp0-0.0001)] set ty0 [expr (-0.5*Wb-0.0001)]
set ty1 [expr (0.5
Wb+0.0001)] set tz0 [expr (-1.0*Tox)]
polyhedron name=sigeUG brick= { tz0ty0 tx0th ty1tx1 }
polyhedron list
insert polyhedron=sigeUG replace.materials= { Gas }
new.material=SiGeSD new.region=SDepi
PolyHedronClear

- Call the SiGe epi polyhedron generation procedure

set tx0 [expr (0.5*L+Lsp0-0.0002)]
set tx1 [expr (Ppitch-0.5*L-$Lsp0+0.0002)]

EpitaxySD sd tx0tx1 ty0ty1 thbHepi mHepitHepi bLepimLepi tLepiFangle
polyhedron list
insert polyhedron=sd replace.materials= { Gas }
new.material=SiGeSD new.region=SDepi
PolyHedronClear

else

- SiC source/drain generation

set tx0 [expr (0.5L+Lsp0-Esd)] set tx1 [expr (Ppitch-0.5L-Lsp0+0.0000)]

polyhedron name=sd brick= { Hildty0 tx0H+0.0001 ty1tx1 }
polyhedron list
insert polyhedron=sd replace.materials= { SiFin }
new.material=SiSD new.region=SDepi
PolyHedronClear

endif

if { $debug } { WriteBND }

if { $DoStrain } {

------------------------------------------------------------------------------------

----- S/D stressor -----

--- Assign intrinsic stress to S/D SiGe epi ---------------------------------

if "@Type@" == "nMOS"

--- Calculate intrinsic stress from C Mole fraction ---------------------------------

--- C11=165.7GPa C12=63.9GPa C44=79.6GPa for Silicon - 2% C negiligible

set iS [expr (1.0 * ( 165.7 + 2 * 63.9 ) * 1e9 * 0.449 * CMoleFraction )] stressdata SiSD sxxi=iS<Pa> syyi=iS<Pa> szzi=iS<Pa>

else

set Nge [expr (GeMoleFraction*5.0e22)] sel SiGeSD z=Nge name=Germanium store

endif

diffuse temp=600 time=1.0e-6<s> stress.relax
struct tdr=n@node@_SDepi !gas !interfaces alt.maternames

}

----- spacer1 -----

polyhedron name=gp brick = { HgateSP1Y0 SP1X0H+0.0005 SP1Y1SP1X1 } info=2
polyhedron list
insert polyhedron=gp replace.materials= { Gas } new.material=LowK new.region=Spacer1
point clear
polygon clear
polyhedron clear
if { $debug } { WriteBND }

----- ILD fill ----- 层间介质填充

set tHgate [expr (Hgate+0.0000)] deposit LowK type=fill coord=tHgate region.name=ILDg
if { $debug } { WriteBND }

----- Poly Gate Removal -----去除PolyGateRemoval

strip PolySilicon
if { $debug } { WriteBND }

if { $DoStrain } {

--- Stress Rebalance after gate removal ---------------------------------

diffuse temp=600 time=1.0e-6<s> stress.relax
struct tdr=n@node@_GateRemoval !gas !interfaces alt.maternames
}

------------------------------------------------------------------------------------

----- Assign doping profile -----

if { DoDiff } { sel SiFin z=Nch name=$Dch store

sel SiStop z=Nstop name=Dstop store

if "@Type@" == "nMOS"

sel SiSD z=Nsd name=Dsd store

else

sel SiGeSD z=Nsd name=Dsd store

endif

diffuse temp=1000 time=100.0e-3<s> stress.relax
struct tdr=n@node@_Doping !gas !interfaces alt.maternames
}

------------------------------------------------------------------------------------

----- Metal Gate Deposition -----金属栅淀积

if { $DoStrain } {

--- Calculate intrinsic stress ---------------------------------计算固有应力

set iS [expr (iSMG * 1.0e10 * ( 1.0 - 0.296 ) / ( 1.0 - 2.0 * 0.296 ))] doping name=SxxMG field=StressELXX depths= { 0 100 } stress.values= {iS iS } doping name=SyyMG field=StressELYY depths= { 0 100 } stress.values= {iS iS } doping name=SzzMG field=StressELZZ depths= { 0 100 } stress.values= {iS $iS }

set tHgate [expr (Hgate+0.0010)] deposit material=Tungsten type=fill coord=tHgate region.name=GateMetal
doping= { SxxMG SyyMG SzzMG }

淀积钨

diffuse temp=600 time=1.0e-6<s> stress.relax
struct tdr=n@node@_MG !gas !interfaces alt.maternames

} else {

deposit material=Tungsten type=fill coord= $tHgate region.name=GateMetal

}
if { $debug } { WriteBND }

----- CESL depo -----接触蚀刻停止层

deposit Nitride type=fill coord=Hcesl region.name=ILDm0 if {debug } { WriteBND }

if 0

set tHcesl [expr (Hcesl-0.0001)] set tH [expr (H+0.0001)]

----- M0 fill -----金属填充

set tTPs [list [list tHceslM0Y0 M0X0] [listtHcesl M0Y0M0X1] [list tHceslM0Y1 M0X1] [listtHcesl M0Y1M0X0]]
set tBPs [list [list tHM0Y0b M0X0b] [listtH M0Y0bM0X1b] [list tHM0Y1b M0X1b] [listtH M0Y1bM0X0b]]
HexaHedron m0 tTPstBPs
polyhedron list
insert polyhedron=m0 replace.materials= { Nitride LowK Gas }
new.material=Tungsten new.region=M0
PolyHedronClear
if { $debug } { WriteBND }

if { $DoStrain } {

----- Via Metal Deposition -----

--- Calculate intrinsic stress ---------------------------------

set iS [expr (iScont * 1.0e10 * ( 1.0 - 0.296 ) / ( 1.0 - 2.0 * 0.296 ))] stressdata region= M0 sxxi=iS syyi=iS szzi=iS

diffuse temp=600 time=1.0e-6<s> stress.relax
struct tdr=n@node@_VIA !gas !interfaces alt.maternames

}
if { $debug } { WriteBND }

endif

----- M0 fill -----

set tMh [expr (H+0.005-Hcesl)]
set tMx [expr (0.5(Lm0t-Lm0b))]
set Avia [expr (180.0/3.14159265
atan(tMh/tMx))]
polygon name=viaLayout min= { M0Y0M0X0 } max= { M0Y1M0X1 } rectangle
mask name=VIA polygons= {viaLayout}
photo mask=VIA thickness=0.001
etch material= {Nitride LowK} type=trapezoidal angle=Avia thickness=1*Tsti
strip Photoresist
mask clear
polygon clear
if { $debug } { WriteBND }

if { $DoDiff } {

----- Via Metal Deposition -----

--- Calculate intrinsic stress ---------------------------------

set iS [expr (iScont * 1.0e10 * ( 1.0 - 0.296 ) / ( 1.0 - 2.0 * 0.296 ))] doping name=SxxM0 field=StressELXX depths= { 0 100 } stress.values= {iS iS } doping name=SyyM0 field=StressELYY depths= { 0 100 } stress.values= {iS iS } doping name=SzzM0 field=StressELZZ depths= { 0 100 } stress.values= {iS $iS }

deposit Tungsten type=fill coord=$Hcesl+0.001 region.name=M0 doping= { SxxM0 SyyM0 SzzM0 }

diffuse temp=600<C> time=1.0e-6<s> stress.relax

-struct tdr=n@node@_M0 !gas !interfaces alt.maternames

} else {
deposit Tungsten type=fill coord=Hcesl+0.001 region.name=M0 } if {debug } { WriteBND }

----- ILD -----

deposit LowK type=fill coord=Hild region.name=ILDv if {debug } { WriteBND }

----- Cone VIA -----

----- VIA to metal gate and fill tungsten into VIA -----

set tX0 $AX0

-set tY0 [expr (PY1 - 0.4*PY)]

set tY0 0.0
set POINTSg [GetCirclePoints tX0tY0 Dcgt] eval polygon name=VIAg points= \{POINTSg}

mask name=VIAtoG polygons= {VIAg} !negative
photo mask=VIAtoG thickness=0.001
if { debug } { WriteBND } etch material=LowK type=trapezoidal angle=Acg thickness=2Tild etch material=Nitride type=trapezoidal angle=Acg thickness=2$Tcesl
strip Photoresist

polygon list
point clear
polygon clear
polyhedron clear
if { $debug } { WriteBND }

deposit Tungsten type=fill coord=Hild+0.0001 if {debug } { WriteBND }

----- VIA to source/drain and fill tungsten into VIA -----

set tX0 [expr (0.5*Ppitch)] set tY0 0.0 set POINTSm0 [GetCirclePointstX0 tY0Dcm0t]
eval polygon name=VIAm0 points= {$POINTSm0}

mask name=VIAtoM0 polygons= {VIAm0} !negative
photo mask=VIAtoM0 thickness=0.001
if { debug } { WriteBND } etch material=LowK type=trapezoidal angle=Acm0 thickness=2*$Tild
strip Photoresist

polygon list
point clear
polygon clear
polyhedron clear
if { $debug } { WriteBND }

deposit Tungsten type=fill coord=Hild+0.0001 if {debug } { WriteBND }

diffuse temp=600 time=1.0e-6<s> stress.relax

----- Save TDR file -----

struct tdr=n@node@_profile_q !gas !interfaces !alt.maternames

----- Reflect the structure to the channel direction -----

----- Both source and drain are in the structure -----

transform reflect back
if { $debug } { WriteBND }

----- Save TDR file -----

struct tdr=n@node@_profile !gas !interfaces !alt.maternames

-#----- Reflect the structure to the fin width direction -----

-#----- Whole fin (not the half fin) is there -----

-transform reflect left

-if { $debug } { WriteBND }

----- Contact for sdevice simulation -----

contact bottom name=substrate Silicon
contact point replace region=GateMetal name=gate
contact point replace region=M0.1 name=source
contact point replace region=M0.2 name=drain
if { $debug } { WriteBND }

--Change refinement strategy and remesh-------------------------------

---------------Remeshing for device simulation--------##

clear the process simulation mesh

refinebox clear
refinebox !keep.lines
refinebox clear.interface.mats
line clear

pdbSet Grid MGoals Keep3DBrep 0

Set very high values for adaptive meshing parameters

pdbSet Grid AdaptiveField Refine.Abs.Error 1e37
pdbSet Grid AdaptiveField Refine.Rel.Error 1e10
pdbSet Grid AdaptiveField Refine.Target.Length 100.0

Set high quality delaunay meshes

pdbSet Grid sMesh 1
pdbSet Grid SnMesh CoplanarityAngle 179
pdbSet Grid SnMesh MaxPoints 500000
pdbSet Grid SnMesh MaxNeighborRatio 1e6

Set the interface spacing

mgoals accuracy=1e-6
pdbSet Grid SnMesh max.box.angle.3d 179
grid Adaptive set.Delaunay.type= boxmethod
set.min.normal.size= 0.01
set.normal.growth.ratio.3d= 8.0
set.max.points= 500000
set.max.neighbor.ratio= 1e6

Which interfaces are to have interface meshes

refinebox interface.materials = {Silicon}

refinebox interface.materials= {Silicon SiFin GATEox Oxide HfO2}

----- Mesh refinement -----#####

set Ymax [expr (0.5Fpitch+PY+0.010)]
set Ymin [expr (-1.0
Ymax)] set XmaxAX1
set Xmin [expr (-1.0*$Xmax)]

DFISE -Z Y X

refinebox name=eAll
min= "-2.0 YminXmin"
max= " 1.0 YmaxXmax"
xrefine= 0.5 yrefine= 2.0*W zrefine= 0.5*L

set tYmin [expr (-1.0*Wb)] set tYmax [expr (1.0*Wb)]

DFISE -Z Y X

refinebox name=eSTI
min= "-0.05 tYminXmin"
max= " 0.12 tYmaxXmax"
xrefine= 0.01 yrefine= 0.01 zrefine= 0.01

set tAY0 [expr (-0.5*Wb-0.005)] set tAY1 [expr (0.5*Wb+0.005)]

DFISE -Z Y X

refinebox name=eActive \

- min= "-0.012 tAY0SP1X0-0.005" \

- max= " H+0.010tAY1 $SP1X1+0.005" \

      min= "-0.012       $tAY0              $Xmin" \
      max= " $H+0.010    $tAY1              $Xmax" \
      xrefine= 0.005     yrefine= 0.005     zrefine= 0.005

set tAY0 [expr (-0.5*Wb-0.002)] set tAY1 [expr (0.5*Wb+0.002)]

DFISE -Z Y X

refinebox name=e0Active
min= "-0.004 tAY0SP1X0-0.000"
max= " H+0.004tAY1 $SP1X1+0.000"
xrefine= 0.002 yrefine= 0.002 zrefine= 0.002

set tAY0 [expr (-0.5*Wb-0.001)] set tAY1 [expr (0.5*Wb+0.001)]

DFISE -Z Y X

refinebox name=eChannel
min= "-0.001 tAY0SP0X0-0.000"
max= " H+0.001tAY1 $SP0X1+0.000"
xrefine= 0.001 yrefine= 0.001 zrefine= 0.002

set tAY0 [expr (-0.5*Wb-0.000)] set tAY1 [expr (0.5*Wb+0.000)]

DFISE -Z Y X

refinebox name=eRChannel
min= "-0.000 tAY0PX1-0.000"
max= " H+0.000tAY1 SP0X1+0.000" \ xrefine= 0.001 yrefine= 0.001 zrefine= 0.001 refinebox name=eLChannel \ min= "-0.000tAY0 SP0X0-0.000" \ max= "H+0.000 tAY1PX0+0.000"
xrefine= 0.001 yrefine= 0.001 zrefine= 0.001

pdbSet InfoDefault 1

refinebox remesh info=2

----- Save TDR file -----

struct tdr=n@node@_e !gas interfaces alt.maternames

exit

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359

推荐阅读更多精彩内容