4. SECS/GEM通信基础与ASML设备模型
在半导体制造中,设备与主机(Host)之间的通信不是简单的“发一条指令、回一个结果”,而是由一套分层协议支撑的标准化对话机制。SECS/GEM 就是这套机制的核心:SECS-II 定义消息长什么样,HSMS 定义消息怎么在网络上传,GEM 定义设备在什么状态下允许做什么,而 ASML 设备模型则把这些抽象规则落到具体的设备、模块、端口和工艺作业上。理解这四层的关系,是后续做自动化接口开发和生产数据集成的前提。
SECS-II:消息的结构与语义
SECS-II 是消息内容的规范层。一条 SECS-II 消息由 Stream(流) 和 Function(功能) 共同标识,记作 SxFy,例如 S1F1、S2F41、S6F11。Stream 表示消息的类别,Function 表示该类别的具体动作,奇数 Function 通常表示“请求”,偶数 Function 通常表示“回复”。
消息体由若干 数据项(Data Item) 组成,每个数据项有格式码和长度。常见格式码包括:
- L(List):列表,用于组织嵌套结构;
- A(ASCII):字符串;
- U1/U2/U4:无符号整数,分别占 1/2/4 字节;
- I1/I2/I4:有符号整数;
- F4/F8:浮点数;
- B(Binary):二进制数据;
- BOOLEAN:布尔值。
以 S1F1(Are You There)为例,它通常只包含一个空的 L 数据项,用于探测设备是否在线;设备用 S1F2 回复,消息体中携带设备型号、软件版本等信息。再如 S2F41(Host Command),其消息体一般是一个 L,内部依次包含命令名(A)、参数列表(L),参数列表中每个参数又由参数名(A)和参数值(A 或数值)组成。这种“列表套列表”的结构,是 SECS-II 表达复杂参数的标准方式。
HSMS:连接建立与消息交换
HSMS(High-Speed SECS Message Services)是当前主流的传输层协议,基于 TCP/IP。它定义了两种角色:Active(主动方) 和 Passive(被动方)。Active 方主动发起 TCP 连接,Passive 方监听端口等待连接。在 ASML 设备与主机集成中,通常由主机侧作为 Active,设备侧作为 Passive,但也可以反过来配置,关键是双方约定一致。
HSMS 连接建立后,双方通过 Select 和 Deselect 控制通信状态。只有进入 Selected 状态,才能交换 SECS-II 消息。此外,HSMS 还定义了 Linktest 用于检测链路存活,以及 Separate 用于正常断开连接。每条 HSMS 消息都有一个 System Bytes 字段,用于把请求和回复配对;还有 Session ID 用于标识会话。主机在发送 S1F1 时,会带上一个 System Bytes 值,设备回复 S1F2 时必须回填相同的值,这样主机才能确认“这条回复对应的是我刚才那条请求”。
实际配置中,需要关注几个参数:设备侧监听端口(常见为 5000)、Active 侧目标 IP 和端口、T3 回复超时(通常 45 秒)、T5 连接分离超时、T6 控制消息超时、T7 未选择超时、T8 网络字符间超时。这些定时器决定了通信的健壮性,配置不当会导致连接频繁断开或消息丢失。
GEM状态模型:设备在什么状态下做什么
GEM(Generic Equipment Model)在 SECS-II 和 HSMS 之上,定义了设备的行为规范。其中最基础的是 通信状态模型,它描述设备在通信层面所处的状态:
- Disabled:通信未启用,设备不响应主机消息;
- Enabled:通信已启用,设备可以响应主机消息;
- Communicating:已建立 HSMS 连接并完成 Select,可以正常交换消息;
- Not Communicating:通信中断,设备进入等待重连状态。
除了通信状态,GEM 还定义了 控制状态(Equipment Offline / Online Local / Online Remote)和 处理状态(Idle / Processing / Paused 等)。主机通过 S1F17/S1F18 请求设备进入 Online Remote,设备通过 S1F13/S1F14 建立通信,通过 S1F15/S1F16 请求离线。这些状态之间的迁移,决定了主机能否下发工艺作业、能否采集事件报告。
ASML设备特定对象模型
ASML 光刻设备在 GEM 标准之上,定义了自己的对象模型。理解这个模型,才能正确解析设备上报的数据和向设备下发指令。核心对象包括:
- Equipment(设备):顶层对象,代表整台光刻机,拥有设备 ID、软件版本、当前状态等属性;
- Module(模块):设备内部的子系统,如光源模块、投影物镜模块、晶圆传输模块、对准模块等,每个模块有独立的健康状态和参数;
- Port(端口):晶圆进出设备的接口,通常有多个 Load Port,每个 Port 有 ID、类型(如 FOUP)、状态(Loaded/Unloaded);
- Process Job(工艺作业):一次完整的曝光任务,包含作业 ID、配方(Recipe)、晶圆批次、优先级等,是主机与设备之间最核心的业务对象。
这些对象之间通过事件报告(Event Report)和变量(Variable)关联。例如,当 Port 状态变化时,设备会触发一个事件,事件报告中携带 Port ID 和新的状态值;当 Process Job 开始时,设备会报告 Job ID、Recipe 名称和 Start 时间。主机通过定义 Report 和 Link,决定订阅哪些事件和变量。
从消息到对象:一次工艺作业下发的完整链路
假设主机要向 ASML 设备下发一个工艺作业。首先,主机确认 HSMS 连接处于 Selected 状态,GEM 通信状态为 Communicating,控制状态为 Online Remote。然后主机发送 S2F41,命令名为 “START”,参数列表中包含 Job ID、Recipe 名称、Port ID 等。设备收到后,解析 SECS-II 消息体,将参数映射到 Process Job 对象,检查 Port 是否已加载 FOUP、Recipe 是否存在、设备是否处于可启动状态。如果条件满足,设备回复 S2F42 并携带 ACK;如果条件不满足,回复 NAK 并附带错误码。
作业启动后,设备会通过 S6F11 事件报告向主机推送状态变化,例如 Process Job 开始、晶圆开始曝光、Port 状态变化等。主机根据预先定义的 Report 和 Link,解析事件中的变量,更新自己的生产数据看板。整个过程体现了 SECS-II 负责“说什么”、HSMS 负责“怎么传”、GEM 负责“什么时候能说”、ASML 对象模型负责“说的是哪个具体对象”的分工。