CMOS_180nm 解析

#headerfset Type @Domain@
icwb filename= "CMOSInv180_lyt.mac" scale= 1e-3fset Domains [icwb list domains]
icwb domain= "@Domain@"#rem # Query utility: Returns the dimension of the selected simulation domain.
fset DIM [icwb dimension]#rem # Define stretch marks
icwb stretch name= "Lg_${Type}" value= @<(Lgate-0.180)>@#rem # Query utility: Returns the bounding box of the simulation
fset Ymin [icwb bbox left]
fset Ymax [icwb bbox right]
LogFile "icwb: Centered Bounding Box: Ymin ->$Ymin ; Ymax -> $Ymax"fset LYmin [icwb bbox left ]
fset LYmax [icwb bbox ymax]
LogFile "icwb: Layout Bounding Box -> Lymin -> $LYmin ; Lymax -> $LYmax"set Ymic [expr ($Ymax-$Ymin)/2.0]
set CNode @node@#endheader#rem #---------------------------------------------------------------------------#
#rem #   DESIGN RULES
#rem #---------------------------------------------------------------------------#
fset PolyPitch 0.6
fset IsoPitch 0.6#rem #-------------------------------------------------------------------------#
#rem # PARAMETERS
#rem #-------------------------------------------------------------------------#fset Lg @Lgate@
fset Lg2 @<Lgate/2.0>@
fset dL @<(Lgate-0.18)>@fset PolyReox 0.0075
fset Tpoly 0.3
fset gox 0.0043
fet Tsub 10.0
fset PadOxT 0.015
fset PadNT 0.2fset ThermOx 0.02
fset Divot 0.06
fset LOCOS_T 0.05
fset STI_width 0.09
fset STI_depth 0.50
fset STI_tilt 80.0
fset Recess_Iso 0.001
fset Lsp 0.12
fset Nat_oxide 0.006
fset TiSi_thick 0.035#rem #------------------------------------------------------------------------------#
#rem #          SIMULATION CONTROLL
#rem #------------------------------------------------------------------------------#fset fp 1.0
fset FastMode 0
fset debug 0
fset count 1
fset MinNormalSize 0.005
fset NormalGrowthRatio 2.0fproc WriteBND {} {global countglobal CNodeif { $count <10} {struct tdr.bnd=n${CNode}_0${count}} else {struct tdr.bnd=n${CNode}_${count}}incr count}#rem # Parallel simulation strategy and unified coordinate system
math numThreads= 4
math coord.ucs#rem #-------------------------------------------------#
#rem #  START SIMULATION
#rem #-------------------------------------------------#
line x location= -0.1
line x location= 0.0 tag= top
line x location =0.1
line x location= $Tsub tag= bottomline y location= $Ymin spacing= 100.0 tag= left
line y location= $Ymax spacing= 100.0 tag= rightregion Silicon substrate xlo= top xhi= bottom ylo= left yhi= right
init Silicon field= Boron concentartion= 1.0e15 wafer.orient= {0 0 1} flat.orient= {1 1 0} slice.angle=45 !DelayFullDAdvanceCalibration
2DOxidationSetup#pdb settings  -------------------------------------------------------------
pdbSet InfoDefault 1
pdbSet Diffuse minT 500.0
pdbSet Mechanics StressHistory 1
pdbSet Mechanics EtchDepoRelax 0
pdbSet ImplantData ResistSkip 1
pdbSet ImplantData LeftBoundary Reflect
pdbSet ImplantData RightBoundary Reflect
pdbSet ImplantData BackBoundary Reflect
pdbSet ImplantData FrontBoundary Reflect# meshing strategy
grid set.min.normal.size= $MinNormalSize/$fp set.normal.growth.ratio.2d= $NormalGrowthRatio set.max.points= 10000000 set.max.neighbor.ratio= 1e6icwb.create.mask layer.name= "NWELL PWELL" polarity= positive name= Subrefinebox name= BG mask= Sub extend= 0.2 extrusion.min= -0.5 extrusion.max=10.0 xrefine= "0.1/$fp" yrefine= "0.1/$fp"#rem # Well Implants
deposit oxide thickness= 0.05 anisotropic
icwb.create.mask layer.name= PWELL name= pwell polarity= positive info= 1
photo mask= pwell thickness =5.0implant Boron dose= 1.0e12<cm-2> energy= 200<kev> tilt= 0 rotation= 0
implant Boron dose= 1.0e12<cm-2> energy= 120<kev> tilt= 0 rotation= 0
implant Boron dose= 1.0e12<cm-2> energy= 80<kev> tilt= 0 rotation= 0
implant Boron dose= 5.0e12<cm-2> energy= 40<kev> tilt= 0 rotation= 0
implant Boron dose= 5.0e12<cm-2> energy= 20<kev> tilt= 0 rotation= 0
implant Boron dose= 5.5e12<cm-2> energy= 10<kev> tilt= 0 rotation= 0if { $debug } { WriteBND }
strip Photoresist#rem # Drive-in
diffuse time= 1<min> temp= 1000# ---------------------------------------- #
SetPlxList {BTotal AsTotal PTotal }
WritePlx n@node_well.plx y= $Ymid
# ---------------------------------------- #strip oxide#split @LOCOS@
## -------------Pad-Oxide and Nitride -------------------------
deposit material= {Oxide} type= anisotropic rate= {$PadOxT} time= 1.0
deposit material= {Nitride} type= anisotropic rate= {$PadNT} time= 1.0
if { $debug } { WriteBND }
icwb.create.mask layer.name= "NACTIVE PACTIVE" name= STI polarity= negative info= 1
photo mask= STI thickness =0.5
if { $debug } { WriteBND }
etch material= {Nitride Oxide} type= anisotropic rate= {$PadNT $PadOxT} time= 2.0
strip Photoresist
if { $debug } { WriteBND }refinebox name= LOCOS1 min= "-0.2 0.2" max= "0.1 0.5" extend= 0.25 extrusion.min= -0.1 extrusion.max= 0.1 xrefine= " 0.01" yrefine= " 0.02"
refinebox name= LOCOS2 min= "-0.2 1.5+$dL" max= "0.1 1.8+$dL" extend= 0.25 extrusion.min= -0.1 extrusion.max= 0.1 xrefine= " 0.01" yrefine= " 0.02"grid remeshdiffuse temperature= 900<C> time= 20<min> H2O#split @STI@## ----------------LOCOS-deglaze-------------------------------
etch material= {Oxide} type= anisotropic rate= {0.05} time= 1.5
if { $debug } { WriteBND }## ----------------TEOS-------------------------------
deposit material= {Oxide} type= isotropic rate= {0.05} time= 1.0
if { $debug } { WriteBND }
etch material= {Oxide Nitride} type= anisotropic rate= {0.05} time= 2.0
if { $debug } { WriteBND }## ----------------STI-------------------------------
etch material= {Silicon} type= trapezoidal rate= $STI_depth time= 1.0 angle= $STI_tilt
if { $debug } { WriteBND }temp_rampe name= liner time= 5 temp= 600.0 ramprate= 0.6667
temp_rampe name= liner time= 10 temp= 800.0 hold
temp_rampe name= liner time= 5 temp= 800.0 ramprate= -0.6667if { $FastMode !=1 } { diffuse stress.relax temp_ramp= liner info= 1}strip nitride
strip oxide
if { $debug } { WriteBND }etch material= {Silicon} type= isotropic rate= {0.015} time= 1.0
deposit material= {Silicon} type= isotropic rate= {0.015} time= 1.0
if { $debug } { WriteBND }deposit material= {Oxide} type= fill coord= -$ThermOx
if { $debug } { WriteBND }icwb.create.mask layer.name= "NACTIVE PACTIVE" polarity= positive name= Active
refinebox name= Vt mask= Active extend= 0.5 extrusion.min= -0.001 extrusion.max= 1.5 xrefine= "0.02/$fp 0.05/$fp" yrefine= "$IsoPitch/(18.0*$fp)"
grid remesh## ----------------Vth adjustment and ChannelStop Implant-------------------------------
photo mask= pwell thickness= 5.0
if { $debug } { WriteBND }
if { $FastMode !=1 } { implant Boron dose= 4.0e12 energy= 150 tilt= 0.0}
strip Photoresistphoto mask= nwell thickness= 5.0
if { $debug } { WriteBND }
## Vt adjust and SSR channel for pMOS.
if { $FastMode !=1 } {
implant Phosphorus dose= 4.0e12 energy= 250 tilt= 0.0
implant Arsenic dose= 1.5e12 energy= 30 tilt= 0.0
}
strip Photoresistif { $FastMode !=1 } { diffuse stress.relax temperature= 900<C> time= 1<min>}etch material= {Oxide} type= anisotropic rate= {$Divor} time= 1.0
if { $debug } { WriteBND }#split @Poly@## ----------------gate oxide-------------------------------
deposit material= {Oxide} type= isotropic rate= $gox time= 1.0
if { $debug } { WriteBND }temp_ramp name= gateox  time= 24 temp= 600.0 ramprate= 0.0972
temp_ramp name= gateox time= 20 temp= 740.0 ramprate= 0.0
temp_ramp name= gateox time= 0.093 temp= 740.0 ramprate= -25if { $FastMode !=1 } { diffuse stress.relax temp_rate= gateox}## ----------------poly silicon deposition and etching-------------------------------
deposit material= {Poly} type= isotropic thickness= $Tpoly
if { $debug } { WriteBND }icwb.create.mask layer.name= POLY name= POLY polarity= negative
photo mask= POLY thickness= 0.2
if { $debug } { WriteBND }etch material= {Poly} type= anisotropic rate= $Tpoly+$gox+$Divot time=1.0
if { $debug } { WriteBND }strip Photoresist
if { $debug } { WriteBND }etch material= {Poly} type= isotropic rate= {0.005} time= 1.0
deposit material= {Poly} type= isotropic rate= {0.005} time= 1.0 selective.materials= {Poly}
if { $debug } { WriteBND }etch material= {Oxide} type= anisotropic rate= $gox time= 1.5
if { $debug } { WriteBND }## ----------------reoxidation-------------------------------
deposit material= {Oxide} type= isotropic rate= {1.0} time= $PolyReox
if { $debug } { WriteBND }temp_ramp name= polyreox  time= 0.0667 temp= 600.0 ramprate= 50.0
temp_ramp name= polyreox  time= 0.0667 temp= 800.0 ramprate= 25.0
temp_ramp name= polyreox  time= 0.0833 temp= 900.0 ramprate= 0.0
temp_ramp name= polyreox  time= 0.0667 temp= 900.0 ramprate= -25.0
temp_ramp name= polyreox  time= 0.0667 temp= 800.0 ramprate= -50.0if { $FastMode !=1 } { diffuse stress.relax temp_rate= polyreox}#split @HDD@
## Meshing
icwb.create.mask layer.name= "POLY" name= ChMask polarity= positive
refinebox name= Channel  mask= Chmask extend= 0.15 extrusion.min= -0.001 extrusion.max= 0.1 xrefine= " 0.006/$fp" yrefine= " 0.006/$fp" Silicon
refinebox name= Channel_IF  mask= Chmask extend= 0.5 extrusion.min= -$gox extrusion.max= 0.025 min.normal.size= 0.002 normal.growth.ratio= 1.5 interface.materials= {Silicon Oxide}grid remeshicwb.create.mask layer.name= "NACTIVE" name= NMOSSD polarity= positive
photo mask= NMOSSD thickness= 0.5
if { $debug } { WriteBND }## ----------------n HDD Extension implantation-------------------------------
implant Arsenic dose= 1.5e15 energy= 18.0 tilt= 0.0## ----------------Pocket implantation-------------------------------
implant Boron dose= 1.5e13 energy= 25.0 tilt= 15 rotation= 0 mult.rot= 4strip Photoresist
if { $debug } { WriteBND }icwb.create.mask layer.name= "PACTIVE" name= PMOSSD polarity= positive
photo mask= PMOSSD thickness= 0.5
if { $debug } { WriteBND }## ----------------p HDD Extension implantation-------------------------------
implant BF2 dose= 4.5e14 energy= 6.0 tilt= 0.0## ----------------Pocket implantation-------------------------------
implant  Phosphorus dose= 2.5e13 energy= 25.0 tilt= 15 rotation= 0 mult.rot= 4strip Photoresist
if { $debug } { WriteBND }struct tdr= n@node@_asImplantHDD# ---------------------------------------- #
SetPlxList { Boron_Implant Arsenic_Implant Phosphorus_Implant}
WritePlx n@node@_extimp.plx y= [expr $Ymid-($Lg2-0.01)]
# ---------------------------------------- #diffuse time=10.0<s> temp= 1000<C>#split @SD@
## ----------------side wall spacer-------------------------------
deposit material= {Nitride} type= isotropic rate= {1.0} time= $Lsp
if { $debug } { WriteBND }
etch material= {Nitride} type= anisotropic rate= {1.2*$Lsp} time= 1.0
if { $debug } { WriteBND }
deposit material= {Oxide} type= isotropic rate= $Nat_oxide time=1.0 temprature= 500<C>
if { $debug } { WriteBND }## ---------------S/D implantation-------------------------------
photo mask= NMOSSD thickness= 1.0
if { $debug } { WriteBND }implant Arsenic dose= 2.5e15<cm-2> energy= 50<kev> tilt= 0 rotation= 0
implant Phosphorus dose= 1.5e15<cm-2> energy= 80<kev> tilt= 0 rotation= 0
strip Photoresist
if { $debug } { WriteBND }photo mask= PMOSSD thickness= 1.0
if { $debug } { WriteBND }implant Boron dose= 1.0e15<cm-2> energy= 13<kev> tilt= 0 rotation= 0
strip Photoresist
if { $debug } { WriteBND }struct tdr= n@node@_asImplantSDdiffuse time= 10.0<s> temp= 1000<C># ---------------------------------------- #
SetPlxList { BTotal AsTotal PTotal}
WritePlx n@node@_anneal.plx y= [expr $Ymid-($Lg2-0.01)]
# ---------------------------------------- ##split @Silicide@etch material= {Oxide} type= anisotropic rate= $Nat_oxide time= 2.5
if { $debug } { WriteBND }etch material= {Oxide} type= isotropic rate= $Nat_oxide time= 1.2
if { $debug } { WriteBND }etch material= {Silicide} type= isotropic rate= {0.015}  time= 1.0
if { $debug } { WriteBND }# Ramp-up from RT
diffuse stress.relax time= 60<s> temperature= 20<C> ramprate= [ expr (500.0-20.0)/60.0]<C/s>
deposit material= {TiSilicide} type= isotropic rate= $TiSi_thick time= 1.0 temprature= 500 selective.materials= {Silicon}
if { $debug } { WriteBND }# Ramp-down
diffuse stress.relax time= 60<s> temperature= 500<C> ramprate= [ expr (20.0-500.0)/60.0]<C/s>#split @DeviceMesh@#Mesh Multiplication factor for device
fset fd 1.0
fset Xbot 2.5#Trucate Top-bottom
transorm cut min= {-10 -10 -10} max= {$Xbot 10 10}# Constant Poly Doping
select z= {NetActive} name= NetActive store#if @[ string match "PMOS" @Domain@ ] @
select z= " -1.5e20" name= NetActive PolySilicon store
#else
select z= " 1.5e20" name= NetActive PolySilicon store
#endif## ---------------Remeshing for device simulation-------------------------------##
#clear the process simulation mesh
refinebox clear
refinebox !keep.lines
line clear#reset default setting for adaptive meshing
pdbSet Grid AdaptiveField Refine.Abs.Error 1e37
pdbSet Grid AdaptiveField Refine.Rel.Error 1e10
pdbSet Grid AdaptiveField Refine.Target.Length 100# set high quality delaunay meshes
grid Adaptive set.Delaunary.type= boxmethod set.max.points= 1000000  set.max.neighbor.ratio= 1e6 set.min.normal.size= 0.01/$fd set.normal.growth.ratio.2d= 4.0# Refinement strategy
refinebox name= Device_Active mask= Active extend=0.25 extrusion.min= -$Tpoly extrusion.max= $Xbot refine.fields= { Netactive } def.max.asinhdiff= 1.0 refine.min.edge= " 0.005/$fd $IsoPitch/(64.0*$fd)" refine.max.edge= " 0.1/$fd $IsoPitch/(64.0*$fd)" materials= {Silicon PolySilicon} adaptive
refinebox name= Device_Channel mask= Chmask extend=0.1 extrusion.min= -0.1 extrusion.max= 0.06 refine.fields= { Netactive } def.max.asinhdiff= 1.0 refine.min.edge= " 0.005/$fd 0.005/$fd" refine.max.edge= " 0.05/$fd 0.05/$fd" materials= {Silicon} adaptive
refinebox name= Device_IF mask= Active extend=0.05 extrusion.min= -0.02 extrusion.max= $Divot-0.001 min.normal.size= 0.001/$fd normal.growth.ratio= 1.2 interface.mat.pairs= {Silicon Oxide PolySilicon Oxide}grid remesh#Contacts
icwb.contact.mask layer.name= "drain" name= drain point TiSilicide replace x= 0.0
icwb.contact.mask layer.name= "source" name= source point TiSilicide replace x= 0.0
icwb.contact.mask layer.name= "gate" name= gate box PolySilicon xlo=-$Tpoly-0.05 xhi=-$Tpoly+0.05
contact bottom name= substrate Silicon# Saving
struct tdr= n@node@exit

- #header命令

header命令,顾名思义,就是在sprocess的每个工艺步骤的cmd文件头部增加的代码段。在工艺仿真中,常使用#split命令对工艺流程进行拆分,swb会把工艺仿真的cmd文件进行切割并分部仿真。然而有些变量是全局变量,贯穿整个工艺仿真的始终,例如沟道长度L,宽度W等。如果仅在第一步定义的变量,是无法带入后面的步骤中。为了解决这个问题,一个方法是使用fset命令,另外一种方法就是使用header命令(类似定义全局变量).
在preprocess之后,可以看到header中定义的语句被复制在各个步骤的cmd文件的头部了。

- fset 命令

sprocess 支持tcl编程,它的语法与sde中使用的scheme有很大区别。定义变量有两个命令,分别是set和fset。fset的含义是file set, 它会把变量的值存入tdr文件(file)中,并且会跟随tdr文件进入下一个仿真,这就为参数在不同的仿真步骤、仿真工具之间传递提供了方便,而set命令会伴随仿真的结束而被清除,无法传入下一个仿真。举个例子:
对于如下的仿真工具,如果在STI步骤中,使用fset定义了变量L,那么在Poly的工艺仿真步骤中该定义依然存在,即可以使用$L命令调用。然而,如果使用set命令,那么在Poly以及后续仿真中,则不存在L变量。

fset Type @Domain@
fset Domains [icwb list domain]

@…@: …是workbench里面设置的变量值
[…]: …相当于需要计算的语句

- icwb(IC WorkBench)

关键字icwb介绍了用于操作icwb TCAD布局文件的命令。这里给出了关键字icwb不同的用法,以及它们的语法和相应的描述

icwb filename=<c> [scale=<n>] [!recenter]
  • 读取扩展名为.mac的ICWB TCAD布局文件。读取文件时,ICWB文件中的坐标乘以可选比例参数。在使用!recenter 选项时,三维仿真支持ICWB文件坐标关闭映射到(0,0)原点。文件中定义domain和mask起作用的先决条件是先读取ICWB TCAD布局文件,然后才是其它ICWB命令
icwb list domains
  • 查询当前区域的名称
icwb domain=<c>
icwb domain= [list "<domain_name1>" "<domain_name2>" ... "<domain_namen>" ]
  • 定义当前域。设置当前域的名称是隐士依赖于所定义的当前域的其它ICWB命令的先决条件。第二种格式允许将多个规范域串联起来,重新定向为一个线性模拟域。
icwb dimension
  • 返回当前域的维度。对于以下域类型,将返回维度的相应值:
    –Point:1
    –Gauge: 2
    –Highlight: 3
icwb stretch name=<c> value=<n>
  • 将给定拉伸量应用于当前域。应用拉伸的顺序很重要,因为在应用一个拉伸时,其它拉伸的位置可能会发生变化。
icwb bbox (xmin | xmax | ymin | ymax | left | right | front | back)
  • 返回相应的坐标,该坐标可以是ICWB坐标(xmin、xmax、ymin、ymax),也可以是Sentaurus Process 坐标(左、右、前、后)
icwb.crate.mask
  • 从一个或多个ICWB层创建用于后续蚀刻、沉积或照片命令的掩膜。该命令用作ICWB TCAD布局与掩膜和多边形命令之间的接口,并提供了一种方便的方式,可根据独立于维度的语法从一个或多个ICWB层生成由点、线段或多边形组成的1D、2D和3D掩膜。该命令自动确定当前活动ICWB仿真域的尺寸。

  • layer.name: ICWB TCAD布局文件中一个或多个图层的名称。如果给定了多个图层名称,则生成的掩膜是列出的所有图层中多边形(3D)或线段(2D)的并集。(使用icwb list layerNames 命令获取所有图层名称的列表)

  • name: 掩膜的名称。掩膜名称默认为图层名称。如果图层名称列表包含多个条目,则使用第一个图层名称。

  • polarity: 设置极性。选择负胶翻转掩膜。默认情况下,极性假定为正。也就是说,掩膜内的点被视为掩膜。

- #rem

预处理器命令都以哈希(#)作为行上的第一个字符开始。以#rem开头的行在预处理时不会被删除。

- LogFile

  • 将消息打印到屏幕和日志文件

- @node@

  • 当前节点号。当前节点关键字(当前工具实例的输出节点的关键字)
set CNode @node@
  • 将节点号记为CNode

- fproc

  • 定义tcl程序

- Incr

- math

设置数字和矩阵参数 。默认情况下,使用math命令设置的参数存储在TDR文件中。

math numThreads= 4
  • 指定Sentaurus Process进程的并行线程数。适用于Sentaurus MC implantation、interpolation,3D analytic implantation, Sentaurus Process KMC, matrix assembly, the box method, and the solvers PARDISO and ILS.
math coord.ucs
  • 读取和写入ucs(unified coordinate system:统一坐标系)中的文件

-flat.orient

使用三个米勒指数列表指定从晶圆中心到notch的方向,或者指定法线(垂直)于晶圆平边的方向(假设晶圆平边是晶向的平行平面)。默认值是{1 1 0}

-slice.angle

仿真区域相对于晶圆坐标系的角度。默认值和单位:-90

- !DelayFullD

默认情况下,Sentaurus Process 生成最小维度结构,当Sentaurus Process遇到mask时,该结构将被挤出更大的尺寸。
挡在etch、deposit或Photo命令中使用2D或3D mask时,Sentaurus Process会自动将结构和网格挤出到适当的维度并复制数据。创建全维结构的延迟可以在init命令中使用!DelayFullD关闭

- AdvancedCalibration

指定高级校准版本。默认设置为禁用。
Sentaurus Process KMC中使用的默认参数继承自Sentaurus Process KMC早期版本,对于现在工艺条件可能不准确。高级校准团队已对Sentaurus Process KMC 进行了更精确的校准,可使用以下命令进行校准

AdvanceCalibration

这个命令包含校准Si、SiGe和Ge中的点缺陷和掺杂剂的KMC模型,以及用于SPER和Si、SiGe和Ge外延的LKMC模型。

- 2DOxidationSetup

为二维氧化仿真设置网格、时间步进、扩散解算器和力学解算器的参数。

2DOxidationSetup

- pdbSet

pdbSet InfoDefault 1
  • 使用sde等命令时,应增加默认详细级别
pdbSet Diffuse minT 500.0
  • 为所有扩散命令全局设置最小退火温度
pdbSet Mechanics StressHistory 1
  • 特定器件结构中的热残余应力是其制造经历的函数,包含了不同温度下的工艺步骤和其间的温度斜坡组成。为了准确模拟应力演变,应追踪所有温度梯度。上面设置是StressHistory打开的命令。
  • 设置命令之后,检测扩散、沉积和蚀刻等工艺步骤之间的温度间隙,并利用瞬时应力再平衡来填充,从而解决热失配应变和应力。
  • 当追踪应力历史并进行再平衡时,即使存在非弹性材料,也会弹性地进行再平衡。
pdbSet Mechanics EtchDepoRelax 0
  • 当材料从给定结构中移除或添加到给定结构中时,物理应力分布通常会随着相应的几何结构和边界变化而变化。在仿真中,需要进行应力再平衡步骤,以重新建立结构中的应力平衡,并使应力符合新的边界。默认情况下,在执行蚀刻或沉积后,会调用应力再平衡操作。上面命令就是省略再平衡步骤。
pdbSet ImplantData ResistSkip 1
  • 当结构完全被光阻覆盖,使用以上命令省略注入步骤

命令设置数据库参数

pdbSet <c> <c> ... <value>

参数c – 此参数可以是参数数据库中声明的任何参数,也可以是用户在用户定义模型中声明的任意参数。在所有情况下,必须使用参数的完整层次结构路径指定参数。
参数value – 与参数类型关联的值。例如,必须为double类型指定double值。

Sentaurus Process允许用户选择点缺陷和掺杂剂的各种扩散模型。使用pdbSet命令执行扩散模型设置和参数设置。基本设置如下:
pdbSet Dophant DiffModel

pdbSet Grid AdaptiveField Refine.Abs.Error 1e37
pdbSet Grid AdaptiveField Refine.Rel.Error 1e10
pdbSet Grid AdaptiveField Refine.Target.Length 100
  • 重置自适应网格地默认设置

- grid

set.min.normal.size
  • 设置网格PDB参数min.normal.size。指定接口两次的最小法线(到接口)网格元素大小。默认值和单位:8.0e-4um
set.normal.growth.ratio.2d
  • 设置网格PDB参数normal.growth.ratio.2d。此因子用于增加界面法线方向上元素的大小。每个层的尺寸等于上一层的尺寸乘以该系数(仅2D).默认值:2.0
set.max.points
  • 设置网格PDB参数MaxPoints.指定Sentaurus 网格的分层模块允许的最大点数。默认值:500000
set.max.neighbor.ratio
  • 设置网格PDB参数MaxNeighborRatio。二叉树平滑是在将细化添加到二叉树之后执行的。这防止了元件尺寸的突然变化,这种突然变化可能对力学结果特别不利。二叉树中相邻共线边的比率可以使用此参数进行调整。默认值:3.0
grid Adaptive set.Delaunary.type= boxmethod set.max.points= 1000000  set.max.neighbor.ratio= 1e6 set.min.normal.size= 0.01/$fd set.normal.growth.ratio.2d= 4.0
  • Adaptive: 指定这个参数,remesh时,Adaptive命令开启自适应网络。
  • set.Delaunary.type: 设置网格PDB参数DelaunaryType.指定Sentaurus Mesh生成的网络类型。可用类型有盒法、共形或约束。
  • set.max.points: 设置网格PDB参数MaxPoints.指定Sentaurus Mesh delaunization模型允许的最大点数。默认值:500000

- refinebox

设置局部网格参数并使用MGOALS模块执行网格优化

refinebox name= BG mask= Sub extend= 0.2 extrusion.min= -0.5 extrusion.max=10.0 xrefine= "0.1/$fp" yrefine= "0.1/$fp"
  • name: 优化框的名称
  • mask: 使用现有的mask作为额外的约束条件.
  • extend: 该值可以是正值或负值,并在y和z中各自向同性地扩展或收缩细化,Mask的位置原值不变
  • extrusion.min extrusion.max: X轴上的最小和最大坐标(um)
  • xrefine: 由三个数字组成的列表,用于定义框顶部、中部和底部x方向上的元素大小(um)
  • yrefine: 由三个数字组成的列表,这些数字在框的左侧、中间和右侧定义了y方向上的元素大小(um)
refinebox name= LOCOS1 min= "-0.2 0.2" max= "0.1 0.5" extend= 0.25 extrusion.min= -0.1 extrusion.max= 0.1 xrefine= " 0.01 " yrefine= " 0.02 " Silicon
  • min,max: 限制优化框的范围。这两个参数采用了Tcl列表格式定义优化框的x、y和z轴范围。这两个参数可以指定一个或两个,每一个参数Tcl列表中包含一个、两个或三个数字。如果指定了一个数字,则将其视为x轴上的限制;如果指定了两个数字,将为x轴和y轴的限制;如果三个数字,则为x轴、y轴和z轴的限制。默认单位为um
  • material:将优化框限制为特性材质。默认情况下,优化框适用于所有特质。
refinebox name= Device_Channel mask= Chmask extend=0.1 extrusion.min= -0.1 extrusion.max= 0.06 refine.fields= { Netactive } def.max.asinhdiff= 1.0 refine.min.edge= " 0.005/$fd 0.005/$fd" refine.max.edge= " 0.05/$fd 0.05/$fd" materials= {Silicon} adaptive
refinebox name= Device_IF mask= Active extend=0.05 extrusion.min= -0.02 extrusion.max= $Divot-0.001 min.normal.size= 0.001/$fd normal.growth.ratio= 1.2 interface.mat.pairs= {Silicon Oxide PolySilicon Oxide}
  • refine.fields: 替换用于自适应优化框的默认字段列表。解决方案变量和术语可以出现在refine.fields列表中。默认列表包括所有掺杂剂和点缺陷
  • def.max.asinhdiff: 设置最大反双曲正弦差值标准的与字段无关的默认值
  • interface.mat.pairs: 限制DelPSC算法应用于由成对材料(第一和第二,第三和第四等)指定的界面
refinebox clear
refinebox !keep.lines
line clear
  • clear: 如果在没有其它参数的情况下使用,clear将删除所有以前定义的优化框。与name一起使用时,仅删除命名的优化框。
  • !keep.lines: 在使用自适应网格时为了防止网格点数过多,关闭keep.lines选项(默认情况下在硅中打开)

- line

指定网格线的位置和间距

line clear
  • 清除行以准备新的结构定义,或删除为UseLines方法存储的所有记录

- photo

photo mask= pwell thickness =5.0

在mask上创建指定厚度的光刻胶

- WriteBND

- SetPlxList

SetPlxList {BTotal AsTotal PTotal }
WritePlx n@node_well.plx y= $Ymid
  • 设置要传递给WritePlx命令的解决方案和术语名称的列表
  • BTotal: Boron + BoronInt + BoronVAC=Total boron concentration
  • Boron: 未配对硼的总浓度(例如,无簇集、无硼缺陷对)
  • BoronInt: 硼-间隙对的浓度
  • BoronVAC: 硼-空穴对的浓度

- WritePlx

WritePlx n@node_well.plx y= $Ymid

写入1D.plx文件。y: 指定切割位置,对于1D模拟,不需要切割规范,对于二维模拟,必须指定x或y,对于三维仿真,必须指定两个轴

- #split

预处理命令处理分割点

#split @PNAME@

在参数PNAME上定义拆分。在这个点处输入文件被切割成1)从当前分割点到当前行的部分输入文件,以及2)从当前行到下一个拆分点的另一个部分输入文件(或文件末尾)。在第一个部分输入文件的末尾利用保存命令替换当前行。第二个部分输入文件以有文件开始,然后是模拟器加载命令、可选的后置头文件,最后是真正的输入部分。param_name表示应用拆分的树级别。

- Grid

  • 设置网格参数、执行网格操作并计算有关网格的统计信息
  • remesh: 如果指定,将使用活动网格生成器重新创建网格

- temp_ramp

定义使用diffuse命令时的温度轮廓

temp_rampe name= liner time= 5 temp= 600.0 ramprate= 0.6667
temp_rampe name= liner time= 10 temp= 800.0 hold
  • hold : 在温度升降的阶段,diffuse命令中可以使指定时间阶段的温度稳定
  • ramprate: 升降温过程中的温度变化。默认值和单位: 0.0℃/S
  • time:升降温时间,默认单位:分钟

- diffuse

模拟退火期间的热退火、致密化和任何材料生长过程–氧化、硅化和外延

  • stress.relax: 惰性环境中扩散应力释放的开关。默认值对于二维为true,对于三维为false

- deposit

deposit material= {Poly} type= isotropic rate= {0.005} time= 1.0 selective.materials= {Poly}
  • material: 指定沉积的材料
  • rate: 沉积速率。um/minute
  • time: 沉积时间。 minute
  • selective.materials: 指定仅在选定材质的列表上进行沉积。

- transform

剪切、翻转、反射、旋转、拉伸或平移结构和当前定义的细化框

  • cut: 选择切割操作。使用max和min参数或位置参数裁剪结构

- select

选择要在所有后处理命令中显示的变量

select z= {NetActive} name= NetActive store
  • name: 新数据字段的名称。默认值:Z_Plot_Var.未指定打印名称时,所有命令都使用此名称。这是一个强大的功能,因为也可以创建解决方案字段。
  • store: 当输出结构文件时,用永久存储命名设置数据字段的名字
  • z: 构建数据字段的表达式。

- contact

定义随后器件仿真的触点

icwb.contact.mask layer.name= "source" name= source point TiSilicide replace x= 0.0
icwb.contact.mask layer.name= "gate" name= gate box PolySilicon xlo=-$Tpoly-0.05 xhi=-$Tpoly+0.05
  • icwb.contact.mask:为器件仿真ICWB TCAD版图文件中的图层而创建接触孔
  • layer.name: ICWB TCAD版图文件中层次的名字
  • name: 接触孔的名字。如果未指定名称,则默认值为标签名称或层次名称,以指定的为准。
  • point, ,replace,x: 点类型接触包含一个或多个区域的所有边界元素。区域由指定的材质和一个或多个点为一组的空间坐标标识。
  • box,,adjacent.material, boxheight,xhi,xlo: 使用box选项时,
contact bottom name= substrate Silicon
  • bottom(right,left,back,front,top,bottom): 这些参数选择性的切换到将放置触点地某些外部边界。外部边界是仿真区域的边界,包括气体区域。默认情况下,只打开top和bottom,其余的都关系。如果指定了这些参数中的任何一个,则会关闭内部接口。另外,同样的也指定了侧壁上的这些参数。
  • name: contact的名字

Synopsys Sentaurus TCAD系列教程之--CMOS_180nm 解析相关推荐

  1. Synopsys Sentaurus TCAD系列教程之--Sprocess(2DGS) 解析

    2DGS 解析 math coord.ucs #读取和写入ucs(unified coordinate system统一坐标系, x在竖直方向,y在水平方向)中的文件line x location= ...

  2. Synopsys Sentaurus TCAD系列教程之--Sdevice(SmallMOS_2D3D) 解析

    Sdevice(SmallMOS_2D3D) 解析 File {* input files:Grid= "@tdr"* output files:Plot= "@tdrd ...

  3. Synopsys Sentaurus TCAD系列教程之--Svisual(SmallMOS_2D3D) 解析

    Svisual(SmallMOS_2D3D) 解析 #setdep @node|sdevice@ load_library extractset N @node|sdevice@ set COLORS ...

  4. Synopsys Sentaurus TCAD系列教程之--Diode(sde) 解析

    ##Diode(sde)解析 (define Wsi @SiWidth@) ;Width of Silicon Region (define Hsi 1.0) ;Height of Silicon R ...

  5. Synopsys Sentaurus TCAD系列教程之--Sde概述

    Sde 方便处理rule check相关的问题.同时也能让使用者进一步了解器件结构.掺杂和引线等基本操作.Sde用于搭建结构,重新优化网格,提供.mesh文件供后面Sdevice仿真,主要包含以下几部 ...

  6. Synopsys Sentaurus TCAD系列教程之-- Svisual《一》看图工具

    Svisual Svisual作为独立的模块,可以实现Inspect对于节点.plt曲线的查看,也可以实现TecplotSV的.tdr看图功能,还可以进行自动化操作. 当作看图工具使用 - 当作一维曲 ...

  7. Synopsys Sentaurus TCAD系列教程之-- Sdevice《6》Math模块

    Sdevice 5. Math Math {DerivativesRelErrControlDigits=5RHSmin=1e-10Notdamped=50Iteration=20method=ILS ...

  8. Synopsys Sentaurus TCAD系列教程之-- Sdevice《5》Plot模块

    Sdevice 4. Plot Sdevice仿真绘图结果是通过Plot命令来采集与输出的,也就是Plot命令在Sdevice运行的同时对器件在不同电学条件下进行"拍照".保存格式 ...

  9. Synopsys Sentaurus TCAD系列教程之-- Sdevice《3》Electrode模块

    Sdevice 2.0 Electrode Electrode{{ Name="source" Voltage=0.0}{ Name="gate" Voltag ...

最新文章

  1. java中的类修饰符、成员变量修饰符、方法修饰符。
  2. 机器学习案例 特征组合——高帅富 冷启动——从微博等其他渠道搜集数据进行机器学习 用户年龄——线性分段处理...
  3. Android从网络上获取图片的两种方式
  4. jupyter(Anaconda)设置默认打开文件夹
  5. gc.collect()==>python的强制垃圾收集机制(不建议使用强制回收,因为可能导致错误)
  6. Nginx——配置文件
  7. 灰度MANA信托增持729.04万MANA,FIL持仓增长185%
  8. Flutter 的渲染逻辑及和 Native 通信
  9. hive 安装centos7
  10. PostgreSQL数据库——Pigsty pg_exporter
  11. 高新技术背景下超大城市垃圾处理的成本控制研究
  12. NLP-准确率、精确率、召回率和F1值
  13. Java匿名类的用法及注意点
  14. 三维地图(功能和E都市的一样)
  15. linux内存管理之石器篇
  16. 通信算法之156: OFDM原理深度解析并画图
  17. 解决安装Windows10时遇到的0x80300024错误
  18. 鸿蒙OS 2.0内测版,鸿蒙系统2.0安装包下载地址
  19. 计算机考研数学一大纲,考研数学一大纲
  20. MySQL给查询结果添加行号

热门文章

  1. Paimei(白眉)安装
  2. linux网络存储nas搭建,树莓派自建 NAS 云盘之——树莓派搭建网络存储盘
  3. android 9 otg文件格式,Android通过OTG线将文件写入USB
  4. 日历表作用与HiveSQL生成
  5. 《越狱》第三季新增加人物大曝光(多图)
  6. 怎样在MindMapper中文版中进行进度表的绘制
  7. need to invoke method 'taskExecute' declared on target class 'ShareEquallyTaskServiceImpl', but not
  8. 在调试器里看百度云管家
  9. java实现图片与byte相互转换
  10. PORTESCAP涡轮盘步进电机PH010 104