2. Sentaurus TCAD工具链概览

Sentaurus TCAD 并不是一个单一程序,而是一组围绕“结构—物理—网格—求解—可视化”分工协作的工具集合。理解自动化,首先要理解每个组件在数据链上处于什么位置、吃什么输入、吐什么输出、用什么文件格式交接。只有把接口关系理清,脚本才能知道该在哪一步调用谁、该检查哪个文件、该从哪个日志里判断成败。

从自动化视角看,这条工具链可以概括为一条“结构定义 → 工艺/器件结构生成 → 网格划分 → 物理求解 → 结果提取”的主数据流,而 Sentaurus Workbench(SWB)是贯穿始终的调度与参数管理层。下面这张图给出各组件在自动化流程中的位置与主要接口文件。

Sentaurus Workbench(SWB)— 参数扫描、任务调度、依赖管理、结果汇总 变量定义(@V@)· 节点/实验矩阵 · 工具调用顺序 · 日志与状态判定 Structure Editor 交互式结构编辑 掺杂/区域/电极定义 输出:.cmd / .tdr Sentaurus Process 工艺仿真(氧化/注入/扩散) 输入:命令脚本 .cmd 输出:结构 .tdr + 网格 Sentaurus Mesh 网格生成与加密 输入:.tdr / 网格命令 输出:带网格 .tdr / .grd Sentaurus Device 器件物理求解 输入:.cmd + 网格结构 输出:.plt / .tdr 曲线 结构/掺杂 工艺后结构 离散网格 电学结果 Sentaurus Visual / 结果提取 读取 .plt / .tdr,提取 Id-Vg、Vt、SS、Ion/Ioff 等指标 供 SWB 汇总与后续脚本判定 结果回传 / 状态判定 自动化接口要点: ① 所有工具通过 SWB 变量(@V@)注入参数;② 结构以 .tdr 为主交换格式;③ 命令脚本 .cmd 是各工具的可编程入口; ④ 求解结果 .plt 用于曲线提取,.tdr 用于场分布;⑤ SWB 依据退出码与日志关键字判定节点成功/失败。

各组件在自动化中的具体角色

Sentaurus Workbench(SWB)是自动化的“总控”。它本身不做物理计算,而是负责定义变量、组织实验矩阵、按依赖顺序调用各工具、收集日志与结果。在 SWB 中,一个典型的参数化实验会写成类似 @Vd@ = 0.05 0.1 0.2 的变量定义,SWB 会为每个取值生成一个“节点”(node),并自动展开成实验矩阵。自动化脚本真正操作的对象,往往是 SWB 的工程目录、节点目录以及其中的 pp*_*.log 日志和 *.plt 结果文件。

Structure Editor是结构定义的交互入口。它用于创建或修改器件结构,包括几何区域、材料、掺杂分布和电极接触。在自动化流程中,它通常不直接参与批量运行,而是作为“结构模板”的生成工具:工程师先在 GUI 中搭好基准结构,导出命令脚本或结构文件,再由 SWB 在批量流程中复用。它的输出主要是结构文件(.tdr)和可复现的命令脚本(.cmd),这两者都是后续 Process 或 Device 的输入。

Sentaurus Process负责工艺仿真,模拟氧化、注入、扩散、刻蚀等步骤,最终生成工艺后的器件结构。它的输入是工艺命令脚本(.cmd),输出是包含掺杂和应力信息的三维/二维结构(.tdr)。在自动化中,工艺步骤的顺序、温度、时间、剂量等参数通常被抽成 SWB 变量,脚本通过替换变量生成不同工艺条件,从而批量研究工艺窗口。

Sentaurus Mesh承担网格划分。它读取结构文件,根据掺杂梯度、结深、电极附近等区域进行自适应加密,输出带网格的结构文件。网格质量直接决定 Device 求解的收敛性和精度,因此自动化中常把网格加密参数(如最小步长、最大步长、加密区域)也作为变量扫描对象。需要注意的是,Mesh 的输入必须是结构文件,若上游 Process 失败,Mesh 会因缺少输入而报错,这正是 SWB 依赖管理要解决的问题。

Sentaurus Device是物理求解器,读取网格结构和器件命令脚本,求解漂移-扩散、热传导等方程,输出电学特性曲线(.plt)和场分布(.tdr)。在自动化中,它是最“重”的一步,也是判断仿真是否成功的关键节点。脚本通常需要检查 Device 日志中是否出现 Converged 或收敛失败信息,并据此决定是否重试或调整求解参数。

接口与数据格式:自动化的“接缝”

把工具链串起来的关键,是文件格式和调用约定。结构类数据以 .tdr 为主,它既能被 Mesh 读取,也能被 Device 读取,还能被 Visual 打开;曲线类数据以 .plt 为主,用于提取 Id-Vg、Id-Vd 等特性;命令脚本以 .cmd 为统一后缀,是各工具的可编程入口。SWB 则通过变量替换机制,把 @变量名@ 注入到这些脚本中,实现“一份脚本、多组参数”。

一个常见的自动化衔接方式是:SWB 先生成节点目录,把变量值写入 pp*_*.cmd;然后按依赖顺序调用 Process → Mesh → Device;每个工具运行结束后,SWB 检查退出码和日志关键字,决定该节点是成功、失败还是需要重跑。结果提取脚本再读取各节点的 .plt,汇总成表格或曲线,供后续分析。

在自动化脚本中,建议统一约定:所有工具调用都通过 SWB 的 gsub 或 sprocess/sdevice 命令触发,而不是直接调用底层可执行文件。这样变量替换、日志路径和依赖关系都由 SWB 统一管理,脚本更稳定、更易迁移。

一个最小可用的自动化衔接示例

假设要扫描栅压 Vg 从 0 到 1.2 V,步长 0.2 V,观察 Id-Vg 曲线。在 SWB 中可定义变量 @Vg@ = 0 0.2 0.4 0.6 0.8 1.0 1.2,并在 Device 命令脚本中写入 Quasistationary ( ... Voltage=@Vg@ )。SWB 会为每个 Vg 生成一个节点,依次运行 Device,输出各自的 .plt。随后用 Visual 或提取脚本读取所有 .plt,即可得到一组 Id-Vg 曲线。这个过程中,Process 和 Mesh 只需运行一次(若结构不随 Vg 变化),SWB 的依赖管理会自动跳过重复步骤,这正是自动化相对于手工操作的核心价值。