3. 设备与Recipe的对应关系

在Recipe自动下发系统中,最容易踩的坑不是“下发失败”,而是“下发成功但语义错位”。刻蚀机的Recipe里有一组“Step+时间+气体流量+RF功率”,薄膜设备的Recipe里是“Layer+厚度+温度+前驱体脉冲”,光刻机的Recipe里是“曝光剂量+焦距+对准偏移”,清洗机的Recipe里是“药液浓度+温度+循环时间”。如果系统只用一个通用模板去套所有设备,就会出现字段对不上、单位不一致、步骤语义被曲解的问题。因此,理解不同设备类型Recipe的结构差异,并在此基础上做共性抽象,是自动下发系统能否真正落地的关键。

一、四类典型设备的Recipe结构差异

刻蚀设备的Recipe以“工艺步骤序列”为核心。一个典型的等离子刻蚀Recipe通常包含多个Step,每个Step定义气体种类与流量(如Cl₂ 80 sccm、CF₄ 20 sccm)、腔体压力(如10 mTorr)、RF功率(如Source 500 W、Bias 100 W)、温度(如ESC 60℃)和持续时间(如30 s)。它的结构本质是“时间轴上的多段参数集合”,步骤之间有严格的先后顺序,且部分参数在步骤切换时需要斜坡过渡。

薄膜沉积设备(如PECVD、ALD)的Recipe结构更偏向“层结构+循环单元”。以ALD为例,一个Recipe由若干Cycle组成,每个Cycle包含前驱体脉冲、吹扫、反应气体脉冲、吹扫四个阶段,关键参数是脉冲时间、吹扫时间、腔体温度和压力。它的核心不是“步骤顺序”,而是“循环次数×单循环厚度”决定最终膜厚。因此,Recipe中往往带有厚度目标值和循环计数逻辑,而不是单纯的时间序列。

光刻设备的Recipe结构则围绕“曝光场与对准”展开。它通常包含曝光剂量(mJ/cm²)、焦距偏移、对准标记选择、曝光场布局(Shot Map)、扫描速度等参数。与刻蚀、薄膜不同,光刻Recipe的很多参数是“空间相关”的,例如每个曝光场的对准偏移可能不同,剂量也可能随场位置做补偿。它的结构更接近“坐标+参数”的映射表,而不是线性的步骤链。

清洗设备的Recipe相对简单,但强调“化学与物理条件组合”。典型参数包括药液类型(如SC-1、DHF)、浓度配比、槽体温度、超声功率、循环时间、干燥方式(如IPA干燥)。它的结构是“阶段+条件”的集合,阶段之间可能有漂洗、干燥等过渡,但整体步骤数较少,参数维度也相对集中。

四类设备Recipe结构差异与共性抽象 刻蚀设备 结构:Step序列 Step1: Cl₂ 80sccm RF 500W / 10mTorr Step2: CF₄ 20sccm RF 300W / 30s Step3: 吹扫 / 排空 核心:时间轴多段参数 薄膜设备 结构:Cycle循环 Cycle: 前驱体脉冲 → 吹扫 → 反应气 → 吹扫 目标厚度: 10nm 循环数: 50 × 0.2nm 核心:循环×单层厚度 光刻设备 结构:坐标+参数映射 剂量: 30 mJ/cm² 焦距: -0.05 μm 对准偏移: X+2nm Shot Map: 52场 扫描速度: 300mm/s 核心:空间相关参数 清洗设备 结构:阶段+条件 药液: SC-1 / DHF 温度: 65℃ 超声: 40kHz / 200W 循环: 10min 干燥: IPA 核心:化学物理条件 共性抽象层:设备无关Recipe模型 RecipeID | 设备类型 | 步骤/循环/场 | 参数名 | 值 | 单位 | 目标值 | 容差 | 版本 统一语义:Step / Cycle / Field / Stage → 参数键值对 + 执行顺序 + 约束条件 下发映射:抽象模型 → 设备专属Recipe 刻蚀:Step序列展开 | 薄膜:Cycle计数展开 | 光刻:Shot Map逐场赋值 | 清洗:阶段条件绑定 刻蚀 薄膜 光刻 清洗

二、共性抽象:从“设备专属”到“可映射模型”

差异虽大,但所有Recipe都可以拆解为四个共性要素:执行单元、参数集合、顺序约束、目标与容差。执行单元是Recipe的最小调度粒度,刻蚀里是Step,薄膜里是Cycle,光刻里是Shot,清洗里是Stage。参数集合是每个执行单元下的键值对,例如“气体流量=80 sccm”“温度=65℃”。顺序约束描述执行单元之间的先后关系,可能是串行、循环或空间遍历。目标与容差则定义工艺结果的可接受范围,如膜厚10±0.5nm、刻蚀深度100±5nm。

基于这四要素,可以设计一个设备无关的中间模型。该模型不直接存储“Cl₂ 80sccm”这样的设备专属字段,而是存储“参数名=GasFlow_Cl2,值=80,单位=sccm,执行单元=Step1”。设备适配层负责把中间模型翻译成具体设备的Recipe格式。这样,当新增一台刻蚀机时,只需增加一个适配器,而不需要修改上层Recipe管理逻辑。

三、实际下发中的映射实现

以刻蚀设备为例,中间模型中的Step序列需要映射为设备可识别的Step编号和参数地址。假设设备Recipe格式要求Step编号从1开始连续,且每个Step必须包含GasFlow、Pressure、RF_Power、Time四个字段。适配器需要做三件事:字段名转换、单位换算、缺省值填充。例如中间模型中的“压力=10 mTorr”需要转换为设备要求的“Pressure=1.333 Pa”,因为该设备内部使用帕斯卡。如果中间模型未指定吹扫时间,适配器需要根据设备类型填入默认值,如“PurgeTime=5s”。

# 中间模型片段(YAML示例)
recipe_id: ETCH_001
equipment_type: Etcher
steps:
  - step_id: 1
    params:
      GasFlow_Cl2: {value: 80, unit: sccm}
      Pressure: {value: 10, unit: mTorr}
      RF_Power: {value: 500, unit: W}
      Time: {value: 30, unit: s}
  - step_id: 2
    params:
      GasFlow_CF4: {value: 20, unit: sccm}
      Pressure: {value: 10, unit: mTorr}
      RF_Power: {value: 300, unit: W}
      Time: {value: 30, unit: s}

# 适配器转换后(设备专属格式)
Step1: GasFlow_Cl2=80; Pressure=1.333; RF_Power=500; Time=30
Step2: GasFlow_CF4=20; Pressure=1.333; RF_Power=300; Time=30

对于薄膜设备,映射逻辑不同。中间模型中的“目标厚度=10nm,单循环厚度=0.2nm”需要适配器计算出循环数=50,并展开为50个Cycle。如果设备支持“循环次数”参数,则直接下发“CycleCount=50”;如果不支持,则需要生成50个重复的Cycle块。这里的关键是:中间模型只描述“要什么”,适配器决定“怎么给”。

光刻设备的映射更复杂,因为Shot Map是二维空间数据。中间模型可能只给出“曝光场布局=52场,剂量=30mJ/cm²”,适配器需要根据设备的光场坐标系生成每个场的坐标和剂量补偿值。如果某些场需要单独调整焦距,中间模型应支持“场级覆盖参数”,适配器再将其合并到对应场的参数集中。

实践建议:在定义中间模型时,不要试图穷举所有设备的所有参数。建议采用“核心参数+扩展属性”的方式:核心参数包括执行单元、参数名、值、单位、顺序,所有设备都必须支持;扩展属性用于存放设备专属的复杂结构,如光刻的Shot Map、薄膜的循环曲线。这样既能保证通用性,又能保留设备特异性。

四、判断映射是否正确的依据

下发完成后,不能只看“成功”状态。需要验证三个层面:第一,字段完整性,检查设备Recipe中是否所有必填字段都有值,且单位与设备要求一致;第二,语义一致性,例如中间模型中的“Step1”是否对应设备Recipe中的第一个执行单元,顺序是否一致;第三,目标可达性,例如薄膜Recipe的循环数×单循环厚度是否等于目标厚度,刻蚀Recipe的总时间是否在设备允许范围内。实际工程中,可以在适配器中加入校验规则,例如“压力值必须在0.1~100 mTorr之间”“RF功率不得超过设备上限”,一旦越界则拒绝下发并给出明确错误码。

不同设备类型的Recipe结构差异是客观存在的,但通过执行单元、参数集合、顺序约束、目标与容差这四个共性要素,可以构建出稳定的中间模型。自动下发系统的核心工作,就是在这个中间模型与设备专属格式之间做可靠的翻译和校验。理解这一点,后续的版本管理、变更追溯和跨设备复制才有坚实的结构基础。