3、设备自动化层:SECS/GEM协议详解、设备接口标准、数据采集与监控、设备状态管理
各位,咱们今天聊聊晶圆厂里最接地气的一层——设备自动化层。
说白了,这一层就是让设备跟MES(制造执行系统)能对上话。我当年刚入行时,觉得这层不就是个接口嘛,有啥难的?后来被现实狠狠教育了一顿。你想想看,一台光刻机几千万,一台刻蚀机也上千万,要是通讯断了或者数据传错了,那损失可不是闹着玩的。
3.1 SECS/GEM协议:半导体设备的通用语言
SECS/GEM,全称是SEMI Equipment Communications Standard / Generic Equipment Model。嗯,名字挺长,但核心就一句话:它是半导体设备跟主机系统之间的标准通讯协议。
我习惯把它拆成两部分理解:
- SECS:定义了消息怎么传,也就是通讯的“语法”。
- GEM:定义了传什么内容,也就是通讯的“语义”。
打个比方,SECS就像电话线,GEM就像你们约定好的暗号。没有SECS,设备连不上线;没有GEM,连上了也不知道对方在说啥。
3.1.1 SECS-I 和 HSMS
SECS协议有两个版本:
| 协议 | 物理层 | 传输速率 | 适用场景 |
|---|---|---|---|
| SECS-I | RS-232 串口 | 9600 bps ~ 19200 bps | 老设备、低速通讯 |
| HSMS | TCP/IP 以太网 | 100 Mbps 以上 | 新设备、高速数据采集 |
我个人建议,现在新建的工厂尽量用HSMS。为什么?因为SECS-I那个串口速度,传个配方文件能等半天。我在一个老厂改造项目中遇到过,一台1998年的离子注入机还在用SECS-I,每次下载recipe要3分钟,操作员都快疯了。
3.1.2 GEM的核心功能
GEM定义了设备必须支持哪些功能。我把它归纳为五大类:
- 状态管理:设备当前在干啥?空闲?运行?报警?
- 数据采集:温度、压力、流量、功率……这些工艺参数怎么上报?
- 报警管理:设备出问题了,怎么通知主机?
- 配方管理:主机怎么把工艺参数下发给设备?
- 物料追踪:晶圆在设备里进进出出,怎么记录?
核心要点:GEM不是可选的。SEMI标准规定,所有半导体设备必须支持GEM的基本功能集。你买设备时,合同里一定要写清楚“支持GEM标准”,不然以后集成有你受的。
3.2 设备接口标准:EAP与设备驱动的桥梁
EAP(Equipment Automation Program)是设备自动化层的核心软件。它负责把SECS/GEM的消息翻译成MES能理解的业务逻辑。
这里有个常见的坑——设备厂商的接口实现五花八门。同样是“开始加工”这个动作,A厂商用S2F41消息,B厂商用S7F19消息。你想想看,如果每个设备都写一套EAP,那维护成本得多高?
所以,行业里慢慢形成了几个标准接口:
- SEMI E30 (GEM):定义了设备行为模型
- SEMI E37 (HSMS):定义了TCP/IP通讯
- SEMI E40 (Process Job Management):定义了加工任务管理
- SEMI E87 (Carrier Management):定义了载具管理
我建议大家在选型时,优先选支持E87标准的设备。为什么?因为E87定义了晶圆盒(FOUP)的进出站逻辑,这对自动化搬运系统(AMHS)至关重要。我曾经在一个项目里,就因为设备不支持E87,不得不写了一大堆适配代码,那叫一个痛苦。
3.3 数据采集与监控:从设备里“挖”数据
数据采集,说白了就是把设备里的工艺参数、状态信息、报警记录等数据,实时地、准确地抓取到上层系统里。
SECS/GEM里专门有个数据采集的机制,叫Data Collection Plan (DCP)。你可以把它理解成一个“数据采集清单”。
// 一个典型的DCP配置示例
DCP_ID: "ETCH_PROCESS_01"
Report_List:
- Report_ID: 1
Variables:
- SVID_101: "Chamber Pressure" // 腔体压力
- SVID_102: "RF Forward Power" // 射频前向功率
- SVID_103: "Gas Flow Rate" // 气体流量
- Report_ID: 2
Variables:
- SVID_201: "Process Time" // 工艺时间
- SVID_202: "Wafer Temperature" // 晶圆温度
Collection_Event: "CE_START_PROCESS" // 触发事件:开始工艺
嗯,这里要注意:DCP的配置不是一次性的。不同产品、不同工艺,需要采集的参数可能完全不同。我习惯的做法是,先跟工艺工程师聊清楚,他们到底关心哪些参数,然后再去配置DCP。不然你采集一堆没用的数据,既占带宽又占存储。
小技巧:数据采集的频率要合理。有些参数变化慢(比如腔体温度),每5秒采一次就够了;有些参数变化快(比如RF功率),可能需要每秒采10次。别一股脑全设成最高频率,不然EAP服务器扛不住。
3.4 设备状态管理:让设备“听话”
设备状态管理,是设备自动化层最基础也最重要的功能。GEM标准里定义了设备的状态模型,我画个图给大家看:
这个状态模型,每个设备都必须实现。EAP通过监控设备的状态变化,来判断设备能不能接活、是不是在干活、有没有出问题。
我举个例子:当MES要派活给一台刻蚀机时,EAP会先检查设备状态。如果状态是READY,那就下发配方开始加工;如果是NOT_READY,那就得等设备自检完成;如果是ALARM,那对不起,得先修设备。
注意:设备状态管理最怕的是“状态不一致”。就是EAP认为设备是IDLE,但设备实际在EXECUTING。这种情况通常发生在通讯中断后恢复时。我建议在EAP里加一个“状态同步”机制,每隔一段时间强制查询一次设备真实状态,确保两边信息一致。
3.5 避坑指南:我踩过的那些坑
最后,分享几个我在项目中遇到的实际问题:
- 坑一:SECS消息超时——设备响应慢了,EAP就报超时。后来发现是设备端的消息队列满了。解决办法:调整超时时间,同时优化设备端的处理逻辑。
- 坑二:数据采集丢点——采集到的工艺参数偶尔会跳变或缺失。查了半天,原来是HSMS的TCP缓冲区设置太小,数据量一大就丢包。把缓冲区从4KB调到64KB,问题解决。
- 坑三:配方下载失败——新产品的配方文件比较大,下载到设备时总是失败。后来发现是SECS-I的串口速率太低,传输时间过长导致超时。换成HSMS后,问题迎刃而解。
嗯,做设备自动化就是这样,看起来是标准协议,但实际落地时总会有各种意想不到的问题。我的经验是:先理解标准,再处理异常。把GEM的状态模型、数据采集机制吃透了,遇到问题才能快速定位。
公众号:蓝海资料掘金营,微信deep3321