尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

SEMI E40标准详解:Process Job状态模型与半导体设备自动化实战

发布时间:2026/9/17 12:53:26

资讯中心
01
ARTICLE

SEMI E40标准详解:Process Job状态模型与半导体设备自动化实战

SEMI E40标准详解:Process Job状态模型与半导体设备自动化实战
不少做半导体设备自动化的工程师第一次接触SEMI E40标准时都会被那一张Process Job状态迁移图搞得有点懵。它不像SECS-II消息那样直接告诉你怎么收发数据也不是一套能直接上手的API。它描述的是一件“加工任务”从创建到销毁、从等待到执行、从暂停到终止的完整生命周期以及背后的状态流转规则。说白了E40解决的核心问题是设备内部到底认为当前这批活走到哪一步了上位系统应该用什么样的标准和它对话双方怎么保证对这个“当前进度”的理解始终一致。我是在做EAP和MES对接时真正被E40“教育”过一次的。当时设备报了一个Process Job Completed事件但MES侧怎么也收不到最后排查发现是状态机在PAUSED之后又收到Start设备直接拒掉了而上位机还在傻等确认。从那之后我就意识到只看SECS/GEM还不够必须把E40的状态模型吃透才能跟设备商在一个频道上沟通也才能在联调现场少踩几个坑。这篇文章就把我对E40加工任务状态模型的理解、实际联调经验和避坑技巧整理出来给正在做Fab自动化的兄弟们一个参考。1. SEMI E40到底解决什么问题1.1 从“能收发消息”到“能管住加工任务”很多项目一开始能通上SECS收发S1F13、S6F11都正常大家就觉得“通信没问题了”。但真正把设备挂到EAP/MES系统里跑生产时才会发现消息能通离任务能控还差着十万八千里。问题出在哪里缺少一套双方都认的“业务状态语言”。SEMI E40就补上了这一环。它定义了一套标准的加工任务状态模型规定了Process Job加工任务有哪些状态哪些命令可以在哪些状态下触发每个状态变化对应什么事件。E5/SECS-II告诉你消息长什么样E30/GEM告诉你事件怎么报告而E40告诉你这些事件背后的状态语义是什么、合法迁移路径是什么。三者配合才能真正做到一个任务从上位机下发到设备执行完全程状态可追溯、可对齐。还有一个容易混淆的点E87定义的是设备状态模型描述设备整机处于什么状态比如EQ_IDLE、EQ_PROCESSING、EQ_PAUSED、EQ_ABNORMAL而E40定义的是设备内部某个加工任务的状态。一台设备可以做多腔体、多任务并行设备状态和设备内每个Process Job的状态并不是一对一的。联调时如果拿E87的设备状态去推断某个Process Job是否完成很容易出大问题。1.2 Process Job到底是个什么“东西”用大白话说Process Job就是设备执行一批加工任务时的内部作业单元。它会绑定一批晶圆、一个配方Process Program、一组工艺参数还会挂上一个上位系统能识别的ID。设备在执行这个Process Job的过程中会严格按照配方走完工艺流程然后把结果上报给上位机。这个概念的引入其实是把“加工业务”和“设备动作”解耦了。设备工程师关心的是腔体压力、温度、RF功率这些物理量而EAP工程师关心的是这个任务当前处于什么阶段、能不能暂停、能不能终止。E40在中间做了一个语义层不管设备内部怎么细分动作对外统一用一套状态来描述“任务现在怎么样了”。这样MES不需要知道设备内部的每个腔体时序只需要根据Process Job状态来决定下一步业务动作比如放行下一批、触发搬运、标记不合格批次等。1.3 谁在实际使用这个模型前道光刻、刻蚀、薄膜、扩散、清洗后道封装和测试几乎所有需要和MES/EAP联动的半导体设备都会用E40或类似的状态模型来做Process Job管理。设备商负责在控制器里实现状态机并在状态变化时发出标准事件上位系统负责订阅这些事件更新业务流程两头还要处理命令下发后的执行结果。只要有一头没实现好联调就变成“你说我没发事件我说你没做动作”的扯皮现场。E40给出了统一的框架让两头扯皮时有据可依。2. 状态模型核心设计深度拆解2.1 关键状态逐个说清楚E40状态模型在不同设备商实现里会有细微差异但绝大多数设备的Process Job状态都围绕着几条主线展开。我按实际联调中最常见的状态逐个拆一遍。状态典型含义现场提示IDLE任务已创建或复位完成还没开始准备此时一般可以绑定配方、装载晶圆不能触发加工SETUP_READY任务所需配方、夹具、载具等已装载等待就绪确认很多设备在此阶段做预检预检不过就不往前走PROCESS_READY条件全部满足随时可以开始加工可以下发Start命令进入执行态EXECUTING正在执行加工工艺大部分联调工作都围绕这个状态展开PAUSED加工被暂停任务可恢复注意PAUSED不一定是安全的有些设备暂停时机械手不能动COMPLETED任务已完成加工等待后续处置有的设备叫PROCESS_COMPLETED含义类似ABORTING正在终止中设备正在做终止前的安全动作这个状态可能很快容易漏看ABORTED任务已终止需要复位才能再次使用终止后通常要人工确认原因不能直接拉起来接着跑这里的重点在于区分SETUP_READY和PROCESS_READY。很多联调问题就是差在这两个状态上。SETUP_READY代表任务附带的对象已经就位但设备还没做最终检查PROCESS_READY代表设备已经明确告诉你“可以开跑了”。如果上位机看到SETUP_READY就急着下发Start一些实现严格的设备会拒绝你另一些实现宽松的可能会自动做检查再进入这种不一致在实际联调里非常折磨人。2.2 命令与状态转移的合法边界状态模型核心的命令主要是Start、Stop、Pause、Resume、Abort、Reset。E40的意义不在于它发明了这些命令而在于它严格定义了“什么时候允许执行什么命令”。以最常见的几个转移为例Start一般允许从SETUP_READY或PROCESS_READY发起触发后进入EXECUTING。部分设备也允许从IDLE直接Start。Pause只能在EXECUTING时发起触发后进入PAUSED任务可以在后续通过Resume继续。Stop通常表示“完成当前可停点后结束任务”触发后进入COMPLETED一类的终态。注意Stop不等于立即停机。Abort表示“立刻终止任务”触发后进入ABORTING再进入ABORTED。Abort往往伴随设备安全动作比如停止供气、停止加热。Resume只能从PAUSED发起回到EXECUTING。Reset从终态回到IDLE释放当前Process Job占用的资源。这些转移关系里最容易踩的坑是Stop和Abort的语义差异。Stop不是要终止任务而是要“找个合适的位置停下去”最终结果往往是任务正常完成Abort则是直接放弃当前任务最终结果是ABORTED需要人工干预或复位。上位机如果拿Abort当Stop用可能原本可以正常下机的一批货结果被标记成异常终止后段系统会跟着触发一堆警报。2.3 非法命令设备应该怎么处理E40的一个重要设计理念是“显式拒绝不能默默忽略”。上位机下发的命令如果不符合当前状态设备不能假装没收到也不能在UI上悄悄标红就算了而要通过标准事件和应答码明确告诉上位机“当前状态下不能执行这个命令”。实际处理时设备收到非法命令后一般会通过SECS-II的应答消息带上错误码同时发一个事件通知上位机当前实际状态。为什么这么做因为自动化系统是靠状态驱动流程的任何一个环节出现“我认为我发了命令”和“设备认为它不该执行”的认知偏差后续流程都会跑偏。只有显式拒绝上位机才能及时纠正自己的状态缓存。这个设计思路也提示我们在写EAP软件时不能简单地把“命令已下发”当成“命令已执行”一定要等事件回来确认。2.4 为什么状态图会设计得这么“绕”初看E40的状态图会觉得路径又多又碎一会儿IDLE一会儿SETUP_READY一会儿又要经过ABORTING才能到ABORTED。这其实是刻意为之。半导体设备加工的每一批货都价值不菲任何一次状态迁移都必须有明确的语义和可回溯的路径。比如ABORTING这个中间态看似多余实际很关键。设备从收到Abort到真正进入ABORTED中间要做一系列安全动作比如关闭加热、停止气体、退出真空等。如果没有ABORTING这个“正在终止”的状态上位机只能看到任务还在EXECUTING但设备其实已经在切断了这两者之间的信息差就可能让搬运系统冒进把还没安全下机的晶圆取走。多加一个中间态上位机就知道“这个任务已经不行了但设备还没完全停下来别急着做后续动作”。这就像飞机降落前的“进近”状态你不能直接说从巡航就到了地面中间那一段必须单独定义。3. 实操自己实现一个可用的Process Job状态机3.1 先定义状态和事件我在做设备模拟器或者写EAP状态机时第一步永远是先把状态集合和允许的转移表敲定。下面这段代码是一个极简示例模拟了E40常见的核心状态流转。from enum import Enum class PJState(Enum): IDLE IDLE SETUP_READY SETUP_READY PROCESS_READY PROCESS_READY EXECUTING EXECUTING PAUSED PAUSED COMPLETED COMPLETED ABORTING ABORTING ABORTED ABORTED # 定义合法转移表 TRANSITIONS { PJState.IDLE: [PJState.SETUP_READY, PJState.ABORTED], PJState.SETUP_READY: [PJState.PROCESS_READY, PJState.IDLE, PJState.ABORTING], PJState.PROCESS_READY: [PJState.EXECUTING, PJState.SETUP_READY, PJState.ABORTING], PJState.EXECUTING: [PJState.PAUSED, PJState.COMPLETED, PJState.ABORTING], PJState.PAUSED: [PJState.EXECUTING, PJState.ABORTING], PJState.ABORTING: [PJState.ABORTED], PJState.ABORTED: [PJState.IDLE], PJState.COMPLETED: [PJState.IDLE], } class ProcessJob: def __init__(self, job_id): self.job_id job_id self.state PJState.IDLE def can_transit(self, target_state): return target_state in TRANSITIONS.get(self.state, []) def transit(self, target_state): if self.can_transit(target_state): old_state self.state self.state target_state # 实际工程中这里要发S6F11事件通知上位机 print(f[{self.job_id}] {old_state.value} - {target_state.value}) else: # 非法转移必须显式拒绝 raise RuntimeError( f[{self.job_id}] illegal transition: {self.state.value} - {target_state.value} )这个示例虽然简单但已经把E40状态机的骨架搭出来了状态集合、合法转移表、非法转移拒绝。真正动手做设备端的时候还要在这里挂上事件上报、配方校验、硬件联锁检查等逻辑但核心的状态流转逻辑就是这一套。3.2 上位机接入时的状态缓存设计上位机侧不能每次需要状态都现问设备那样既慢又容易在网络抖动时出错。常见做法是在EAP里维护一份Process Job状态缓存通过订阅设备上报的事件来实时更新。事件订阅读起来很简单但真正跑起来会有两个问题。一是事件可能丢失比如设备重启、链路闪断、事件Report配置不对二是事件可能乱序比如Pause和Resume的确认事件在网络中颠倒了。针对前者必须在缓存之外加定时轮询比如每30秒或1分钟把所有在线的Process Job状态拉一遍针对后者要给状态变化加上时间戳和序列号处理事件时先判断消息是否过期再决定要不要更新本地缓存。我在项目里常用的兜底策略是所有关键命令Start、Abort、Pause下发后设置一个超时计时器。如果超过设定时间还没收到对应的事件回报就主动查询一次设备状态。如果查询结果和预期不一致就把这条记录标记为“待人工确认”同时在监控画面上弹出来。这个策略成本很低但能避免很多“状态卡死无人知”的现场事故。3.3 状态不一致时的对账恢复机制联调中比较常见的状态不一致场景是设备端Process Job已经到了COMPLETED但上位机因为事件丢失还挂在EXECUTING。这时候如果人工在设备面板上把任务关了上位机就彻底对不上了。要解决这个问题不能只靠事件订阅还要提供“全量对账”能力。上位机定时通过S2F23/S2F24一类的消息去读取设备上所有Process Job的当前状态然后和本地缓存对比发现不一致时以设备端状态为准进行修正并记录一条对账差异日志。注意全量对账不要做得太频繁否则会给设备控制器带来额外负载。一般建议在关键节点比如每批Run开始前、设备空闲时、链路恢复后各做一次。另外一个更细的问题是同一台设备上可能同时存在多个Process Job对账时要把Job ID和状态对应清楚不能只按“最后一个状态变化”来刷新。否则并行任务一多状态就会串掉。4. 现场高频问题与排查技巧实录4.1 Process Job一直卡在EXECUTING不报Completed这是我在现场遇到最多的问题。工艺明明做完了设备面板也显示任务结束了可EAP侧一直收不到Completed事件整批货就卡在那边不敢动。排查时先别急着怀疑设备坏了按下面这个顺序走先看设备端事件Report配置确认Process Job完成事件有没有被加进去很多设备默认只开一部分事件再看EAP的订阅过滤条件是不是把某些CEID给过滤掉了然后抓一下SECS报文看设备到底有没有发出S6F11如果发了是上位机没收到还是收到了没处理最后检查上位机的状态缓存逻辑是不是事件到了但因为状态转移校验不合法被丢掉了。这个排查顺序能覆盖九成以上的“假死”问题。特别提醒一下很多团队喜欢加“看门狗式的自动恢复”发现超时就自动把Process Job强制改成Completed。这个做法风险很高可能出现设备还在做最后一步下片动作上位机已经把货放行了的情况。自动恢复可以做但一定要设置白名单和人工确认环节。4.2 Stop和Abort的选择直接决定WIP是否安全不少刚接触半导体自动化的工程师会以为Stop和Abort都是“停下来”随便用哪个都行。实际上这两个命令的业务语义差别很大选错了轻则报警重则在制品出问题。Stop强调“安全停止”设备会等到当前晶圆处理到可安全中断的位置再停下来然后进入COMPLETED一类的正常终态。这对中途发现来料异常、但不想浪费整批货的场景很合适。Abort强调“立即放弃”设备会尽快终止当前任务触发安全联锁最终进入ABORTED。这种命令一般用在设备故障、工艺异常、存在安全风险的场景。我的建议是在EAP的命令接口设计上把Stop和Abort分开不要做成一个“带强制标志的Stop”。同时在MES侧提示用户选择时明确弹出二者后果说明。别让操作员在紧张的时候随手选错。之前就见过有人本意是“这批先停一下”结果点了Abort整批晶圆直接变废弃处理流程损失不小。4.3 PAUSED状态并不是“安全暂停”这个坑在刻蚀和沉积设备上特别明显。EAP需要暂停某个Process Job时设备可能正处于腔体工艺过程中虽然对外报PAUSED但内部加热器可能还在工作真空环境可能还没恢复机械手也可能处于非安全位置。这时候如果上位机逻辑认为“暂停了就是安全了”立刻触发了搬运或其他联锁动作就可能出安全事故。所以在流程设计时一定要把PAUSED和“设备空闲”区分开。PAUSED只代表这个任务暂停了不代表设备可以任意操作。设备和上位机之间还要有另外的联锁信号比如E84、光栅、门锁反馈等来做物理层面的保护。设备恢复Resume之前还要确认所有暂停前的前置条件依然满足比如配方未被修改、腔体环境没有异常。另外设计上位机流程时要允许操作员在PAUSED状态下直接选择Abort。因为现场经常遇到暂停后发现问题无法恢复的情况如果流程设计把PAUSED和EXECUTING用一条固定路径锁死只允许Resume那遇到问题就只能干瞪眼。E40模型通常允许PAUSED到ABORTING的迁移就是为这种场景兜底的。4.4 事件风暴与重复上报的幂等处理一个Process Job在走完整个生命周期时可能会连续上报多个事件比如Start确认、Stage切换、Pause确认、Resume确认、Completed确认。上位机在短时间内会收到一串状态消息。如果并发任务多事件风暴一来消息处理队列很容易堆积。处理这类问题的核心是幂等。状态更新操作不能因为同一个事件消息重复到达而重复执行否则缓存的状态可能被旧事件又覆盖回去。我常用的做法是给每条事件带一个递增的序号在处理消息前先判断序号是否比当前已处理的序号新是才更新不是就直接丢弃。这个序号可以用设备端的系统时间、消息计数器等等只要能保证单调递增就行。还有一个容易被忽略的是确认消息的双向顺序。上位机发送Pause命令后设备会回确认随后又上报Pause确认事件。如果上位机在处理确认消息时直接更新状态又在处理Pause事件时再更新一次这两次更新之间如果状态不一致容易多跳一个状态。规范做法是以事件上报为准命令确认只用来告诉“设备收到了命令”不直接改业务状态。4.5 现场问题排查速查表现象大概率原因建议动作状态一直停在EXECUTING事件未配置/丢失/过滤先抓报文再看配置最后看EAP过滤下发Abort后马上变成COMPLETED上位机状态机转移表写错核对E40转移表检查事件处理逻辑PAUSED后无法Resume设备存在恢复前置条件未满足查看设备报警确认工艺参数和硬件状态收到Completed但MES侧任务还是运行中EAP与MES接口未联动检查MES订单状态更新逻辑链路闪断后状态全乱缺少对账恢复机制增加全量状态查询和差异修正5. 最后分享一点实操体会做设备联调这么多年我最深的感受是E40标准给的不是一套死板的代码框架而是一套“关于状态边界”的思维方式。真正实现得好不好不在于状态名和标准一字不差而在于状态之间的每次迁移都有清晰语义、每个非法操作都被显式拒绝、每条状态变化都能被上位机和设备端一致理解。设备商如果自造状态名就会给集成带来巨大的沟通成本上位机如果只看事件不管理状态缓存早晚会在某个异常场景里栽跟头。建议所有做半导体设备自动化的工程师把E40的状态图当作和SECS-GEM一样重要的基础课来学联调之前先和设备商逐行对齐状态转移表能省下后面一大半的扯皮时间。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。