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定义了设备必须支持哪些功能。我把它归纳为五大类:

  1. 状态管理:设备当前在干啥?空闲?运行?报警?
  2. 数据采集:温度、压力、流量、功率……这些工艺参数怎么上报?
  3. 报警管理:设备出问题了,怎么通知主机?
  4. 配方管理:主机怎么把工艺参数下发给设备?
  5. 物料追踪:晶圆在设备里进进出出,怎么记录?

核心要点: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标准里定义了设备的状态模型,我画个图给大家看:

GEM设备状态模型 INIT (初始化) NOT_READY (未就绪) READY (就绪) EXECUTING (执行中) IDLE (空闲) ALARM (报警) 初始化完成 自检通过 开始加工 加工完成 异常报警 报警复位 准备就绪

这个状态模型,每个设备都必须实现。EAP通过监控设备的状态变化,来判断设备能不能接活、是不是在干活、有没有出问题。

我举个例子:当MES要派活给一台刻蚀机时,EAP会先检查设备状态。如果状态是READY,那就下发配方开始加工;如果是NOT_READY,那就得等设备自检完成;如果是ALARM,那对不起,得先修设备。

注意:设备状态管理最怕的是“状态不一致”。就是EAP认为设备是IDLE,但设备实际在EXECUTING。这种情况通常发生在通讯中断后恢复时。我建议在EAP里加一个“状态同步”机制,每隔一段时间强制查询一次设备真实状态,确保两边信息一致。

3.5 避坑指南:我踩过的那些坑

最后,分享几个我在项目中遇到的实际问题:

  • 坑一:SECS消息超时——设备响应慢了,EAP就报超时。后来发现是设备端的消息队列满了。解决办法:调整超时时间,同时优化设备端的处理逻辑。
  • 坑二:数据采集丢点——采集到的工艺参数偶尔会跳变或缺失。查了半天,原来是HSMS的TCP缓冲区设置太小,数据量一大就丢包。把缓冲区从4KB调到64KB,问题解决。
  • 坑三:配方下载失败——新产品的配方文件比较大,下载到设备时总是失败。后来发现是SECS-I的串口速率太低,传输时间过长导致超时。换成HSMS后,问题迎刃而解。

嗯,做设备自动化就是这样,看起来是标准协议,但实际落地时总会有各种意想不到的问题。我的经验是:先理解标准,再处理异常。把GEM的状态模型、数据采集机制吃透了,遇到问题才能快速定位。


公众号:蓝海资料掘金营,微信deep3321