Sentaurus TCAD中Sprocess的离子注入

第2章 离子注入

本章介绍Sentaurus Process中离子注入的实现方式。

概述

离子注入是一种广泛使用的工艺技术,用于将杂质原子引入半导体材料中。在Sentaurus Process中,可以使用解析函数或蒙特卡洛(MC)方法来计算注入离子的分布和注入损伤。

解析注入模型使用简单的高斯函数和皮尔逊函数,以及先进的双皮尔逊函数。解析注入的算法集成在Sentaurus Process中。解析模型的注入损伤根据Hobler模型[1]计算。

MC方法使用统计方法基于二元碰撞近似(BCA)[2]计算注入离子在目标中的穿透和晶体损伤的积累。MC注入的引擎是Sentaurus MC[3]。

Sentaurus Process处理1D、2D和3D几何结构的解析注入和MC注入。解析注入的算法是Sentaurus Process的组成部分;而MC注入基于BCA进行。

解析注入根据选定的分布函数模拟注入离子的空间分布,该分布函数由矩描述。矩取决于离子种类、注入能量、剂量、倾斜角和旋转角。为特定范围的注入参数提供的矩集以查找表的形式提供。Sentaurus Process可以使用不同格式的注入表。

解析注入和MC注入都使用implant命令执行(有关详细信息,请参阅第1041页的implant命令)。使用implant命令有两个方面:选择模型和参数,然后运行模拟。

注意 :在大多数情况下,您不需要选择模型和参数。Sentaurus Process会自动进行选择。只有高级用户才需要使用implant命令选择模型。

使用离子注入

本节介绍如何实现离子注入。

指定解析或蒙特卡洛注入

解析注入使用implant命令执行。最简单的用法是:

tcl 复制代码
implant <species> energy=<n> dose=<n> tilt=<n> rotation=<n>

有关解析注入的详细信息,请参阅第61页的"解析注入"。

要从解析注入切换到使用Sentaurus MC的蒙特卡洛(MC)注入,可以使用:

tcl 复制代码
implant <species> energy=<n> dose=<n> tilt=<n> rotation=<n> sentaurus.mc

如果除了sentaurus.mc还指定了cascades,则MC注入将以全级联模式运行:

tcl 复制代码
implant <species> energy=<n> dose=<n> tilt=<n> rotation=<n> sentaurus.mc cascades

有关蒙特卡洛注入的详细信息,请参阅第106页的"蒙特卡洛注入"。

可以使用load.mc加载之前生成的MC注入配置文件:

tcl 复制代码
implant <species> energy=<n> dose=<n> tilt=<n> rotation=<n> load.mc file=<c>

必须使用file参数指定一个TDR文件。load.mc选项适用于由Sentaurus MC创建的文件。有关加载外部配置文件的详细信息,请参阅第166页的"加载外部配置文件"。

指定注入参数

注入能量默认以keV为单位。

注入剂量有两种模式:

  • 晶圆剂量(WaferDose):指注入完成后结构中预期的剂量。该剂量以每平方厘米的离子数为单位进行测量。
  • 束流剂量(BeamDose)

在晶圆剂量模式下,最终注入剂量不依赖于晶圆相对于离子束的取向。在束流剂量模式下,最终注入剂量会随着倾斜角和旋转角的变化而变化。所有角度均以度为单位测量。有关详细信息,请参阅第57页的"注入坐标系:倾斜角和旋转角"。

可以通过以下开关指定注入剂量的模式:

tcl 复制代码
pdbSet ImplantData DoseControl {Default WaferDose BeamDose}

DoseControl的默认值为Default,在这种情况下,注入剂量的模式将根据注入表的格式自动选择。如果当前选择的注入表为Taurus™或TSUPREM-4™格式,则自动使用束流剂量模式。否则,使用晶圆剂量模式。如果将DoseControl设置为WaferDose,则无论表格式如何,所有注入都将使用晶圆剂量模式,BeamDose也是如此。

注意 :为了获得一致的结果并防止意外的剂量模式,强烈建议在命令文件的开头将DoseControl设置为WaferDoseBeamDose

要覆盖这些全局设置,可以在implant命令中使用beam.dose

tcl 复制代码
implant <species> dose=<n> beam.dose

注意implant命令的主要注入参数(能量、剂量、旋转和倾斜)必须始终指定。否则,将选择默认值,这些默认值可能无法反映假设的工艺条件。

除了能量、剂量、倾斜和旋转外,还可以指定注入温度和剂量率。温度和剂量率被Taurus Process的格式矩阵阵识别为参数。

如果结构完全被光刻胶覆盖,可以通过以下命令跳过注入步骤:

tcl 复制代码
pdbSet ImplantData ResistSkip 1

默认情况下,不跳过注入步骤。

显示和打印到日志文件的信息量由implant命令中的通用可选参数info控制(有关详细信息,请参阅第933页的"通用参数")。

选择模型

注入的物种必须是之前已初始化的物种。要初始化注入物种,请使用:

tcl 复制代码
implant species=<c> <material> [imp.table=<c>] [damage] [dualpearson | gaussian | pearson | pearson.s | point.response]

其中species可以是任意名称,而<material>必须是已初始化的材料(有关详细信息,请参阅第17页的"指定材料")。

注意 :此implant命令不执行注入。它通过species(或tables)参数进行区分。

在Sentaurus Process运行开始时,所有物种都使用species=<c>自动初始化。

要选择包含主分布和侧分布矩的注入表,请使用imp.table

如前所述,选择注入模型不是必需的,因为这是自动执行的。如果需要,可以明确指定可用的注入模型之一(有关详细信息,请参阅第62页的"主分布函数")。

要启用基于Hobler模型的损伤计算,请使用damage选项。

例如,以下命令将硅中硼的默认注入表更改为my_table.tab,将注入模型更改为单Pearson,并关闭硅中硼的损伤计算:

tcl 复制代码
implant species= Boron Silicon imp.table= my_table.tab pearson !damage

第55页的表5列出了Sentaurus Process运行中初始化和支持的物种。如果要注入未知物种,可以通过首先使用PDB命令设置其原子序数和原子质量来定义新物种:

tcl 复制代码
pdbSetDouble ImplantData <species> AtomicNumber <n>
pdbSetDouble ImplantData <species> AtomicMass <n>

然后,使用implant命令初始化新物种:

tcl 复制代码
implant species=<c> Silicon

现在,可以像其他内置物种一样对这个新定义的物种执行MC注入。对于解析注入,还需要选择注入模型并为新物种设置注入表。

表5 Sentaurus进程初始化和支持的物种

您可以在Sentaurus Process运行期间的任何时间覆盖或扩展这些设置。有三种主要方法可以更改初始设置。

使用之前描述的命令,您可以更改一对掺杂物种和材料的设置。

要覆盖某一特定掺杂物种在一个材料中的设置,使用:

tcl 复制代码
implant species=<c> <material> tables= Default | Dios | Tasch | Taurus | TSuprem4

要覆盖某一特定掺杂物种在所有材料中的设置,使用:

tcl 复制代码
implant species=<c> tables= Default | Dios | Tasch | Taurus | TSuprem4

在内部,Sentaurus Process执行一组implant species=<c> <material>命令,这些命令分别为某一掺杂物种和材料对设置注入参数。

注意tables参数并不是指特定的表格或表格名称。它通过使用Tcl过程为一个材料中的物种或所有材料中的物种设置所有表格和模型开关。

tables参数的可用选项在第73页的"注入表"中讨论。

蒙特卡洛注入

本节描述了蒙特卡洛(MC)离子注入。

运行Sentaurus MC

Sentaurus Process可以使用蒙特卡洛模拟器Sentaurus MC进行原子级的离子注入模拟。MC注入可以模拟单晶材料或任意组成的非晶材料中的离子注入。在Sentaurus Process中,要在命令行中选择MC注入,使用:

tcl 复制代码
implant <species> sentaurus.mc

或者,要将MC注入设置为默认注入模型,使用全局开关:

tcl 复制代码
pdbSet ImplantData MonteCarlo 1

MonteCarlo设置为1时,Sentaurus Process将使用Sentaurus MC执行所有注入。

基本参数(如注入能量和剂量)以及离子束相对于基板的方向必须使用energydosetiltrotation指定,这与解析注入相同。

要在全级联模式或使用改进的二元碰撞近似(iBCA)损伤模型下运行MC注入,使用cascadesiBCA开关:

tcl 复制代码
implant <species> sentaurus.mc [cascades] [iBCA]

或者使用全局开关:

tcl 复制代码
pdbSet MCImplant cascades 1
pdbSet MCImplant iBCA 1

在KMC模式下,要指定注入的剂量率,使用dose.rate

tcl 复制代码
implant <species> sentaurus.mc [cascades] [iBCA] dose.rate=<n>

如果指定了dose.rate,它被假设为单位为cm⁻²/s的均匀剂量率。如果没有指定,则将调用Tcl过程:

tcl 复制代码
fproc DoseRate {dose} {...}

该过程返回作为注入剂量函数的注入时间。默认情况下,这是一个均匀剂量率,即DoseRate是剂量的线性函数。但是,您可以指定任何单调函数以考虑特定的注入设备设置或扫描模式。

在注入过程中,代表整个剂量一部分的伪粒子从构建在目标上方并与晶圆表面平行的起始表面开始。对于2D和3D目标几何形状,起始表面被细分为大小相等的段,这些段累积所需的注入剂量。这些段的大小由以下参数控制:

tcl 复制代码
pdbSet MCImplant Intervals dy <n>
pdbSet MCImplant Intervals dz <n>

注意 :通常不建议将dydz设置为小值(默认值为0.05 μm),因为这些参数需要至少几倍的横向散射,以使轨迹复制引起的误差变得可以忽略。

对于1D结构,不执行细分。每个段开始的伪粒子数量可以在参数数据库或命令行中设置:

tcl 复制代码
pdbSet MCImplant Particles <n>

或者:

tcl 复制代码
implant <species> sentaurus.mc particles=<n>

默认值为1000。增加此数字可以提高准确性,但也会增加模拟时间。与段的大小一起,particles决定了每个伪粒子的统计权重。

对于KMC模拟,每个段的粒子数(n)自动使用公式计算:
n = dose × dy × dz × cos ⁡ ( tilt ) n = \text{dose} \times \text{dy} \times \text{dz} \times \cos(\text{tilt}) n=dose×dy×dz×cos(tilt)

注意 :对于KMC模拟,建议将dydz设置为域尺寸以获得最佳准确性。在dydz值较小,或剂量较低,或倾斜角较大的情况下,计算的粒子数可能小于1,此时将发出警告消息,并将数量向上取整为一个粒子。

发射的粒子被认为沿着由倾斜角和旋转角指定的方向行进。然而,离子束通常有一个小的角散射,使得粒子在主束方向周围形成一个直角圆锥,假设粒子在该圆锥内均匀分布。可以在implant命令中指定束散射角(圆锥轴与圆锥表面之间的角度):

tcl 复制代码
implant <species> energy=<n> dose=<n> beam.divergence=<n>

对应的PDB命令是:

tcl 复制代码
pdbSet MCImplant BeamDivergence <n>

在标准束散射模型中,由倾斜角和旋转角指定的主束方向用于从发射表面追踪粒子到固体表面。然后在粒子撞击固体表面后,将小的角散射角添加到主束方向。或者,可以在粒子源处而不是固体表面处添加束散射。要选择在何处添加散射角,使用以下PDB语句:

tcl 复制代码
pdbSet MCImplant Beam.Divergence.Model {Beam.Source | Solid.Surface}

选项如下:

  • Beam.Source:在粒子源处向主束添加束散射。
  • Solid.Surface:在固体表面处向主束添加束散射。这是默认值。

控制电子和核阻止以及损伤积累的参数在参数数据库中可用。可以在参数数据库中设置这些参数(有关详细信息,请参阅第20页的"参数数据库")。

如果信息级别设置为1或更高,在注入过程中将显示类似以下内容的进度报告:

复制代码
implanted orig equiv active repl traject CPU time
particles traject classes segm OK fail step total
.............................................................................
1300( 5%) 84 4 26 1216 6 0.22 0.22
2600( 10%) 170 4 26 2430 9 0.21 0.43
3900( 15%) 262 4 26 3638 16 0.21 0.64
5200( 20%) 349 4 26 4851 24 0.30 0.94
6500( 25%) 437 4 26 6063 29 0.47 1.41
7800( 30%) 523 4 26 7277 33 0.28 1.69
...... ...... ......
22100( 85%) 1894 4 5 20206 131 3.15 7.27
23400( 90%) 2875 4 5 20525 272 5.20 12.47
24700( 95%) 3837 4 5 20863 394 4.75 17.22
24960( 96%) 4029 4 5 20931 419 0.99 18.21
25220( 97%) 4231 4 5 20989 453 1.13 19.34
25480( 98%) 4422 4 5 21058 472 0.90 20.24
25740( 99%) 4628 4 1 21112 483 0.93 21.17
26000(100%) 4888 4 0 21112 483 0.45 21.62
.............................................................................
伪粒子:
已注入:26000
丢失:0 (0%)
轨迹:4888
等价类:4

其中:

  • 已注入粒子 :已注入的伪粒子总数,这在模拟结束时等于指定的粒子数与注入表面总段数的乘积。此数字包括计算的粒子数和成功复制的粒子数。括号中还指示了已完成粒子的百分比。
    • 注意 :在多线程注入中,线程ID也会显示在百分比之前。例如,6500 (2: 25%)表示线程#2已注入6500个粒子,完成了25%。
  • 原始轨迹:基于物理计算的原始轨迹数。
  • 等价类:通过探测离子检测到的当前结构中的等价类数(参阅第148页的"轨迹复制")。
  • 活动段:当前活动的注入表面段数。在注入开始时,此数字等于起始段的总数。随着注入的进行,此数字应减少。在注入结束时,数字变为零,因为所有段都已达到所需的注入剂量并被禁用。
  • 复制轨迹(成功和失败) :复制的轨迹数。成功复制的轨迹数显示在OK列中,而失败的轨迹数显示在fail列中。
  • CPU时间(步骤和总计):当前步骤花费的CPU时间以及当前注入的总CPU时间。

对于2D结构,可以使用ion.movie图形化查看离子注入步骤的进度。例如:

tcl 复制代码
implant <species> [sentaurus.mc] ion.movie

注入坐标系:倾斜角和旋转角

无论模拟是1D、2D还是3D,离子束的方向都相对于晶圆坐标系(参阅第36页的图5)由implant命令的倾斜角(tilt)和旋转角(rotation)参数值定义。

图8显示了晶圆坐标系中的倾斜角和旋转角。

图8 注入的倾斜角和旋转角;所示的束角对应于tilt=20和rotation=45

倾斜角和旋转角分别从离子束到晶圆z轴和晶圆y轴测量。在此定义中,倾斜角始终为正值,并在0°到90°之间(包括0°和90°)。然而,为了方便,允许使用负的倾斜角,并通过将其添加到指定的旋转角中自动转换为正倾斜角。当束绕晶圆z轴顺时针旋转时,旋转角为正值;当束绕晶圆z轴逆时针旋转时,旋转角为负值。

由于倾斜角和旋转角是相对于晶圆轴测量的,因此模拟坐标系中的束方向取决于切片角(slice angle)。

图9显示了晶圆坐标、模拟坐标和束方向之间的关系。

图9 注入的倾斜和旋转角度;所示的角度对应于tilt=20、rotation=45和slice.angle=60

tilt和rotation的默认值分别为7°和-90°;换句话说,默认情况下,入射离子束平行于晶圆平面,并且相对于晶圆x轴向外倾斜。对于在init命令中指定的默认切片角-90°,这对应于模拟器xy平面中的离子束,相对于模拟器y轴向外倾斜。在2D模拟中,默认的离子束从左侧入射。

图10 正倾斜时的注入旋转方向

图10显示了对于倾斜角大于0°和各种旋转角,束在晶圆平面中的投影方向。还显示了默认模拟坐标系(切片角=-90°)。

图11清楚地表明,图10中所示的方向与第58页图8中定义的约定一致。旋转90°对应于将晶圆逆时针旋转四分之一圈。

图11 旋转晶片和固定束方向