
简介面向高功率磁控溅射研究与等离子体仿真的动态蚀刻模型资料结合元胞自动机与PIC/MCC方法精准模拟阴极在强电离放电下的蚀刻演变形貌模拟误差仅0.8%适用于科研人员、物理仿真工程师及等离子体材料加工方向研究生。内容系统讲解模型原理重点涵盖蚀刻形貌、等离子体密度、电场与磁场耦合以及连续高功率磁控溅射中的自溅射与气体稀薄效应优化并给出Python代码实现与逐段解释包含类初始化、泊松求解、蚀刻步骤、等离子体更新等关键模块便于读者复现实验、调整参数并扩展应用。资源为1个PDF文件大小约880KB以论文复现分析、代码框架和逻辑说明为主。已有141人学习适合用于理解高功率磁控溅射动态蚀刻机制、评估不同物理参数对蚀刻效果的影响并为工艺参数优化和实验设计提供理论支撑。1. 蚀刻不均匀这个痛点逼着我把CA-PIC/MCC模型搬进了高功率磁控溅射仿真搞高功率磁控溅射HIPIMS这几年最让我头疼的不是电源参数怎么调也不是靶材怎么选而是阴极靶面的蚀刻形貌。靶材用一段时间后你会发现侵蚀区域往往集中在磁场上方的环状区域中间和边缘几乎不动靶材利用率低得让人心疼。更麻烦的是这种不均匀蚀刻会反过来影响磁场分布和等离子体参数导致后续沉积薄膜的均匀性越来越差形成一个恶性循环。在过去我们做靶面蚀刻预测基本靠经验公式或者静态模型。所谓静态模型就是假设等离子体参数和磁场分布在整个溅射过程中保持不变然后一次性算出靶面某个位置的蚀刻速率。这种做法在低功率直流溅射里勉强够用但在HIPIMS这种脉冲高功率模式下问题很大——因为HIPIMS的峰值功率密度可以达到几千瓦每平方厘米等离子体密度在脉冲内剧烈变化鞘层结构也在动态调整静态假设完全站不住脚。于是我就开始尝试把CA-PIC/MCC方法引入到这个场景里。CA-PICCell-Adjacent Particle-In-Cell和MCCMonte Carlo Collision组合本质上是用粒子模拟来追踪等离子体中的离子和电子运动同时用蒙特卡洛方法处理碰撞过程。相比传统的流体模型PIC方法能更真实地反映鞘层动力学和离子能量角度分布相比纯PICCA网格的权重分配方式在边界处理上更稳定计算效率也更高。这篇内容我打算从物理模型构建、数值实现细节、动态蚀刻的迭代算法、再到具体代码逻辑完整走一遍这条技术路线。适合正在做磁控溅射仿真、等离子体与表面相互作用模拟或者对PIC-MCC方法感兴趣的工程师和研究生参考。涉及的内容偏底层但我会尽量用项目里实际跑出来的经验和数据来讲避免那种看起来什么都说了、实际什么都没说的写法。2. HIPIMS阴极蚀刻的动态特性究竟比静态模型复杂在哪里2.1 动态鞘层与离子轰击的瞬时响应先理清一个概念HIPIMS之所以蚀刻行为复杂核心在于它的脉冲特性。一个典型HIPIMS脉冲宽度在50到200微秒之间占空比通常不超过10%。在脉冲开启阶段电压快速上升到几百伏甚至上千伏阴极附近迅速建立鞘层离子被加速轰击靶面。这个过程不是瞬间稳定的鞘层厚度和电势分布都在随时间演变。拿我实际跑的一个案例来说靶材是钛靶背景气体是氩气工作气压0.5 Pa脉冲电压800 V。在脉冲开始的几微秒内鞘层厚度可以从初始的几毫米快速压缩到亚毫米量级离子通量和能量也随之剧烈变化。如果模型仍然假设鞘层处于稳态那么计算出的溅射产额和蚀刻速率误差会很大特别是在脉冲前沿阶段这个阶段的离子能量往往高于稳态值对靶面蚀刻的贡献占比相当可观。动态蚀刻模型要捕捉的就是这个瞬态过程对靶面每个网格单元的累计轰击效果。换句话说我们要把等离子体模拟的结果离子通量、离子能量分布作为一个时变输入传递给靶面蚀刻的计算模块然后根据蚀刻深度反过来更新靶面边界再来影响下一次的等离子体模拟。这是一个双向耦合同步的过程。2.2 靶面形貌演化对磁场和等离子体的反作用靶面一旦出现凹凸不平的蚀刻形貌最直接的影响就是表面几何形状改变了而磁场在空间中的分布是基于原始靶面结构设置的。蚀刻沟槽的出现会让磁力线在靶面附近的路径发生变化尤其是磁力线与靶面的夹角这会直接影响电子在磁场中的约束效率进而改变电离区域的位置和密度分布。这个反作用机制我之前用静态模型的时候完全没考虑后来发现实验里有个明显现象靶材用到中后期放电颜色和阻抗都会发生变化辉光区域会在靶面移动。这就是因为靶面形貌变了磁场分布变了等离子体的约束区域跟着漂移了。如果不做动态耦合模型根本无法预测这种靶面越烧越偏的演化过程。在我们的模拟架构里这个双向耦合是通过一个迭代循环实现的PIC/MCC算等离子体场提取靶面边界上的离子轰击参数然后用这些参数计算每个网格单元的溅射蚀刻深度更新靶面几何边界再用新的边界重新划分网格、重算磁场分布、继续下一轮PIC/MCC模拟。每一步的步长需要控制好不能太大否则蚀刻形貌更新过快会导致数值不稳定。3. 从零搭建动态蚀刻模拟物理模型与数值方法的耦合逻辑3.1 等离子体区域的PIC/MCC建模PIC方法的基本思路大家应该不陌生把等离子体中的带电粒子电子、离子当作大量宏粒子macro-particle来处理每个宏粒子代表大量真实粒子在电磁场中运动。粒子的运动方程用牛顿第二定律求解空间电荷和电流密度通过权重分配到网格节点上再求解泊松方程得到自洽电场。CA-PIC和传统PIC的区别在于权重分配方式。传统PIC常用线性插值CICCloud-in-Cell而CA方法更注重在单元边界处的电荷守恒对存在强电场梯度的鞘层区域CA方式能减少数值噪声避免粒子在网格间穿越时产生虚假振荡。在HIPIMS的阴极鞘层这种高场强、高密度梯度的区域这个优势非常明显。MCC则负责处理碰撞过程。电子与原子的弹性碰撞、激发碰撞、电离碰撞离子与原子之间的弹性碰撞和电荷交换碰撞都在每一步计算中通过随机数抽样来判断是否发生。碰撞截面数据来源于已发表的实验数据库比如LXCat项目里整理的氩气碰撞截面数据。抽样逻辑很简单根据粒子当前位置的气体密度、粒子速度、碰撞截面计算碰撞概率然后生成随机数判断是否发生碰撞以及碰撞类型。需要注意的是HIPIMS等离子体密度很高脉冲峰值时刻可达10^18到10^19每立方米量级这意味着要追踪的宏粒子数量非常庞大。我在模型里采用了可变权重技术让电子宏粒子的权重在不同空间区域动态调整在鞘层区域细化权重的空间分辨率在等离子体主体区域放大权重以减少粒子总数。这么做可以在保证鞘层精度的前提下把粒子总量控制在可接受范围。3.2 靶面溅射与蚀刻速率的计算接口靶面蚀刻速率的核心公式是溅射产额函数。对于给定的入射离子种类、入射能量、入射角度和靶材材料溅射产额可以通过经验公式或者SRIMStopping and Range of Ions in Matter模拟数据来获得。常用的经验公式是Yamamura公式Y(E, θ) 0.042·Y_0(E)·Q(X)/S(θ)其中Y_0是垂直入射时的溅射产额Q(X)是核阻止截面相关的函数S(θ)是角度依赖项。角度依赖非常关键——在HIPIMS中离子入射方向并非完全垂直于靶面鞘层电场在靶面边缘和沟槽区域会弯曲导致离子以一定倾斜角度轰击靶面而倾斜入射的溅射产额通常比垂直入射高一个量级左右。在我们的模型里每当PIC/MCC计算完成一个时间步就统计每个靶面网格单元的入射离子通量、平均能量、平均入射角度然后查溅射产额表计算出该单元的溅射速率再乘以时间步长得到蚀刻深度增量。蚀刻深度数据存储在靶面网格上每个时间步累加一次形成动态蚀刻深度场。这里有一个工程上容易栽跟头的细节溅射产额对离子能量非常敏感而在鞘层中离子到达靶面时的能量并不等于外加电压对应的能量。因为离子在穿越鞘层时会经历碰撞电荷交换碰撞会让一部分离子以较低能量到达靶面所谓fast neutral和slow ion的差别。MCC模块必须要记录每个离子到达靶面的实际能量然后按实际能量查溅射产额而不是简单用外加偏压来算。4. 动态蚀刻模型的关键实现步骤与代码逻辑拆解4.1 初始磁场与网格生成实现的第一步是生成模拟区域的几何模型和网格。对磁控溅射来说磁场分布是整个模拟的基石。我用的是一个简化的二维轴对称模型中心轴为对称轴径向为r方向轴向为z方向。磁场可以通过解析偶极子模型生成更好的做法是直接从实际磁体的有限元磁场数据中读取然后插值到PIC网格上。网格划分要特别注意靶面附近的加密。鞘层的特征长度在HIPIMS条件下通常只有几毫米甚至更小要精确分辨鞘层电势分布网格尺寸需要小于德拜长度。我实际的网格布局是径向上均分256个网格轴向在靶面附近0到5毫米范围加密到0.1毫米网格间距再往阳极方向逐渐过渡到1毫米间距总共约180个轴向网格点。这种非均匀网格能有效节省计算资源。初始等离子体设置为低密度均匀背景等离子体电子密度1×10^14每立方米电子温度3 eV离子温度0.1 eV。宏粒子的初始位置、速度通过随机数生成满足麦克斯韦分布。注意初值不能给太大否则模型启动阶段会因空间电荷不平衡产生剧烈振荡导致数值发散。4.2 主循环PIC推进、碰撞抽样与场求解主循环是整个模拟的核心每个时间步大约执行以下流程根据当前电场推动电子和离子宏粒子的位置和速度蛙跳格式检查粒子是否打到靶面、阳极、腔壁等边界进行边界处理吸收或二次电子发射执行MCC碰撞抽样更新粒子的能量和方向将粒子电荷分配到网格节点求解泊松方程获得新的电势和电场分布统计靶面每个单元的离子轰击参数计算蚀刻增量更新靶面几何边界时间步长的选取需要满足CFL条件即粒子在一个时间步内移动的距离不能超过一个网格长度。在我的配置下电子速度大约在10的6次方米每秒量级最小网格0.1毫米所以时间步长取1×10的-11次方秒。一个HIPIMS脉冲200微秒理论上需要2000万个时间步这个计算量太大了根本跑不动。我的做法是把模拟时间压缩只模拟脉冲内的关键阶段比如脉冲中期的20微秒并假设这个阶段对蚀刻的贡献具有代表性再通过占空比换算整个沉积过程的等效蚀刻速率。这是一种工程性的妥协严格意义上并不完美但考虑到计算资源和工程需求的平衡是目前可接受的方案。在实际项目里我们通常先跑通单脉冲内的动态演化再提取关键统计量做长时间外推。4.3 靶面蚀刻深度演化的数值实现靶面蚀刻深度存储在靶面网格的每个单元上。考虑一个靶面网格单元其面积为ΔA在一个时间步内接收到N_ion个离子平均每个离子携带的能量为E_avg平均入射角为θ_avg则蚀刻体积增量为ΔV N_ion · Y(E_avg, θ_avg) · M_atom / ρ其中M_atom是靶材原子质量ρ是靶材密度。蚀刻深度增量就是ΔV除以单元面积ΔA。这个计算假设被溅射出的原子立刻离开靶面区域不再返回沉积——但实际在HIPIMS中部分溅射原子会被电离并回流到靶面这个回流效应我们需要额外处理。为了防止蚀刻面过度锯齿化我对蚀刻深度做了一维平滑处理。在每个时间步更新完深度后对相邻网格单元做三点的保形平滑滤波器保留大尺度形貌的同时抑制细小数值噪声。如果不做这个平滑蚀刻深度场会逐渐出现高频振荡导致后续网格重构时出现负体积等严重几何错误。下面给出蚀刻更新的核心伪代码# 靶面蚀刻深度更新简化版 # target_depth: 数组长度等于靶面径向网格数 # ion_flux: 每个网格单元累计的离子数量 # ion_energy: 每个网格单元累计的离子能量总和 # ion_angle: 每个网格单元累计的离子入射角cos值 import numpy as np def sputter_yield(energy, angle_cos, materialTi): 基于Yamamura公式的溅射产额查询 # 实际实现中会查表或内嵌经验公式 # 这里以简化函数示意 yield_0 0.6 # 垂直入射时的溅射产额单位原子/离子 angle_factor angle_cos**(-1.5) # 简化角度依赖 return yield_0 * angle_factor * min(1.0, energy / 500.0) def update_erosion(target_depth, ion_flux, ion_energy, \ ion_angle_cos, dt, density4.5e28, atomic_mass47.87e-27): target_depth: 蚀刻深度数组米 ion_flux: 各单元累计离子数 ion_energy: 各单元离子累计能量eV ion_angle_cos: 各单元离子入射角余弦均值 dt: 时间步长秒 density: 靶材原子数密度1/m^3Ti约为 4.5e28 atomic_mass: 靶材原子质量kg vaporized_volume np.zeros_like(target_depth) for i in range(len(target_depth)): if ion_flux[i] 1: continue # 没有离子轰击的网格不动 # 平均能量和平均角度 avg_energy ion_energy[i] / ion_flux[i] avg_cos max(0.1, ion_angle_cos[i] / ion_flux[i]) # 溅射产额 Y sputter_yield(avg_energy, avg_cos) # 溅射出的原子数 sputtered_atoms ion_flux[i] * Y # 蚀刻体积增量单位m^3 delta_volume sputtered_atoms * atomic_mass / (density * atomic_mass) # 上式简化为 sputtered_atoms / density delta_volume sputtered_atoms / density # 蚀刻深度增量体积除以单元面积 # 单元面积在轴对称模型中为 2*pi*r*dr dr 1e-3 # 径向网格间距米 radius (i 0.5) * dr cell_area 2 * np.pi * radius * dr delta_depth delta_volume / cell_area target_depth[i] delta_depth # 平滑滤波抑制数值振荡 smoothed target_depth.copy() for i in range(1, len(target_depth)-1): smoothed[i] 0.25 * target_depth[i-1] \ 0.5 * target_depth[i] \ 0.25 * target_depth[i1] return smoothed这段代码的实际作用和工程简化都写得很清楚了。需要强调的一点是代码里溅射产额函数我是随手写了个简化版本实际项目中千万不能用这种表达式一定要用经过SRIM标定的查表数据或者Yamamura拟合参数。否则算出来的蚀刻速率会严重偏离实验值。4.4 靶面边界更新与网格重构策略靶面网格更新到一定深度后原来的规则网格边界已经不再贴合实际靶面形貌了。这时候需要重新生成网格或者对边界网格做变形处理。我采用的方法是边界拟合网格更新保持网格拓扑不变只移动靶面边界线附近网格节点的位置使其贴合新的蚀刻面然后在每个时间步重新计算磁场在新节点上的数值。这种策略比完全重新划分网格要快得多而且能保持场求解矩阵的结构性方便用迭代求解器快速收敛。边界节点更新时需要做光顺处理避免节点位移过大导致网格扭曲。我设了一个安全阈值当某个节点位移量超过局部网格尺寸的30%时强制触发全局网格重划。实测下来一个完整模拟跑完大概需要触发两到三次重划计算代价可以接受。5. MCC碰撞处理中几个容易翻车的细节5.1 碰撞概率计算的截断问题MCC碰撞概率的公式是P 1 - exp(-n_g·σ·v·dt)其中n_g是气体密度σ是碰撞截面v是粒子相对速度dt是时间步长。在HIPIMS高密度等离子体条件下如果时间步长偏大计算出的碰撞概率可能非常接近甚至超过1导致抽样失效。我的经验是设置一个截断阈值——如果计算出的碰撞概率超过0.2就把这个时间步内的碰撞概率限制在0.2以下具体做法是把时间步细分多次处理碰撞概率。这样虽然增加了计算量但保证了碰撞抽样在统计上仍然正确。直接截断到0.2会引入系统偏差细分步长才是严格的做法。5.2 电荷交换碰撞对离子能量分布的显著影响在磁控溅射的工作气压范围0.1到1 Pa离子在穿越鞘层过程中的平均自由程大约是几毫米到厘米量级而鞘层厚度也在这个量级。这意味着相当一部分离子在加速过程中会与原子的电荷交换碰撞。碰撞后的结果是一个新产生的慢离子能量接近0附近和一个快速中性原子。慢离子会重新被电场加速导致到达靶面的离子能量谱明显偏离单能分布。模拟结果统计下来在0.5 Pa气压下到达靶面的离子中约有40%在最后一次电荷交换碰撞后经历了完整的鞘层加速其余离子能量分布在零到最大电压之间。如果我们只取平均能量来算溅射产额误差会非常离谱——因为溅射产额对能量的依赖是高度非线性的低能部分的权重在于大量低能离子贡献的溅射量非常小高能部分的权重被平均后拉低。正确做法是按能量分箱统计溅射产额再逐箱积分。我在代码实现中对每个靶面网格维护了16个能量箱的统计信息效果明显好于单平均值的计算。6. 蚀刻形貌的二维扩展从简化假设到更真实的形貌演化6.1 一维vs二维的取舍逻辑目前在项目里最早跑通的版本是一维蚀刻模型只考虑径向一个维度上的蚀刻深度变化靶面在轴向位置固定不变。一维模型能很好地把PIC/MCC耦合和蚀刻更新的逻辑跑通计算量小适合参数扫描和算法验证。但一维模型的硬伤在于无法处理沟槽内的离子再沉积和角度效应——沟槽边缘的溅射原子会以抛物线轨迹飞行部分原子会落回沟槽侧壁这种自发回填现象直接影响最终形貌的深度和宽度。二维模型把靶面处理成轴对称下的二维曲面蚀刻深度在两个方向r和z上更新。这样可以真实反映沟槽的形成过程和侧壁的倾斜角度。代价是计算量成倍增加边界处理复杂度也上了一个台阶。我的建议是如果刚入门先把一维版本跑通再逐步扩展。6.2 二维形貌更新时的数值挑战二维蚀刻计算最重要的问题是几何守恒和对流效应。当靶面边界发生位移后原来的PIC网格需要相应变形否则会出现粒子穿透靶面或者电荷分配不对称的数值泄漏。我在实现中用到了任意拉格朗日-欧拉ALE方法的思想——网格节点随边界运动但内部电场求解仍然在欧拉框架下进行。这样既能保持边界贴合又不必完全重构计算域。二维情况下还有一个必须处理的问题是溅射原子的飞行动力学。靶面上某点溅射出的原子并不会全部飞出一部分会撞到沟槽侧壁或者被反射回来。我们在模型中引入了发射-降落统计模块根据溅射原子在靶面的发射位置和速度方向分布追踪这些中性原子在靶面附近空间的飞行轨迹统计它们在靶面的落点分布。这个分布会与蚀刻计算耦合——某个网格单元的净蚀刻量等于溅射出去的量减去从其他位置落回来的量。这一块的计算细节非常繁琐如果展开讲可以单独写一篇长文。简单来说我采用的是射线追踪法把每次溅射事件抽象为从靶面发射点出发的半空间方向分布然后用射线与靶面几何求交算出落点。这个过程的计算频率不需要每个时间步都做可以每隔若干个时间步统计一次做一个时间窗口内的平均分布既节省资源又足够精确。7. 高功率工况下的模拟实践参数设置、结果分析与经验教训7.1 一组典型模拟的参数配置和结果跑通整个模型后我用一组实际参数做了验证测试。靶材钛Ti工作气体氩气Ar气压0.5 Pa。外加脉冲电压800V脉冲频率500 Hz脉宽100微秒峰值电流密度约0.8 A/cm²。磁场由钕铁硼磁体产生靶面中心磁感应强度约50 mT。模拟输出的蚀刻深度分布显示在径向方向存在明显的W形蚀刻特征中心区域蚀刻深度较浅约在磁力线平行靶面的径向位置约距中心30-40毫米处出现两个明显的蚀刻峰深度约为中心区域的2.5倍。这个分布特征与实验观测的靶面环形侵蚀沟完全吻合验证了模型的基本合理性。峰值蚀刻速率约为10的-10次方米每秒换算后在一个小时的连续沉积运行中靶面理论蚀刻深度应该达到几十微米量级。实测靶面形貌轮廓仪测得的深度约28微米和模拟预测的32微米存在约15%的偏差。这个偏差主要来源于溅射产额表的不准确性以及中性原子回流效应的简化处理在工程预测场景下已经算可以接受的结果。7.2 参数敏感性分析哪些量对结果影响最大参数扫描下来影响蚀刻形貌的最敏感参数依次是磁场分布、工作气压、脉冲电压幅值。磁场分布直接决定了电离区域和离子轰击位置的集中程度略微改变磁体高度就会让蚀刻峰位置偏移好几毫米。工作气压则会通过影响碰撞频率来调节离子能量到达靶面时的分散度气压越高离子能量谱越宽峰值蚀刻速率反而下降。脉冲电压的作用相对线性更高的电压带来更高的离子能量和溅射产额但不会显著改变形貌分布特征。7.3 模拟时间步与计算资源的平衡关于计算量我可以给一个直观的数据参考使用单块NVIDIA A100 GPU加速PIC粒子推进部分模拟一个完整脉冲的40微秒物理时间耗时约5个小时。如果做一次完整的参数扫描比如10组参数运行一个多月是常事。所以建议一定要做好任务管理优先用一维模型做参数粗扫锁定关键参数区间后用二维模型精算三到五组这样能大幅节省宝贵的计算资源。这里分享一个实际调试过程中的心得在验证模型正确性时千万不要一上来就跑完整的高功率工况。先把外加电压降到100V左右让等离子体密度降低一个量级这样碰撞少、鞘层结构简单、计算结果容易对照理论值。等模型行为符合预期了再逐级加压到目标工况。这个方法帮我避开了不少看起来结果很合理、其实是数值误差巧合的坑。8. 模型验证与可靠性判断不能只靠图像像来定义成功搞模拟的人有个通病——看到云图分布符合直觉就觉得模型对了。但动态蚀刻模型这种多物理场耦合的工具验证必须分层次一步步做。第一层验证是电磁场和等离子体基本参数。在低电压工况下模拟出的鞘层厚度和Child-Langmuir定律的理论值对比误差应该在10%以内。电子密度分布和Langmuir探针测量结果对比峰值位置和量级要吻合。第二层验证是溅射产额的标定。用已知离子能量和入射角度的条件跑仿真对比靶面蚀刻速率的绝对数值是否与SRIM预测一致。这一层不通过的话后续所有形貌演化结果都不用看。第三层验证才是和实际靶面形貌对比。这里要注意的是实验靶面的初始粗糙度、靶材内部杂质分布等因素都会影响最终形貌所以对比时不要期望模拟和实验完全重合重点是看沟槽位置、宽度和深度量级是否落在可接受范围内。我在实际操作中还发现一个容易忽视的问题靶面在长时间运行后温度升高会改变靶材的溅射性能。高温下靶材的溅射产额并没有明显变化但靶材的机械应力状态和微观结构会发生变化形貌演化可能出现微裂纹等非线性特征。目前的模型还没有耦合热效应这是后续工作的一个明确方向。本文还有配套的精品资源点击获取