SECS/GEM协议入门:半导体设备是怎么和MES“对话“的

在半导体行业工作多年,我见过太多这样的场景:凌晨两点,产线工程师拿着纸质工艺参数单,一台一台地敲设备面板输入 Recipe;MES 系统里显示 Lot 已经进站,但设备那边其实根本没收到指令,两边数据对不上,最后发现是人工抄录时把一位小数点写错了。

这就是没有标准通信协议之前的工厂。设备是哑巴,MES 是聋子,中间全靠人传话。

后来,SECS/GEM 协议成了这个行业的通用语言。它本质上是给半导体设备和 MES 之间装了一部"翻译电话",让机器之间能自动对话。这篇文章我想用通俗的方式,讲讲这部电话是怎么打通的。


一、没有协议之前,工厂是怎么"鸡同鸭讲"的

早年的半导体设备,各家厂商的通信接口五花八门。有的设备只给一串数字信号,有的设备用串口传文本,有的设备干脆只留一个 DB9 接口,连文档都没有。MES 系统想统一调度这些设备,难度极大。

工程师的日常工作就是:MES 打印出工艺参数 → 人工走到设备前 → 手动输入到设备面板 → 设备开始加工 → 加工完成后人工记录结果 → 回录到 MES。

这个流程里,只要有人输错一个参数,或者漏记一个结果,一整批晶圆就可能报废。更麻烦的是,设备出了报警,MES 往往不知道;MES 想紧急叫停,设备也听不见。

行业需要一个标准:让设备说同一种语言,让 MES 能听懂设备在说什么,还能远程指挥设备。

这就是 SECS/GEM 诞生的原因。


二、SECS/GEM 到底是什么?

很多人第一次听到 SECS/GEM 会被一堆缩写搞晕。其实可以把它拆成三层来理解:

SECS-I / HSMS:这是"物理层"和"传输层"。早期的 SECS-I 走 RS-232 串口,速度慢、距离短,基本已经淘汰。现在主流是 HSMS(High-Speed SECS Message Services),基于 TCP/IP,设备接上网线就能和 MES 通信。

SECS-II :这是"消息格式层"。它规定了设备之间能发哪些消息,消息长什么样。比如 S1F1 是"你在吗",S1F2 是"我在";S2F41 是"远程启动";S6F11 是"我有事件要上报"。

GEM:这是"语义层"。如果说 SECS-II 是"语法",那 GEM 就是"语义"。GEM 定义了设备应该具备哪些状态(在线/离线/本地面板/远程控制),应该上报哪些事件,应该提供哪些变量。它让不同厂商的设备,在 MES 眼里看起来是"同一个模型"。

打个比方:SECS-II 是"英语语法",GEM 是"商务礼仪"。语法让你知道怎么说,礼仪让你知道什么时候该说什么。


三、设备和 MES 的"三段式握手"

设备进厂后,不是插上网线就能干活。它要和 MES(准确说是 EAP,设备自动化程序)完成一次"三段式握手"。

第一段:TCP 连接。 设备作为服务端(Passive),监听一个端口(通常是 5000)。EAP 作为客户端(Active),发起 TCP 连接。这一步跟普通网络通信没区别。

第二段:HSMS 选择。 TCP 连上后,EAP 发送 Select.req,设备回 Select.rsp。只有 HSMS 会话建立成功,双方才能开始交换 SECS 消息。

第三段:SECS 通信建立。 EAP 发送 S1F13(建立通信请求),设备回 S1F14(同意建立)。然后 EAP 发 S1F1(Are you there?),设备回 S1F2(I am here)。

到这一步,"电话"才算真正打通。以后 EAP 和设备之间可以持续发消息,设备也可以主动上报事件。


四、一条晶圆的"派工之旅":消息实录

光知道握手不够,要看懂 SECS/GEM,必须跟着一条 Lot 走完产线。下面是一个极简版的对话实录。

场景:MES 决定让 Lot A123 去蚀刻机 E-01 加工。

步骤 1:MES 把指令发给 EAP MES 通过数据库或 API 告诉 EAP:"Lot A123,下一站 E-01,Recipe 用 ETCH_V2.1,优先执行。"

步骤 2:EAP 翻译为 SECS 消息 EAP 连上 E-01,先确认设备在线、状态为 REMOTE(远程可控)。然后 EAP 发送 S2F41(远程命令),里面包含命令代码"START"和参数"LotID=A123;RecipeID=ETCH_V2.1"。

步骤 3:设备收到并执行 设备收到 S2F41,解析参数,确认 Recipe 存在且版本匹配。然后设备返回 S2F42(命令确认),状态码是"OK"。

步骤 4:设备主动上报事件 设备开始加工,自动发送 S6F11(事件报告)。这个消息里嵌套了多层数据:CEID(事件 ID)= 100,表示"LotStart";RPTID(报告 ID)= 200,里面绑定了 VID(变量 ID):LotID=A123,RecipeID=ETCH_V2.1,ChamberTemp=85.0。

步骤 5:EAP 翻译回 MES EAP 收到 S6F11,解析出结构化数据,推送给 MES。MES 界面上的 Lot A123 状态立刻从"等待"变成"加工中"。

步骤 6:加工完成,再次上报 设备加工结束,再次发送 S6F11(CEID=101,LotEnd)。EAP 上报 MES,MES 更新状态为"完工",准备派去下一站。

整个过程里,人没有碰过设备面板。Recipe 是 EAP 自动下载的,加工数据是设备自动采集的,状态是实时同步的。


五、为什么 Recipe 管理是重中之重?

在上面这个流程里,有一个环节最容易出错,也是半导体厂最紧张的环节:Recipe 下载

Recipe 就是工艺参数文件,直接决定刻蚀多深、沉积多厚。不同产品用不同 Recipe,同一产品升级后也要换版本。如果设备用了错的 Recipe,良率会断崖式下跌。

SECS/GEM 里有专门的 S7 流消息管这件事:

  • S7F5:EAP 请求下载 Recipe

  • S7F6:设备发送 Recipe Body

  • S7F1:设备请求上传 Recipe

  • S7F2:EAP 同意上传

实际产线中,Recipe 管理通常是最严格的环节。EAP 下载完 Recipe 后,设备会做 Checksum 校验,确认文件完整性和版本一致性。校验不通过,设备会拒绝加工,并上报报警。

我见过的情况:设备厂商更新了 Recipe 格式,多了一个字段,EAP 没同步更新,导致下载后 Checksum 不匹配,产线停了一个小时。这种细节,只有真正调过设备的人才懂。


六、给初学者的建议

如果你刚接触 SECS/GEM,我的建议是分三步走:

第一步:先理解 GEM 状态机。 不要急着背消息代号。先搞懂设备的 Communication 状态(连没连上)、Control 状态(LOCAL 还是 REMOTE)、Processing 状态(IDLE 还是 EXECUTING)。状态机是骨架,消息是血肉。

第二步:再读 SECS-II 消息字典。 重点看 S1(状态)、S2(控制)、S5(报警)、S6(事件)、S7(Recipe)。不需要全背,用的时候查就行。

第三步:最后看实际产线日志。 拿到一段真实的 EAP 日志,逐条翻译。看多了你就会发现,再复杂的通信,本质上就是"请求-确认-上报"的循环。