GEM 事件/报警系统的完整实现
——写给正在做国产半导体设备通信接口的研发工程师系列文章目录《SECS/GEM 协议介绍》《HSMSE37通信层的正确实现方式》《SECS-II 报文结构工程师最容易犯的 10 个错误》《GEM 事件/报警系统的完整实现》《GEM300E87/E90/E94流程详解Carrier → Job → Recipe》《国产设备厂 SECS/GEM 接口常见问题与调试案例》《如何设计一个可扩展的 SECS/GEM 驱动程序》《如何用流程化工具做 Host/EAP 验收》目录系列文章目录1.事件系统的核心结构CEID → RPTID → VID2.事件触发流程3. 报警系统的核心结构Host 最容易拒绝你的 8 种错误如何验证你的事件/报警系统是否正确成熟方案供应商选择总结在 GEME30体系中事件Event和报警Alarm是最容易出问题、也是最容易被 Host/EAP 重点检查的部分。(因为GEM300部分也会用到事件上报不过300部分依赖的数据与200的数据路径不同)在设备开发过程中需要良好的设计和整体测试才能很好的交付这部分内容。大体上这部分的内容包含以下几点Host 收不到事件机台报警触发了但 Host 不认可没有收到RPTID/VID 不一致CEID 上报但 Host 不解析报警恢复S5F2漏发事件顺序错乱事件绑定的 VID 值不正确这篇文章我会从工程角度讲清楚事件系统应该如何设计报警系统应该如何实现RPTID/VID 如何绑定S6F11/S5F1/S5F2 如何构造如何保证 Host 100% 能解析如何避免国产设备厂最常见的坑你看完这篇文章就能实现一个可交付、可维护、可扩展的事件/报警系统。1.事件系统的核心结构CEID → RPTID → VIDGEM 事件系统的本质是一个三层结构CEID事件 └── RPTID报告 └── VID变量Host 订阅 CEID的行为其实就是配置CEID的过程而触发事件时的流程如下→ CEID 触发→ 设备上报 S6F11→ S6F11 中包含 RPTID→ RPTID 中包含 VID→ Host 根据 VID 解析事件内容所以你必须实现CEID 注册表RPTID 注册表VID 注册表CEID 与 RPTID 的绑定RPTID 与 VID 的绑定VID 的实时值获取如果你缺任何一层Host 都会报错。2.事件触发流程当设备内部发生某个事件例如Carrier Arrived、Door Open、Recipe Changed你应该执行查找 CEID找到所有 RPTID找到 RPTID 对应的 VID 列表获取每个 VID 的实时值构造 S6F11 报文发送 S6F11具体如何使用我会结合我们的团队的产品单开一个系列介绍请留意后续更新.3. 报警系统的核心结构报警系统比事件简单但更容易出错。报警有两个报文S5F1ARSS5F2ARA需要注意的是不管是触发报警还是清除报警都是通过S5F1来实现的。L,3 1.ALCD 2.ALID 3.ALTXALCD字段中按照bit位既用来标记Alarm Set/Clear标记也用来表达Alarm的报警等级严重性详细报警等级读SEMI E5的ALCD字段解释。在下图的位置中这里需要说明的是实现S5F1指令时不要省略字段尤其是ALTX这是SEMI标准要求的字段就算是空字符也要强制占位。还有一点需要说明的是不能重复触发同一个报警目前我们采取的方式是AlarmID 处于SET状态上位机内部记录log但不重复触发SxFy上报给HOST。4.Host 最容易拒绝你的 8 种错误错误影响CEID 未使能EQP排查log发现CEID触发但Host 无法收到RPTID 未绑定Host 收到事件但内容为空VID 类型错误Host 直接 S9F7VID 顺序错误Host 解析错位报警恢复漏发Host 认为设备一直报警ALTX 为空Host 拒绝报警CEID 多包一层 ListHost S9F7VID 数量不一致Host 认为事件不完整5.如何验证你的事件/报警系统是否正确结合调试排查经验给出以下步骤✔ Host 是否能订阅事件S2F33✔ Link RPTID 是否正确S2F35✔ VID 是否存在✔ Host 统一使能事件✔ Host 是否能收到事件S6F11关于报警的排查✔ 报警全局禁用(S5F3)✔ 报警启用✔ 报警触发是否正确S5F1✔ 报警触发是否正确✔ 是否存在重复报警✔ 是否存在未恢复报警在设计这部分时可以由驱动程序提供对应的SV让HOST可以直接通过S1F3就能了解当前机台处于Alarm Set状态的AlarmID。6.成熟方案供应商选择对于半导体设备的软件研发团队来说如果希望将主要精力放在设备工艺逻辑上下位机控制核心算法上那么 SECS/GEM 这一层完全具备外采的条件。从工程角度看SECS/GEM 本质上是“设备功能之上的调度层”它需要稳定的协议栈、完整的状态机、规范的事件/报警系统以及 GEM300 的流程调度能力。这些内容既专业又繁琐自己从零实现不仅周期长还容易在验收阶段暴露兼容性问题。因此选择成熟可靠的 SECS/GEM 组件可以显著降低研发成本加快设备上线节奏。我们团队(ModuleMotion Systems)长期深耕这一领域也有稳定落地的方案如有需要可以私信交流。总结SECS/GEM中的 事件/报警系统的本质是“数据绑定 报文构造”你只需要记住事件系统不是协议问题而是数据结构问题。报警系统不是逻辑问题而是状态机问题。只要你的数据结构设计正确报文构造正确Host 就一定能解析。如果真的遇到Fab EAP不标准毕竟系统都是国外的并且很多年了。遇到这种情况那就只能厂商来适配但这种场景不多。