3. Sentaurus网格生成工具链

在Sentaurus TCAD中,网格并不是某一个工具"顺手生成"的附属产物,而是贯穿结构编辑、工艺仿真、器件仿真三个阶段、被反复继承与改写的核心数据。理解工具链的衔接关系,本质上就是理解网格在哪个环节产生、以什么形式传递、在哪个环节被重新离散化。如果这一层关系不清楚,就会出现"工艺仿真跑得很顺、器件仿真却报网格错误"或"明明加密了沟道,收敛却没有改善"这类典型问题。

一、四个工具在网格链上的角色定位

Sentaurus Structure Editor(SDE)是几何与掺杂的构造者。它以脚本(Scheme或Python)或GUI方式定义器件几何、区域(Region)、材料、电极接触和解析掺杂剖面,输出的是_bnd.tdr(边界文件)与_dvs.cmd等中间文件。SDE本身不做工艺扩散计算,它给出的掺杂通常是解析函数或常数,因此它的网格是"几何驱动"的:网格密度主要由几何尺寸、界面位置和用户显式指定的加密窗口决定。

Sentaurus Process(SPROCESS)是工艺历史的执行者。它按时间顺序执行氧化、扩散、注入、刻蚀、沉积等步骤,每一步都可能改变几何形貌和掺杂分布。SPROCESS内部维护自己的网格,并在关键步骤(尤其是注入和扩散)中做自适应加密与去加密。它最终输出_fps.tdr(final process structure),这个文件里既有真实的三维/二维掺杂分布,也有工艺演化后的网格。

Sentaurus Mesh(SNMESH)是网格的专门生成与优化工具。它既可以独立使用,也可以被SPROCESS或SDE在流程中调用。SNMESH的核心价值在于:它支持基于掺杂梯度、电场估计、几何曲率和用户定义的refinement规则的网格重分布,并能生成适合器件仿真的_msh.tdr。在工具链中,SNMESH常常承担"把工艺网格转换成器件友好网格"的桥梁角色。

Sentaurus Device(SDEVICE)是网格的最终消费者。它读取_msh.tdr或_fps.tdr,在给定网格上离散漂移-扩散方程、泊松方程和载流子连续性方程。SDEVICE不生成网格,但它对网格质量极其敏感:网格的正交性、长宽比、掺杂梯度处的节点密度,直接决定牛顿迭代是否收敛。

Sentaurus 网格工具链衔接关系 几何构造 → 工艺演化 → 网格重分布 → 器件离散求解 Sentaurus Structure Editor 几何 / 区域 / 电极 / 解析掺杂 输出:_bnd.tdr 网格特征:几何驱动 界面/窗口显式加密 Sentaurus Process 氧化 / 扩散 / 注入 / 刻蚀 输出:_fps.tdr 网格特征:工艺自适应 掺杂梯度处自动加密 Sentaurus Mesh 重分布 / 加密 / 去加密 输出:_msh.tdr 网格特征:器件友好 正交性/长宽比优化 Sentaurus Device 漂移-扩散 / 泊松 读取:_msh.tdr 不生成网格 对网格质量敏感 旁路:无工艺步骤时,SDE 几何可直接交给 SNMESH 生成器件网格 旁路:工艺网格质量足够时,_fps.tdr 可直接被 SDEVICE 读取 收敛失败反馈:调整 SNMESH 加密规则或 SDE 几何,重新生成网格 衔接要点: ① 网格随结构文件(.tdr)传递,不是独立文件;② 每一步都可能改变网格,后一工具默认继承前一工具的网格; ③ SNMESH 是唯一专门做网格重分布的工具,是工艺网格与器件网格之间的"翻译层"。

二、网格在文件层面的传递方式

Sentaurus工具链中,网格与结构数据是绑定在同一个TDR文件里的,而不是像某些仿真软件那样网格单独存成.msh文件。这一点非常关键:当你把_fps.tdr交给SDEVICE时,你同时交出了掺杂分布和网格;当你用SNMESH重新生成_msh.tdr时,你是在保留物理量的前提下替换网格。

典型的衔接路径有三条:

  • 纯器件路径:SDE → SNMESH → SDEVICE。适用于不需要工艺仿真的场景,例如理想结构、解析掺杂的快速验证。此时SDE输出的_bnd.tdr只含几何和解析掺杂,SNMESH负责按refinement规则生成器件网格。
  • 完整工艺路径:SDE → SPROCESS → SNMESH → SDEVICE。这是最常用的路径。SPROCESS输出的_fps.tdr网格往往在注入区过密、在漂移区过疏,SNMESH需要重新平衡。
  • 快速工艺路径:SDE → SPROCESS → SDEVICE。当工艺网格质量已经足够(例如一维扩散为主、结构简单),可以跳过SNMESH,但需要承担收敛风险。

三、SNMESH 的桥梁作用与关键参数

SNMESH之所以是工具链的核心衔接点,是因为它提供了与物理量相关的加密判据。在SNMESH的refinement块中,可以指定基于掺杂浓度的加密,例如:

refinement "dopingRefine" {
  maxlevel = 8;
  minlevel = 2;
  refinebox [0 0 0  1 1 1] {
    maxlevel = 10;
    refine = 1e17;   # 掺杂超过1e17 cm^-3 的区域加密
  }
}

这段配置的含义是:全局最大细分层级为8,但在指定窗口内,当掺杂浓度超过1e17 cm⁻³时允许细分到10级。这样做的结果是,源漏注入区和沟道表面会获得更密的节点,而衬底深处保持较粗网格,从而在节点数与收敛性之间取得平衡。

另一个关键参数是maxlevel与minlevel的组合。maxlevel控制最密处的细分次数,minlevel控制最粗处的下限。如果minlevel设得过高,衬底会被迫保留大量无用节点;如果maxlevel设得过低,沟道和结区又无法分辨。工程上常见的做法是:先设一个保守的maxlevel(如7~8),跑一次SDEVICE,观察收敛残差曲线,再决定是否提高到9~10。

四、衔接中的典型问题与判断依据

最常见的问题是网格继承导致的"隐性过密"。SPROCESS在注入步骤中会在注入窗口附近自动加密,如果后续没有SNMESH重分布,这些加密节点会原封不动进入SDEVICE。结果是:注入区节点极密,而沟道和漂移区节点不足,牛顿迭代在沟道处反复震荡。判断依据是查看SDEVICE日志中的Newton iteration残差:如果残差在某个区域反复下降又上升,往往说明该区域网格不足。

第二个问题是几何与网格不匹配。SDE中定义的电极接触如果与SNMESH生成的网格边界不一致,SDEVICE会报"contact not found"或接触面积异常。解决方式是在SNMESH中显式保留电极边界,或使用refinebox在电极附近强制加密,确保接触节点被正确识别。

衔接检查清单:① 确认TDR文件中的网格是否被后一工具继承;② 检查SNMESH的refinement规则是否覆盖了结区和沟道;③ 查看SDEVICE日志中残差曲线是否单调下降;④ 若收敛失败,优先调整SNMESH的maxlevel和refinebox,而不是盲目全局加密。

理解这四个工具的网格衔接关系,最终要落到一个判断上:当前网格是否与当前物理问题匹配。SDE负责几何正确,SPROCESS负责工艺真实,SNMESH负责网格适配,SDEVICE负责求解验证。四者各司其职,任何一环的网格决策都会向后传递,并在收敛结果中体现出来。