2. Sentaurus Process命令行与脚本基础

Sentaurus Process(简称 SProcess)是 TCAD 工艺仿真链路的起点,它把氧化、扩散、注入、刻蚀、淀积等工艺步骤翻译成网格上的杂质分布与结构形貌。要稳定地跑通一个工艺仿真,第一步不是写复杂的物理模型,而是把“怎么启动、脚本怎么写、日志怎么看、参数怎么复用”这四件事弄清楚。本节围绕这四个基础问题展开,目标是让你能独立写出一个可重复执行的 SProcess 命令文件,并能从日志和输出文件中判断仿真是否正常。

一、工具启动方式:交互、批处理与图形界面

SProcess 的启动方式决定了你如何调试和如何交付。常见有三种:

  • 交互式启动:在终端输入 sprocess,进入交互命令行,逐条输入命令并立即看到反馈。适合调试单条工艺命令、试探参数范围。
  • 批处理启动:sprocess -b 命令文件.cmd,一次性执行整个脚本,适合正式仿真和批量提交。
  • 图形界面启动:sprocess -g 或通过 Sentaurus Workbench(SWB)调用,适合观察结构剖面和掺杂分布。

实际工程中推荐“先交互调试、再批处理固化”的流程。交互模式下可以用 help 查看命令语法,用 echo 打印变量值,确认无误后再写入命令文件。批处理模式的关键是退出码:正常结束返回 0,出错返回非 0,脚本中应据此判断是否继续。

二、命令文件结构:从初始化到保存

一个规范的 SProcess 命令文件通常按“初始化—工艺步骤—输出”三段组织。下面是一个可参考的最小示例(参数为教学示例,非实测数据):

# 初始化:定义网格与衬底
line x loc=0.0 spacing=0.01 tag=left
line x loc=0.5 spacing=0.01 tag=right
line y loc=0.0 spacing=0.005 tag=top
line y loc=1.0 spacing=0.05 tag=bottom
region silicon xlo=left xhi=right ylo=top yhi=bottom

# 工艺步骤:氧化 + 注入 + 退火
pdbSet Double Silicon Oxidize Rate 0.02
diffuse time=30 temp=1000
implant Boron dose=1e14 energy=30
diffuse time=60 temp=1050

# 输出:保存结构与掺杂分布
select z=log10(Boron)
struct outfile=step_final.tdr

结构上要注意三点:第一,line 与 region 必须在任何工艺命令之前,网格质量直接决定后续扩散求解的精度;第二,工艺命令按时间顺序排列,SProcess 是“顺序执行”的,后一条命令在前一条结果上继续;第三,struct 保存的是当前状态,建议在每个关键步骤后都保存一次,便于回溯。

三、日志与输出文件管理

SProcess 运行时会生成多类文件,理解它们的用途是排障的基础:

文件类型典型名称用途
日志文件sprocess.log记录命令执行、警告、错误和耗时
结构文件*.tdr保存网格、掺杂、材料结构,供后续工具读取
曲线文件*.plt一维掺杂剖面、结深等数据
输出报告*.out关键参数汇总,如结深、方块电阻

日志管理的关键是“分级查看”:先看末尾的 Error 和 Warning,再看中间步骤的耗时是否异常。常见错误包括网格过密导致内存不足、温度或时间参数超出物理范围、材料名称拼写错误。建议在命令文件开头用 logfile 指定日志路径,避免默认文件被覆盖。

调试技巧:在批处理命令中加入 echo 打印关键变量,并在每个 diffuse 后保存一个 .tdr,这样出错时能快速定位到具体步骤。

四、参数化变量与循环控制

SProcess 支持用 set 定义变量,用 $ 引用,配合 foreach 实现参数扫描。这是工艺仿真的核心能力——用一套脚本跑多个条件。

set temps {950 1000 1050}
set times {30 60 90}
foreach T $temps {
  foreach t $times {
    set tag "T${T}_t${t}"
    diffuse time=$t temp=$T
    struct outfile=result_${tag}.tdr
  }
}

这段脚本会生成 3×3=9 个结构文件,文件名中嵌入温度和时间的标签,便于后续批量分析。使用时注意:变量名区分大小写;${} 用于明确变量边界,避免与后续字符混淆;循环体内不要重复初始化网格,否则会覆盖前一次结果。

参数化带来的直接收益是“可追溯”。每个输出文件名都对应一组工艺条件,配合日志中的时间戳,就能建立“输入参数—输出结构”的映射关系。对于需要做工艺窗口分析的场景,这种映射比手工改参数再跑一遍要可靠得多。

SProcess 命令文件执行与输出管理关系 命令文件 .cmd line / region 初始化 diffuse / implant 工艺 set / foreach 参数循环 struct 保存输出 SProcess 引擎 顺序执行工艺步骤 求解扩散/氧化方程 更新网格与掺杂 输出文件 sprocess.log — 日志/错误 result_T1000_t60.tdr — 结构 *.plt — 一维掺杂剖面 *.out — 结深/方块电阻 参数化循环:温度 × 时间 扫描 温度 T: 950 1000 1050 时间 t: 30 60 90 → 9 个结构文件 result_T950_t30.tdr result_T1000_t60.tdr result_T1050_t90.tdr …… 检查日志 Error? → 定位步骤

把上面四部分串起来看:启动方式决定调试效率,命令文件结构决定可读性,日志与输出管理决定可排障性,参数化与循环决定可复用性。四者缺一不可。建议你在自己的工程目录下先跑通一个“氧化+注入+退火”的最小示例,确认 .tdr 能正常生成、日志无 Error,再逐步加入变量和循环。这样即使后续引入复杂的刻蚀模型或应力模型,基础框架也是稳的。

注意:不同版本的 SProcess 对命令语法和默认参数可能略有差异,例如 pdbSet 的参数名和 diffuse 的默认模型。正式使用前请以本地安装版本的 help 输出和手册为准,不要直接照搬其他版本的示例。