资讯详情

资讯详情

建站行业动态 · 设计趋势 · 数字化升级干货

SEMI E94 深度解析:Control Job 才是 Fab 里的“隐形指挥官”,但 90% 的工厂用错了

SEMI E94 深度解析:Control Job 才是 Fab 里的“隐形指挥官”,但 90% 的工厂用错了 SEMI E94 深度解析Control Job 才是 Fab 里的“隐形指挥官”但 90%的工厂都用错了摘要在 GEM300 体系里E87 管“盒子”、E90 管“片子”、E40 管“单次工艺”而E94Control Job Management是管“一整批任务”的总调度。它决定了一堆 Process Job 谁先跑、谁后跑、哪些晶圆该进哪个腔体。但现实是90% 的 Fab 把调度逻辑写在了 MES 里E94 在设备端形同虚设而设备商更是乐得只实现一个空壳FAT 时糊弄过去。本文拆解 E94 的 8 个核心状态、3 种调度模式以及 FAT 现场怎么测出谁是真的、谁是假的。一、E94 在 GEM300 里到底站哪先回顾一下你已有的知识点标准管什么类比E87FOUP装卸、LoadPort状态机仓库门禁E90单片晶圆位置、轨迹GPS 追踪E40单个 Process Job 的生命周期炒一盘菜E94多个 Process Job 的编排调度**安排一桌宴席的上菜顺序E94 的核心对象是Control Job CJ。一个 CJ 可以包含多个 PJ Process Job决定先跑哪个 PJ 对应哪个 Recipe、哪批晶圆哪个 FOUP 的晶圆先进哪个腔体一个 PJ 完成后下一个 PJ 什么时候启动没有 E94设备就是个“傻执行器”——Host 说一步它做一步没有自主调度能力。二、Control Job 的 8 个核心状态SEMI E94 定义的 Control Job 状态机比 E40 简单但每个状态都有明确的职责边界状态含义在防什么QUEUEDCJ 已创建等待执行资源防止 Host 连发多个 CJ 时设备不知道先执行哪个SELECTING正在选择用哪些 Substrate 执行哪个 PJ防止乱选片——从 FOUP 里挑晶圆必须有明确规则ACTIVECJ 正在执行至少一个 PJ 在跑 防止 CJ 还在选片时就上报“执行中”PAUSEDCJ 整体暂停所有 PJ 都暂停防止暂停期间还有 PJ 在偷偷跑COMPLETECJ 所有 PJ 都已完成防止还有 PJ 没跑完就报“整批完成”ABORTEDCJ 被紧急终止防止异常时还继续往下跑STOPPEDCJ 有序停止保留半成品和 Abort 的区别Stop 是 “收摊”Abort 是 “逃跑”REMOVEDCJ 已从设备内存中清除防止残留数据影响下一次排产状态流转图QUEUED │ ▼ SELECTING ←── (选片失败回 QUEUED 重选) │ ▼ ACTIVE ──┬── PAUSED ──┬── ACTIVE (Resume) │ │ │ │ └── STOPPED │ │ │ └── COMPLETED │ └── ABORTED │ │ ┌──────────────────┘ ▼ REMOVED三、E94 最独特的状态SELECTING这是 E94 和 E40 最大的区别点。3.1 SELECTING 在干什么当 CJ 从QUEUED进入SELECTING时设备需要决定从哪个 FOUP 里取哪些晶圆这些晶圆分配给哪个 PJ用哪个 Recipe分配结果要上报给 HostS15F3 Select Substrate的响应。这不是简单的“按顺序取片”——它有明确的调度规则。3.2 三种调度模式设备商糊弄重灾区SEMI E94 定义了三种 Substrate Selection 模式模式谁决定选片设备商实现难度常见糊弄ManualHost 明确指定每片晶圆对应哪个 PJ低设备只管执行不校验 Host 指定的合法性**Auto-Character设备根据 Recipe 的“特征”自动选片中需要解析 Recipe 参数直接跳过假装选了Auto-Select设备完全自主决定执行顺序高需要调度算法根本不支持或只返回“全选”Manual 模式最常见Host 发S15F1 Create CJ时明确指定CJ_ID: CJ_001 PJ_001 (Recipe A) → FOUP_1, Slot 1-5 PJ_002 (Recipe B) → FOUP_1, Slot 6-10 PJ_003 (Recipe A) → FOUP_2, Slot 1-8设备要做的事确认 FOUP_1 在 LoadPort 上E87 状态对确认 Slot 1-5 确实有晶圆E90 SlotMap 对确认 Recipe A 已装载E40 前提回复S15F2确认分配结果糊弄手法设备不校验 FOUP 和 SlotMap直接回ACK0。等 Robot 去取片时才发现 Slot 是空的。Auto-Character 模式最容易被跳过Host 发S15F1时只指定 Recipe 特征不指定具体 SlotCJ_ID: CJ_002 PJ_001 (Recipe A, 需要 5 片, 要求 SlotMap 中状态为 Occupied)设备要自己扫描 FOUP 的 SlotMap挑出 5 片符合条件的晶圆。糊弄手法设备直接返回“选了前 5 个 Slot”不管 SlotMap 里实际有没有片。Auto-Select 模式极少设备商支持设备完全自主决定哪个 FOUP 先处理、哪个腔体跑哪个 Recipe、怎么平衡负载。糊弄手法直接不支持此模式Host 发过来直接回SELECTION_FAILED。四、E94 与 E40 / E90 的协作关系这是最容易混乱的地方。一张图说清除Control Job (E94) CJ_001: 跑 50 片晶圆 │ ├── Process Job 1 (E40) PJ_001: Recipe A, FOUP_1 的 Slot 1-25 │ ├── Substrate 1 (E90) → PM1 → Process Complete │ ├── Substrate 2 (E90) → PM2 → Process Complete │ └── ... │ ├── Process Job 2 (E40) PJ_002: Recipe B, FOUP_2 的 Slot 1-25 │ ├── Substrate 26 (E90) → PM1 → Process Complete │ └── ... │ └── Process Job 3 (E40) PJ_003: Recipe A, FOUP_1 的 Slot 26-50 └── ...关键约束CJ 的COMPLETE必须等所有 PJ 都COMPLETECJ 进入PAUSED时所有 PJ 必须同时进入PAUSED不能有的跑有的停CJ 的 Substrate 分配结果必须和 E90 的 SubstrateID 完全一致五、设备商最常见的 5 种糊弄糊弄1CJ 只是 PJ 的“马甲”设备商不实现真正的 CJ 调度只是把单个 PJ 包了一层 CJ 壳假 E94 实现defcreate_cj(cj_id,pj_list):iflen(pj_list)1:execute_pj(pj_list[0])# 直接执行没有调度returnACK_OKelse:returnACK_REJECT# 多个 PJ 就不支持了怎么识破建一个包含 3 个 PJ 的 CJ看设备是否真的按顺序执行还是只跑一个。糊弄2SELECTING 瞬间完成真实的 SELECTING 需要扫描 SlotMap、校验 Recipe、确认 LoadPort 状态。但糊弄版直接秒回defselecting(cj):time.sleep(0.1)# 假装想了一下returnSELECTION_COMPLETE# 实际上什么都没校验怎么识破在 SELECTING 阶段故意拔掉 FOUP看设备是否报错。真实会检测到 FOUP 不在并报SELECTION_FAILED。糊弄3PAUSED 只停了当前 PJCJ 进入PAUSED时按标准所有 PJ 都必须暂停。但糊弄版只停了正在跑的那个defpause_cj(cj_id):forpjincj.pj_list:ifpj.statePROCESSING:pj.pause()# 只停了正在跑的# QUEUED 的 PJ 不管它们后面可能自己偷偷跑起来怎么识破CJ 有 3 个 PJ 1 个在跑2 个在 QUEUED发S15F5 Pause CJ然后看 QUEUED 的 PJ 是否也被锁住。糊弄4COMPLETE 不看 PJ 状态CJ 上报COMPLETED但里面有个 PJ 实际上ABORTED了。怎么识破故意让一个 PJ 的工艺失败比如拔 Recipe看 CJ 的最终状态是COMPLETED还是ABORTED。糊弄5不支持 Auto-Character / Auto-SelectHost 指定 Auto-Character 模式设备直接回SELECTION_FAILED说“不支持”。怎么识破看设备商的 GEM300 声明文档如果写了“支持 E94”但不支持自动选片那就是半截子实现。六、FAT 现场 E94 必测 6 条测试1多 PJ 顺序执行创建 CJ绑定3个PJPJ1→Recipe A, PJ2→Recipe B, PJ3→Recipe AStart CJ观察执行顺序PJ1 完成后 PJ2 才开始PJ2 完成后 PJ3 才开始确认每个 PJ 的 Substrate 分配正确测试2SELECTING 阶段异常注入创建 CJ指定 FOUP_1 的 Slot 1-5在设备进入 SELECTING 时拔掉 FOUP_1预期设备报 SELECTION_FAILEDCJ 回 QUEUED 或 ERROR测试3CJ Pause 全局生效CJ 有 3个 PJ PJ1 在 PROCESSINGPJ2 / PJ3 在QUEUED发S15F5 Pause CJ预期PJ1 进入 PAUSEDPJ2 / PJ3 被锁住不能启动发 S15F5 Resume CJ预期PJ1 恢复完成后 PJ2 启动测试4PJ 失败导致 CJ 失败CJ 有2 个 PJPJ1 正常完成PJ2 工艺中故意制造异常拔传感器预期PJ2 进入 ABORTEDCJ 进入 ABORTED不是 COMPLETED测试5Auto-Character 选片验证创建 CJ指定 Auto-Character 模式要求选 5 片FOUP 实际只有 3 片晶圆预期SELECTON_FAILED不够 5 片测试6CJ 完成后 SubstHistory 完整CJ 跑完所有 PJ用 S12F4 查每片晶圆的 SubstHistory预期所有晶圆的轨迹完整时间戳单调状态正确七、为什么 90% 的工厂用错了 E94现实情况是这样的MES 抢了 E94 的活大部分 Fab 的 MES 系统在顶层做排产调度直接给设备下发“先跑这个 PJ再跑那个 PJ”。设备端的 E94 被架空只当传话筒。设备商故意不支持实现完整的 E94 调度逻辑成本很高设备商知道 Host 不会用就只做最小实现过 FAT。Host 软件架构限制很多 EAP 系统的 Host 端代码根本没实现 E94 的消息处理S15F1~S15F5只实现了 E40 的 S16 系列。结果E94 成了 GEM300 里最被低估的标准。它本该让设备具备“自主调度”能力但实际上大多数设备只是个“被遥控的机器人“。八、总结Control Job 是 GEM300 体系里的”总指挥官“但它的价值被严重低估了E87确保盒子放对了E90确保片子追踪对了E40确保单次工艺跑对了E94确保整批任务调度对了没有 E94设备就是个”单步执行器“有了 E94设备才具备真正的”批量自主调度“能力。下次 FAT 时别只测 E40 的 Pause / Resume 了问设备商一句”你的 E94 支持 Auto-Character 选片吗SELECTING 阶段如果 FOUP 被拔掉CJ 会怎么处理“如果他愣住了你就知道——这又是一个”半截子 GEM300”。

相关资讯