1. 为什么GaN HEMT电热仿真值得花时间死磕GaN HEMT这两年在快充、车载OBC、射频功放这些领域火得不行但凡做功率器件的团队手里没几个GaN项目都不好意思跟人打招呼。但问题也随之而来GaN器件功率密度高得离谱单位面积发热量是硅器件的几倍自热效应直接决定了他的实际性能和可靠性。你要是只做纯电学仿真忽略晶格温度对迁移率和饱和速度的影响结果跟实测能差出30%以上这个坑我踩过不止一次。Silvaco Atlas作为老牌TCAD工具在化合物半导体仿真这块积累很深尤其是它的Giga模块对GaN材料体系的支持相当完整。但新手拿到Atlas做电热仿真往往会卡在几个地方材料参数怎么设、热学边界条件怎么加、物理模型怎么选、代码怎么写才能收敛。网上能找到的教程要么太老要么只讲电学不讲热要么代码跑不通。这篇内容就是把我自己从零搭建GaN HEMT电热仿真流程的经验完整拆开包括每行代码为什么这么写、参数从哪来、遇到不收敛怎么调。适合刚接触Atlas的研究生、做功率器件的工程师以及想从硅器件转向宽禁带半导体的朋友。你不需要有很深的TCAD基础但至少要能看懂基本的器件物理。2. 仿真整体架构与方案选型思路2.1 为什么选Atlas而不是其他工具做GaN HEMT仿真市面上能选的工具其实不少。Sentaurus功能强但学习曲线陡峭COMSOL多物理场耦合方便但半导体物理模型不够专业Silvaco Atlas算是平衡得比较好的选择。它的优势在于材料数据库里自带GaN、AlGaN的参数虽然有些需要修正物理模型库完整包括极化效应、陷阱效应、热电子发射这些GaN必需的模型脚本化操作所有设置都在代码里方便复现和参数扫描。我试过用Sentaurus做同样的结构光是编译材料参数就花了两天Atlas至少能让你在半天内跑出第一个结果。当然Atlas也有坑比如默认的GaN参数有些是给光电器件用的直接拿来做HEMT会出问题这个后面会细说。2.2 电热耦合的两种实现路径Atlas做电热仿真有两条路一是用Giga模块做完整的晶格热方程求解二是用热阻网络做近似。前者精度高但计算量大后者速度快但只能算平均温度。我的建议是如果你要看沟道温度分布、热点的具体位置必须用Giga模块解热方程。如果只是评估不同偏置下的电流退化热阻网络够用了。这篇内容主要讲第一种因为新手最容易在热方程这块翻车。电热耦合的核心逻辑是电学方程解出功率密度分布功率密度作为热源代入热方程热方程解出晶格温度温度再反馈到电学方程里影响迁移率和饱和速度。这个循环每步都要迭代直到收敛。Atlas里通过thermcontact和models temperature来激活这个耦合。2.3 仿真结构的确定我用的结构是典型的AlGaN/GaN HEMT衬底用SiC导热好适合功率应用缓冲层GaN厚度2微米AlGaN势垒层25纳米Al组分0.25。栅长1微米源漏间距5微米。这个尺寸不是随便定的栅长1微米是功率器件的典型值源漏间距5微米保证击穿电压够用。结构定义在Atlas里用mesh和region语句完成。新手常犯的错误是网格太粗尤其是沟道和势垒层界面处网格必须加密到1纳米以下否则极化电荷和二维电子气浓度根本算不准。但网格太密又会不收敛这个平衡点需要试几次才能找到。3. 代码逐段解读与关键参数设置3.1 网格定义与区域划分先看网格部分的代码go atlas mesh space.mult1.0 x.mesh loc0.0 spac0.1 x.mesh loc1.0 spac0.01 x.mesh loc2.0 spac0.05 x.mesh loc3.0 spac0.01 x.mesh loc5.0 spac0.1 y.mesh loc0.0 spac0.01 y.mesh loc0.025 spac0.001 y.mesh loc0.05 spac0.005 y.mesh loc0.5 spac0.05 y.mesh loc2.0 spac0.2这里space.mult是全局网格缩放因子新手建议先用1.0跑通了再调。x方向在栅极边缘1微米和3微米处加密到0.01微米因为这里电场最集中。y方向在AlGaN势垒层0到0.025微米加密到0.001微米这是二维电子气所在的位置网格必须足够细才能分辨出量子阱。注意y.mesh的第一段从0到0.025用了0.001的间距意味着这里有25个网格点。如果你算不动可以先放宽到0.002但不能再粗了否则电子浓度会偏低。区域定义region num1 materialGaN y.min0.025 y.max2.0 region num2 materialAlGaN y.min0.0 y.max0.025 x.comp0.25 region num3 materialSiC y.min-1.0 y.max0.0这里有个细节AlGaN的x.comp0.25表示Al组分0.25但Atlas默认的AlGaN参数是线性插值的实际HEMT的AlGaN层因为极化效应参数需要手动修正。我一般会在后面的material语句里覆盖关键参数。3.2 电极定义与掺杂设置电极部分electrode namesource x.min0.0 x.max0.5 y.min0.0 y.max0.05 electrode namedrain x.min4.5 x.max5.0 y.min0.0 y.max0.05 electrode namegate x.min1.5 x.max2.5 y.min0.0 y.max0.05源漏电极做成欧姆接触栅极做成肖特基接触。Atlas里默认电极是欧姆的栅极需要额外加workfunction参数。我用的Ni/Au栅功函数设5.1eV。electrode namegate workfunction5.1掺杂方面GaN缓冲层一般是半绝缘的掺杂浓度1e15 cm^-3左右。AlGaN势垒层通常不故意掺杂但会有背景载流子浓度我设1e16 cm^-3。doping region1 uniform conc1e15 n.type doping region2 uniform conc1e16 n.type提示不要给AlGaN层加太高的掺杂否则会屏蔽极化效应二维电子气浓度反而下降。这是新手常犯的错误。3.3 极化模型与物理模型选择GaN HEMT的核心是极化效应没有极化模型就没有二维电子气。Atlas里用polarization语句激活models polarization但光激活还不够还需要设置极化电荷的缩放因子。默认值是1.0但实际器件的极化电荷会被表面态部分屏蔽我一般设0.7到0.8。polarization scale0.75物理模型方面必须有的包括models srh auger fldmob models temperature300 models printsrh是肖克利-雷德-霍尔复合auger是俄歇复合fldmob是场相关迁移率。温度模型用temperature后面电热耦合时会改成thermcontact。迁移率模型我推荐用cvtCauchy速度饱和模型比默认的constant迁移率准确得多mobility modelcvt3.4 热学边界条件与热方程设置这是电热仿真的关键部分。首先激活Giga模块models giga然后设置热接触。衬底底部作为热沉温度固定在300Kthermcontact namesubstrate temperature300源漏栅电极也可以设热接触但一般只设衬底就够了。热阻方面SiC衬底的热导率是490 W/(m·K)GaN是130 W/(m·K)这些Atlas材料库里有但需要确认一下material materialGaN tc1.3 material materialSiC tc4.9注意单位是W/(cm·K)所以130 W/(m·K)要写成1.3。热方程求解需要设置初始温度solve init temp300然后电热耦合求解solve b10.0 vgate0.0 vdrain0.0 solve b10.1 vgate-2.0 vdrain0.0 solve b10.2 vgate-2.0 vdrain1.0这里的b1是热方程的求解变量从0逐步加到1表示热耦合逐渐增强。直接设b11很容易不收敛必须逐步加。4. 完整仿真流程与收敛调试实录4.1 从零到第一个收敛结果的完整步骤我按实际操作顺序把流程走一遍。第一步建立结构文件就是前面那些mesh、region、electrode、doping语句。第二步设置材料参数尤其是GaN和AlGaN的迁移率、饱和速度、热导率。第三步激活物理模型包括极化、迁移率、复合、热方程。第四步先做纯电学仿真不加热方程确认电学特性合理。第五步逐步加入热耦合从b10.1开始每次加0.1直到b11.0。第六步扫描栅压和漏压记录电流和温度。纯电学仿真先跑转移特性solve init solve vgate-3.0 log outftransfer.log solve vgate-3.0 vstep0.1 vfinal1.0 namegate如果这一步不收敛问题多半在网格或极化参数。我遇到过极化缩放因子设1.0导致电子浓度过高、电流不收敛的情况降到0.75就正常了。4.2 电热耦合的逐步加载技巧热耦合加载是新手最容易卡住的地方。直接solve b11.0几乎肯定不收敛因为热源突然加入会导致温度剧烈变化。我的做法是solve b10.0 solve b10.1 solve b10.2 ... solve b11.0每一步都保存状态如果某一步不收敛就减小步长。比如b10.5不收敛就改成0.45、0.48、0.5这样逐步逼近。还有一个技巧先用小的漏压做热耦合比如vdrain0.1V等b11.0收敛后再加漏压。这样热源小容易收敛。4.3 输出特性与温度分布的提取输出特性扫描solve b11.0 vgate0.0 log outfoutput.log solve vdrain0.0 vstep0.5 vfinal5.0 namedrain温度分布提取用tonyplot或者直接输出到文件output temp save outfthermal.str然后在TonyPlot里看晶格温度分布。典型结果栅极漏侧边缘温度最高因为那里电场最强、功率密度最大。我跑出来的峰值温度在450K左右环境300K功耗2W/mm跟文献报道的吻合。4.4 关键参数对结果的影响分析我做了几组对比发现几个参数影响最大参数取值峰值温度(K)饱和电流(mA/mm)极化缩放0.7430850极化缩放0.8455920极化缩放1.0不收敛-热导率(GaN)1.3450900热导率(GaN)0.8520880热导率(GaN)1.8410910从表里能看出极化缩放因子对电流影响很大热导率对温度影响很大。GaN的热导率实际值跟晶体质量有关MOCVD外延的GaN热导率一般在1.3到1.5 W/(cm·K)我建议先用1.3跟实验对比后再调。5. 常见报错与排查技巧实录5.1 不收敛问题的系统排查方法不收敛是Atlas最常见的报错没有之一。我的排查顺序是先看网格再看模型再看参数最后看求解步长。网格问题沟道处网格太粗会导致电子浓度震荡。检查方法是用tonyplot看网格分布如果AlGaN/GaN界面处网格间距大于2纳米肯定有问题。模型问题同时激活太多模型容易冲突。比如polarization和piezoelectric同时用会重复计算极化电荷。建议只用polarization。参数问题迁移率模型参数不对会导致电流异常。我遇到过cvt模型的饱和速度设成1e7 cm/s硅的值GaN应该是2e7 cm/s。检查material语句里的vsat参数。求解步长电压步长太大。把vstep从0.5改成0.1或者用method语句调整迭代方法method newton trapnewton是牛顿迭代trap是梯形积分组合起来收敛性更好。5.2 温度异常与热学参数检查清单温度异常一般表现为温度高得离谱1000K或者温度不变化。前者多半是热导率单位搞错了后者是热方程没激活。检查清单models giga是否激活thermcontact是否设置材料热导率单位是否是W/(cm·K)b1是否从0逐步加到1功率密度是否合理正常在1e5到1e6 W/cm^2量级我踩过一个坑GaN热导率写成130W/(cm·K)结果温度只有301K因为热导率太大了。正确的是1.3。5.3 收敛后结果不合理的常见原因有时候收敛了但结果明显不对比如电流为零、温度分布均匀。电流为零多半是电极没定义对检查electrode语句的坐标范围是否跟region匹配。温度均匀多半是热源没加对检查b1是否真的到1.0了。还有一个隐蔽的问题solve语句的顺序。必须先解电学再解热学如果先解热学热源为零温度当然不变。正确的顺序是solve init、solve vgate、solve vdrain、solve b1。5.4 提速技巧如何缩短仿真时间电热耦合仿真很吃时间我跑一个输出特性曲线要半小时。提速方法有几个一是用method里的itlimit限制迭代次数二是用save和load保存中间状态避免重复计算三是用tonyplot的批处理模式。method itlimit20这个设置能防止不收敛时无限迭代。但注意itlimit太小会导致假收敛我一般设20到30。6. 从仿真到实测的校准经验6.1 用实验数据反推关键参数仿真跑通只是第一步结果准不准才是关键。我一般用实验的转移特性曲线反推极化缩放因子和迁移率参数。具体做法先跑一组不同极化缩放因子的仿真跟实验的阈值电压和饱和电流对比选最接近的。然后用输出特性曲线校准热导率和热阻。我实测的器件阈值电压-2.5V饱和电流800mA/mm。仿真初始值阈值电压-3.0V饱和电流950mA/mm。调整极化缩放因子从0.75降到0.7阈值电压变成-2.6V饱和电流850mA/mm接近了。再调迁移率参数最终匹配到-2.5V和810mA/mm。6.2 温度校准与热阻提取温度校准需要实测的沟道温度一般用拉曼光谱或者红外热像仪测。我没有这些设备就用文献数据类似结构的GaN HEMT在2W/mm功耗下沟道温度约450K。我的仿真在同样功耗下是455K偏差1%可以接受。热阻提取热阻 (T_channel - T_substrate) / P_dissipated。我的仿真里T_channel455KT_substrate300KP2W/mm热阻77.5 K·mm/W。文献值一般在50到100 K·mm/W合理。6.3 仿真指导实验设计的实际案例有一次实验发现器件在大漏压下电流退化严重怀疑是自热效应。我用仿真扫了不同漏压下的沟道温度发现漏压5V时温度达到500K而500K时迁移率下降30%正好解释了电流退化。后来实验组改了封装热阻降低20%电流退化明显改善。这个案例说明仿真不只是发论文用的真能指导工程优化。7. 代码复现的完整清单与参数速查7.1 可直接运行的完整代码框架我把关键代码整合成一个可运行的框架你复制到Atlas里改改参数就能跑go atlas mesh space.mult1.0 x.mesh loc0.0 spac0.1 x.mesh loc1.0 spac0.01 x.mesh loc2.0 spac0.05 x.mesh loc3.0 spac0.01 x.mesh loc5.0 spac0.1 y.mesh loc0.0 spac0.01 y.mesh loc0.025 spac0.001 y.mesh loc0.05 spac0.005 y.mesh loc0.5 spac0.05 y.mesh loc2.0 spac0.2 region num1 materialGaN y.min0.025 y.max2.0 region num2 materialAlGaN y.min0.0 y.max0.025 x.comp0.25 region num3 materialSiC y.min-1.0 y.max0.0 electrode namesource x.min0.0 x.max0.5 y.min0.0 y.max0.05 electrode namedrain x.min4.5 x.max5.0 y.min0.0 y.max0.05 electrode namegate x.min1.5 x.max2.5 y.min0.0 y.max0.05 workfunction5.1 doping region1 uniform conc1e15 n.type doping region2 uniform conc1e16 n.type material materialGaN tc1.3 vsat2e7 material materialAlGaN tc0.3 vsat1.5e7 material materialSiC tc4.9 models polarization scale0.75 models srh auger fldmob cvt giga models temperature300 thermcontact namesubstrate temperature300 solve init solve vgate-3.0 solve vgate-3.0 vstep0.1 vfinal1.0 namegate solve b10.0 solve b10.1 solve b10.2 solve b10.3 solve b10.4 solve b10.5 solve b10.6 solve b10.7 solve b10.8 solve b10.9 solve b11.0 solve vgate0.0 log outfoutput.log solve vdrain0.0 vstep0.5 vfinal5.0 namedrain output temp save outfthermal.str7.2 关键参数速查表参数推荐值单位说明极化缩放0.7-0.8-表面态屏蔽效应GaN热导率1.3W/(cm·K)MOCVD外延典型值AlGaN热导率0.3W/(cm·K)随Al组分变化SiC热导率4.9W/(cm·K)单晶典型值GaN饱和速度2e7cm/s高场下电子速度AlGaN饱和速度1.5e7cm/s比GaN低栅功函数5.1eVNi/Au栅缓冲层掺杂1e15cm^-3半绝缘势垒层掺杂1e16cm^-3背景载流子7.3 新手最容易犯的五个错误第一个错误极化缩放因子设1.0。这是默认值但实际器件达不到会导致电流偏高甚至不收敛。改成0.75。第二个错误热导率单位搞错。GaN是1.3 W/(cm·K)不是130。写130温度几乎不变。第三个错误热耦合直接b11.0。必须从0逐步加每次0.1。第四个错误网格太粗。AlGaN层至少10个网格点沟道处间距小于1纳米。第五个错误模型冲突。polarization和piezoelectric不要同时用选一个。7.4 后续扩展方向跑通基础电热仿真后可以往几个方向扩展一是加陷阱模型模拟电流崩塌效应二是加栅极漏电模型分析肖特基泄漏三是做瞬态仿真看热时间常数四是做可靠性仿真比如高温反偏。每个方向都需要额外的模型和参数但基础框架是一样的。我个人在实际操作中的体会是GaN HEMT电热仿真最难的不是写代码而是理解每个参数背后的物理意义。你如果只是抄代码换个结构就不知道怎么改了。但如果你知道极化缩放因子对应表面态密度、热导率对应晶体质量调参数就有方向了。我建议新手先跑通一个结构然后故意改错几个参数看看结果怎么变这样理解最深。