Sentaurus TCAD器件仿真实战:从Device User Guide到sdevice调试
简介该资源为 Synopsys 官方发布的 Sentaurus TCAD Device 用户指南P-2019.03 版本面向从事集成电路设计、工艺仿真与器件特性分析的工程师和研究人员也适合微电子、纳电子及光电子方向的学生系统学习。文档由 1 个 PDF 文件构成压缩包大小约 7.85MB内容覆盖面广既包括软件基础概念、工具流程与结构网格创建方法也深入介绍了器件仿真、性能分析与优化等核心功能并附有相关出版物与技术支持信息方便按需查阅。当前已有 3812 人学习浏览是快速掌握 Sentaurus Device 操作流程、理解 TCAD 仿真原理并用于实际器件设计验证的实用参考资料。1. 为什么每个搞器件的人迟早要翻开这本 Device User Guide某公司要评估一个新结构器件的耐压能力流片排期要等好几个月唯一的办法是先靠 Sentaurus TCAD 把电学特性算出来。第一次打开 Sentaurus TCAD 的 Device 用户指南时大多数人会被它的厚度和术语密度吓到。但器件仿真真正干活的路径其实不长拿到结构文件、写命令文件、选物理模型、跑求解、看结果。这本 Device User Guide 讲的就是 sdevice 器件仿真模块的全部用法从网格读到物理模型从数值方法到输出格式每一章都能在仿真里找到对应。本文把这条路径里最容易卡的节点挑出来按“先读哪里、最小仿真怎么写、不收敛怎么排查、结果怎么验证”展开。适合刚入门的工程师也适合把它当案头查询的熟手。2. 读懂 Device User Guide 前先搞清它在 TCAD 链条里的位置2.1 为什么先读 Device 手册而不是从工艺手册开始TCAD 套件通常包含工艺和器件两条主线。工艺仿真输出掺杂曲线、结构尺寸和表面形貌器件仿真在这些结构之上计算电势、载流子浓度和电流。很多人一开始同时打开工艺和器件两本手册结果两本都没翻透。我更建议先把 Device 手册啃下来因为器件仿真能直接回答“这个结构耐压多少、阈值多少、漏电多大”这些是评价一个工艺方案最关心的数字。工艺手册更多用来解释“这个掺杂剖面怎么来的”等器件仿真中出现“掺杂分布不合理”这类问题时再回头查也不迟。多数工程场景里结构文件可以从现有工艺菜单直接改出来并不需要每次都从头跑完整个工艺仿真。比如你要看的只是不同沟道长度下的阈值电压漂移完全可以用一个已经生成好的结构文件只改网格和电极直接进 sdevice。先跑通一个最小器件仿真再按项目需求决定要不要补工艺仿真是投入产出比最高的路径。Device User Guide 解决的就是这个“最小器件仿真”该怎么搭、怎么做才靠谱的问题。读手册的顺序也有讲究。手册一般会按“网格定义、物理模型、数值方法、求解序列、输出请求、结果提取”这几个主题展开这个顺序恰好对应 sdevice 命令文件的书写顺序。把命令文件从头读一遍等于把手册的主要章节过了一遍。工程上查手册更多是带着问题查具体参数比如某条输出语句的语法、某个模型的默认开关用目录跳转比从头翻高效得多。前提是你知道问题属于哪一段所以先把整条仿真链路在脑子里画出来手册才真正能用起来。2.2 从结构文件到电气曲线一条完整的最小链路完整跑一次器件仿真最少要经过三个环节结构生成、器件仿真、可视化。结构生成由 sde 或独立的网格工具完成器件仿真由 sdevice 完成可视化则用配套的后处理工具查看能带、电场和电流密度。三个环节之间的文件格式有强依赖顺序不能乱乱了你很难判断问题是出在结构上、网格上还是求解上。文件类型常见后缀由谁生成在流程里的作用结构文件.tdrsde 或网格工具把几何、掺杂、电极信息交给 sdevice命令文件.cmd用户编写定义物理模型、求解序列、输出请求解文件.tdrsdevice保存每个偏置点的电势、载流子浓度等电流曲线.pltsdevice逐点记录电极电压和电流日志文件.log/.outsdevice记录迭代收敛过程与报错信息结构文件是整个链路的地基。结构生成阶段最重要的事不是电阻率或掺杂浓度的数值有多准而是网格分布和电极有没有对准真实物理区域。网格太疏后面跑出来的击穿电压可能就是“猜”出来的电极没接触好轻则警告重则仿真几小时后发现电流全是从一个孤立的网格点流出来的。Device User Guide 里大量篇幅在讲网格命令不是因为网格本身复杂而是因为它是后续所有计算的载体。从命令文件到仿真结果sdevice 内部做的事情可以理解成三步读入结构、建立方程、迭代求解。读入结构后它会把你定义的电极识别出来把掺杂浓度映射到网格点上然后根据 Physics 块里开启的模型生成半导体方程。求解序列里的每一步都是一次或多次偏置电压下的方程迭代。日志文件里那些“Iteration”行就是这一步的进度条不收敛时会直接告诉你失败在哪一步。搞清这条链路后你再看 Device User Guide 会轻松很多。手册里讲网格的部分对应结构生成阶段的收尾讲物理模型和数值方法的部分对应命令文件的核心讲输出的部分对应结果提取。遇到报错先想一想这个问题发生在链路哪一段如果是日志文件报错多半是求解阶段如果是结构文件读不进来多半是网格或电极定义问题。这样查手册才有方向而不是遇到问题就改一个数值参数碰运气。3. 用 sdevice 搭一个最小仿真命令文件骨架与物理模型选择3.1 一个最小 sdevice 命令文件的骨架拿到一个可用的结构文件之后接下来就是写命令文件。很多人以为命令文件要写得非常全才能跑其实最小可运行版本往往很短。我用 heredoc 生成命令文件再调用 sdevice 的例子帮你建立第一版骨架。#!/bin/bash # 常见做法用 heredoc 生成 sdevice 命令文件再调用 sdevice cat mos_sim.cmd EOF # sdevice 命令文件骨架示例具体语法以与你安装版本匹配的手册为准 Device MOS { File { Grid mos_tdr.tdr # 结构文件来自 sde 或网格工具 Plot mos_plot.tdr # 保存各偏置点场分布 Current mos_cur.plt # 保存电极电流/电压曲线 Output mos_log.out # 保存迭代日志 } Electrode { { Namegate; Voltage0.0 } { Namedrain; Voltage0.0 } { Namesource; Voltage0.0 } { Namesubstrate; Voltage0.0 } } Physics { } Solve { # 先算零偏静态解再准静态扫描 drain 到 1.0V { Poisson } { Coupled { } } { Quasistationary { MaxStep0.1 } Goal { Namedrain; Voltage1.0 } } } } EOF sdevice -f mos_sim.cmd说明一下这段骨架在干什么。File块里的四个字段分别指定输入结构、输出场分布、输出电流曲线和日志文件。Grid指向的.tdr就是上一章链路里的结构文件它必须真实存在且电极命名能对得上。Plot和Current的区别要记住Plot保存的是每个偏置点的高维场数据比如电子浓度、电势分布文件很大Current保存的是标量比如 drain 电压和 drain 电流是画 Id-Vg、Id-Vd 曲线的数据源。Output是查收敛性和错误信息的入口仿真不收敛第一件事就是打开它。Electrode块的定义要和 sde 里的电极名称一一对应名字写错不会立刻报错但后面输出电流时会发现电极电压一直没有加载到结构上白跑一圈。电压初值一般设 0再在Solve块里扫到目标值。这样做的逻辑是给求解器一个容易收敛的起点零偏附近载流子浓度变化平缓迭代更容易建立初值。Solve块里的Quasistationary表示准静态扫描。MaxStep0.1的意思是每次迭代最大电压步长不超过 0.1V这一步很重要。在击穿电压附近电流对电压极度敏感步长大了会直接越过击穿点导致迭代振荡。新手经常遇到的问题就是明明扫描目标设了 30V结果前一个偏置点还算得好好的一到 29.9V 就突然发散很大原因是步长控制得太粗。把MaxStep调小到 0.05 或 0.02往往能多撑出几个点。这个骨架跑通后再逐步加自己需要的物理模型。不要一上来就把所有可能用到的模型都打开否则你连问题出在哪里都分不清。3.2 物理模型选取默认模型不是“免死金牌”sdevice 默认会启用一套基础漂移扩散模型对很多常规结构来说这套模型已经能给出趋势正确的曲线。但工程上要评估的往往是高压、漏电、自热这类效应默认模型覆盖不了。下面这张表是我最常用的模型选择参考按“从必备到附加”的顺序排。物理效应常见模型关键词典型场景开启代价载流子输运漂移扩散所有常规器件无带隙变窄禁带宽度随掺杂变化高掺杂源漏区小通常默认开产生-复合SRH / Auger泄漏电流、高注入小碰撞电离ImpactIonization击穿电压、雪崩收敛难度明显上升自热效应Thermodynamic功率器件、大电流计算量大收敛难量子修正QuantumPotential薄栅 MOS、小尺寸需要足够密的网格选型理由我不喜欢按教科书讲更愿意按工程目标来。如果你评估的是低压逻辑器件漂移扩散加上带隙变窄和常规 SRH 复合基本就够了。如果你评估的是耐压器件碰撞电离是必须开的因为击穿本身就是碰撞电离和载流子倍增的过程。如果你关心的是功率器件在连续大电流下的性能热力学模型不能省否则仿真里结温一直是常数出来的曲线和实测会差很多。但我还是要强调一个血泪经验开启模型的顺序比模型本身更重要。正确做法是从最小模型集合开始跑通一个零偏和一个低电压点然后逐个加模型每次只加一个观察那一次开启后结果变了多少、收敛性变没变。比如你先开 SRH 复合看看泄漏电流降了多少再开 Auger看看大电流区域是不是更接近实测最后才开碰撞电离并且同时加密强场区网格。如果不按这个顺序来一上来就把碰撞电离和热力学全打开结果连零偏都算不过你根本不知道是哪一项把迭代逼死了。物理模型和网格是强耦合的这一点很多人会忽略。开启碰撞电离后高场区必须有足够密的网格来分辨电场峰值否则碰撞电离产生的电流会在几个网格之间来回跳日志里出现类似振荡但始终收敛不了的现场。反过来网格太密会让模型参数计算量暴涨但不会自动带来更高精度。一个稳妥的起步做法是先用较粗的网格跑通确认结构和电极没问题再加密强场区同时开启对应的高场模型。这一步顺序反了后续所有调参都会变成玄学。4. 器件仿真常见排查网格、收敛性与物理模型那些坑4.1 五条高频踩坑记录现象、原因与解决现象电压扫描到某个点后迭代步数突然增大电流出现平台甚至回退日志里出现类似“Matrix is singular”或“No convergence”的报错。原因强场区网格太疏耗尽层边界在一个迭代步里跨过两三个网格点也可能是击穿点附近碰撞电离反馈过强。解决先把MaxStep调到 0.02V 硬跑过去如果不行就在结、沟道和碰撞电离高发区加密网格再不行就暂时关闭碰撞电离模型确认线性区正常后再打开。现象亚阈值区的漏电流比预期高几个数量级甚至高到曲线形状都不对。原因结构生成时网格经过源漏结时把掺杂浓度梯度拉平了等效出了更宽的结泄漏路径被夸大。解决把网格边界对齐到实际掺杂边界并在结两侧各加密若干层“密”到什么程度算够我一般看相邻网格尺寸比不超过 1.5且结区内至少有 5 个网格点。不要靠调低 SRH 寿命来强行压电流那是在掩耳盗铃只会让模型失去预测能力。现象把手册或别人工程里给的模型参数搬过来击穿电压和预期差一倍。原因不同材料、不同掺杂浓度范围适用的碰撞电离参数不一样手册里的默认值是通用值不是为你这个结构校过参的值。解决确认材料名和温度优先用同材料和同量级掺杂的文献参数做校准前先固定网格让网格和模型参数这两件事不要互相掩盖。一次只校准一个参数比如先校准碰撞电离系数再校准迁移率最后才校准复合寿命。现象结构明明是对称的仿真出来的两端口电流或电场分布却不对称。原因网格不是结构对称的或者 sde 里坐标轴方向定义和命令文件里的电极位置对不上。解决用可视化工具打开解文件先看哪个网格点连到了哪个电极把电极电压参考点统一到同一个地电位重新导出结构文件确认所有高掺杂区域都落在你预期的一侧。现象零偏静态解能算但一加压就直接发散。原因存在浮空区比如一个掺杂区域没有任何电极接触或者某个电极名写错导致接触没生效也可能是初始值离真实解太远。解决先跑零偏点让求解器把上一个偏置点的解作为下一步的初值默认会延续但如果你重置了初值就会丢掉用可视化检查电极是否全部连接在网格上对孤立区域增加一个高阻接触或调整网格使其与主结构连通。4.2 收敛性调参的顺序先网格再模型最后数值收敛性问题在器件仿真里占的坑比任何其他问题都多。很多人一不收敛就去调阻尼系数、迭代容差实际上大多数问题根源在网格和模型组合上。我给自己定了一个固定排查顺序也推荐你试试。第一步打开日志文件找到第一个不收敛的偏置点。不要看最后一个失败点要看第一个开始出现警告的点往往那个点之前几步就已经有端的迹象。第二步回到该点之前的偏置附近单独加密那个局部区域的网格重新跑一遍。加密的优先级通常是强场区、冶金结、沟道表面、高掺杂浓度梯度大的位置。第三步如果加密后仍然不收敛把当前开启的物理模型逐个关闭找到是哪一项导致振荡。碰撞电离和自热效应是最常见的两个嫌疑犯。第四步最后才去动数值参数比如在 Newton 和 Gummel 迭代之间切换、调整阻尼因子、放宽当前点的误差容限。数值参数调整有一个原则一次只改一个改完记录下原来的值和改动后的结果。我见过最典型的翻车现场是把误差容限从 1e-10 改成 1e-6收敛是收敛了但这个偏置点对应的物理场已经明显失真后面的曲线和前面断了层。数值上的“收敛”不等于“正确”判断正确要靠和相邻偏置点的连续性以及和已知物理预期的对比。日志里看到收敛标记只能说明迭代计算完成了不能说明模型选对了、网格够密了。说到玄学收敛性调整最容易让人陷入玄学的阶段就是什么都调过了、日志还是报错。这时候先停下来退出数值参数域回到结构文件看一眼看看是不是某个区域出现了负掺杂、电极是不是贴着高浓度区、有没有网格翻转。我就遇到过几次最后定位到是结构生成阶段的一个坐标参数写反了导致整个有源区悬浮和数值求解没有半点关系。所以收敛性问题先怀疑物理和几何再怀疑数值。5. 从仿真结果里拿到能用的数据输出请求与验证习惯5.1 从输出文件里挖数据电流、能带和电场的三类请求命令文件里的输出请求直接决定你能看到什么。Plot块和CurrentPlot块各管一件事前者保存场分布后者保存电极级标量。很多新手把两者搞混想看 Id-Vg 曲线却去解析解文件绕了一大圈还容易出错。# 输出请求块示例常见写法 Plot { eDensity hDensity # 电子/空穴浓度 eCurrent hCurrent # 电子/空穴电流密度 Potential # 电势 ElectricField # 电场强度定位击穿路径 BandGap # 禁带宽度判断材料区域 } CurrentPlot { # 记录 drain 和 gate 电流以及 drain 电压 { Contactdrain Voltage1.0 } { Contactgate Voltage0.0 } }代码里Contact的名字要和Electrode块里的定义一致否则输出文件里会出现空数据。Plot里每一项都有特定用途eDensity和hDensity是看浓度分布尤其要看表面反型层是否形成eCurrent和hCurrent是看电流路径可以判断泄漏是从体区走还是沿着界面走Potential是看沟道电势分布能带图就是由电势和能带参数换算出来的ElectricField是找峰值电场位置击穿点、热载流子注入区都对应电场峰。BandGap输出不是必须的但当你做的结构含异质结时能帮你快速确认是否把材料区域定义错了。输出频率也要控制。Plot数据是每个偏置点都写一次如果你把扫描点设得很密比如几千步那生成的.tdr文件会涨到几个 GB。日常习惯是先用CurrentPlot看趋势确定关心的电压范围之后再单独把那个范围的场分布Plot出来做深入分析。这比一开始就全打开要实惠得多。文件大了之后不光是磁盘占用后处理工具打开也要花很长时间影响调参节奏。5.2 和实测或文献对照的验证习惯哪些偏差能接受哪些是错误仿真跑通之后下一步是验证。验证不是看曲线趋势对不对就收工而是要把几个关键指标和实测或权威文献对照确认偏差在可接受范围内。指标仿真里怎么提取与实测对照的通常容忍度阈值电压Id-Vg 最大跨导外推或恒定电流法几十 mV 量级亚阈值摆幅log 电流对 Vg 斜率的倒数5% 以内击穿电压Id 陡升点或衬底电流峰值10% 以内导通电阻线性区 Id-Vd 斜率倒数5% 以内为什么不同指标容忍度差这么多因为它们的物理敏感度不同。阈值电压受界面态和栅功函数影响大仿真里的功函数参数只要差一点点几十 mV 的偏差很正常所以先看趋势再谈绝对精度。击穿电压本身是雪崩过程的临界点对碰撞电离系数和网格分布极度敏感能控制在 10% 以内已经说明模型校准到位了。亚阈值摆幅是理想值和工艺质量的折中5% 以内的偏差说明泄漏机制本身模拟对了。验证时最需要注意的一件事先看曲线形状再看数值。如果形状都不对比如亚阈值斜率明显偏平说明网格或结构问题这时候调模型参数没有任何意义。如果形状对但绝对值偏移那多半是某个模型参数需要按你这个掺杂浓度范围校准。千万不要为了“凑数据”同时改三个参数改完你可能得到一组好看的曲线但换一个偏置点立刻被打回原形。更稳的做法是固定网格只校准迁移率再固定迁移率再校准复合寿命最后校准碰撞电离系数每一步都在不同偏置点下检查。没有实测数据时至少找同尺寸器件的文献曲线对照。对照的重点是看击穿点、阈值点和亚阈值区之间的相对关系是否一致而不是要求两条线完全重叠。曾经有次我对照前的结构文件曲线形态和文献一致但击穿电压差了 15%后来发现是碰撞电离参数用的默认值校准一次之后偏差降到 6%这才敢拿数据去交差。这是踩坑换来的习惯。6. 让手册变成工具箱批量扫参与基线管理的进阶习惯6.1 用脚本批量生成偏置点少改一行是一行仿真最大的成本不是机器时间而是人的等待和反复改文件。每次手动改电压、跑一次、看文件效率很低。更常见的做法是用一个带占位符的模板命令文件再用脚本批量替换占位符。#!/bin/bash # 批量生成不同 drain 电压的命令文件并运行 BASEmos_base.cmd for vd in 0.5 1.0 1.5 2.0; do sed s/__VD__/$vd/g $BASE mos_vd${vd}.cmd sdevice -f mos_vd${vd}.cmd done模板里先写好Goal { Namedrain; Voltage__VD__ }用sed把__VD__替换成目标电压。用占位符比直接替换行安全因为双引号和括号在sed里都有特殊含义直接替换容易踩引号转义的坑。跑完之后原始模板文件保持不变每个偏置点对应的命令文件因为带电压后缀也能清楚归档。批量扫参不只是省时间更重要的是让整个扫描条件可回溯改过一次模板之后不会再出现“那个 1.2V 是哪个版本跑出来的”这种问题。6.2 保留一张“能收敛的底牌”基线归档习惯跑仿真跑得多了你会发现一版能收敛的命令文件比什么都值钱。某次我调模型参数调得兴起直接覆盖了基线文件后面几天无论怎么调都回不到那个收敛状态才意识到自己把后悔药丢了。从那以后我每次跑通一个偏置点就把命令文件、结构文件、日志文件和电流曲线放同一个目录文件名带日期和偏置条件。这个习惯比任何手册技巧都管用。希望帮到你。本文还有配套的精品资源点击获取