3. Sentaurus Process命令语言与仿真流程搭建
Sentaurus Process(SProcess)的输入文件本质上是一份按顺序执行的命令脚本,仿真流程的搭建过程就是把这套脚本写对、写全、写清楚。与图形化工具不同,SProcess 没有“点一下按钮就完成”的操作,所有网格、材料、掺杂、工艺步骤和求解器行为都由命令显式描述。理解命令语法与执行顺序,是后续 MOS 器件工艺建模能否收敛、结果是否可信的前提。
命令语言的基本语法
SProcess 的命令采用“命令名 + 参数 + 可选子语句”的结构,命令之间以换行分隔,注释以 # 开头。命令名通常为小写英文动词,例如 line、region、init、diffuse、deposit、etch、implant、select、struct、solution、pdbSet 等。参数以“关键字 = 值”或位置参数形式给出,字符串一般需要加引号,数值可带单位(如 um、nm、s、min、cm-3、keV)。
一个典型的最小骨架如下:
# 1. 定义网格
line x loc = 0.0 spacing = 0.02 tag = left
line x loc = 0.5 spacing = 0.005 tag = right
line y loc = 0.0 spacing = 0.005 tag = top
line y loc = 1.0 spacing = 0.05 tag = bottom
# 2. 初始化衬底
region silicon xlo = left xhi = right ylo = top yhi = bottom
init concentration = 1e15 field = Boron wafer.orient = 100
# 3. 工艺步骤
deposit material = {Oxide} type = isotropic time = 1.0 temp = 900
implant Boron dose = 1e13 energy = 30 tilt = 7
diffuse time = 30 temp = 1000
# 4. 输出
struct tdr = n1_after_well
这段脚本已经包含了 SProcess 流程的四个核心环节:网格定义、材料区域、工艺步骤序列、输出控制。下面分别展开。
网格定义:line 命令与坐标约定
SProcess 使用二维(或三维)结构化网格,网格由 line 命令逐条定义。每条 line 指定一个方向(x 或 y)、位置 loc、该位置附近的网格间距 spacing,以及一个标签 tag。标签用于后续 region 命令引用边界,避免直接写坐标导致可读性差。
坐标约定需要先明确:x 为横向(器件宽度方向),y 为纵向(深度方向),y = 0 通常对应硅表面,y 增大表示向衬底内部深入。这一约定在后续所有命令和图示中保持一致。网格间距不是均匀的:在需要高精度的区域(如沟道、结深附近、栅氧界面)应加密,在衬底深处可放宽。例如表面附近 spacing = 0.002 um,衬底底部 spacing = 0.05 um,可以在保证精度的同时控制网格规模。
网格过密会导致求解时间急剧增加,过疏则会使掺杂剖面和结深失真。经验上,MOS 沟道区的纵向网格应小于 1 nm 量级,而阱区可放宽到 5~10 nm。网格定义完成后,region 命令把网格围成的矩形区域声明为某种材料,例如 silicon、oxide、nitride、poly。材料区域是后续所有工艺步骤作用的物理对象。
工艺步骤序列:按时间顺序堆叠
SProcess 的工艺步骤按脚本中出现的顺序依次执行,每一步都会改变材料结构或掺杂分布。常见的步骤包括:
deposit:沉积氧化硅、氮化硅、多晶硅等薄膜,需指定材料、厚度、温度和时间;etch:刻蚀,可指定材料、厚度、各向异性程度;implant:离子注入,需给出杂质种类、剂量、能量、倾斜角;diffuse:高温扩散/退火,需给出温度和时间,可同时激活注入损伤;oxidize:热氧化,需给出温度、时间、气氛(干氧/湿氧)。
这些步骤的顺序直接决定最终结构。例如,先注入再退火,与先退火再注入,得到的结深和掺杂剖面完全不同。搭建流程时应按真实工艺顺序书写,并在关键步骤后插入 struct 输出,便于分段检查。
求解器选择与输出控制
SProcess 内部包含扩散求解器、氧化求解器、应力求解器等。多数情况下使用默认求解器即可,但在高浓度掺杂、氧化应力耦合或三维结构下,需要通过 pdbSet 或 solution 命令调整求解器选项,例如设置迭代次数、收敛容差、是否开启应力耦合。求解器选择不当的典型表现是:仿真在中途报“未收敛”,或掺杂剖面出现非物理振荡。
输出控制由 struct 命令完成,常用格式为 tdr(Sentaurus 结构文件,供后续器件仿真读取)和 grd。建议在每个关键工艺节点输出一次,命名体现步骤,例如 n1_after_well、n2_after_gate、n3_after_sd。这样既能定位问题,也方便后续在 SDevice 中分段调用。
一个可复现的 MOS 阱区流程示例
下面给出一个用于 NMOS 阱区形成的简化流程,参数为教学示例,实际值需按工艺设计调整。脚本按“网格—衬底—阱注入—退火—输出”组织:
line x loc = 0.0 spacing = 0.05 tag = left
line x loc = 1.0 spacing = 0.05 tag = right
line y loc = 0.0 spacing = 0.002 tag = top
line y loc = 2.0 spacing = 0.05 tag = bottom
region silicon xlo = left xhi = right ylo = top yhi = bottom
init concentration = 1e15 field = Boron wafer.orient = 100
implant Phosphorus dose = 3e13 energy = 150 tilt = 7
diffuse time = 60 temp = 1050
struct tdr = n1_well_done
执行后应检查:阱区结深是否落在预期范围(例如 0.8~1.2 μm),表面浓度是否达到设计值,网格在结深附近是否足够密。若结深偏浅,可适当提高退火温度或延长时间;若表面浓度偏低,可增大注入剂量。这些调整都通过修改脚本参数完成,而不是重新搭建流程。
Boron 与 boron 可能被解释为不同对象,time = 30 默认单位与显式写 time = 30 min 也可能不同。建议所有物理量都带单位,避免隐式默认值带来的偏差。