GEM(Generic Equipment Model)标准定义了设备在通信链路上的行为。相较于更侧重于主机与设备间交换的消息/数据项的另三项通信协议,GEM主要定义了一些状态模型/场景,在这些情形下,设备应该使用那些SECS-Ⅱ消息以及由此消息产生的结果行为。
现行GEM标准可分为GEM200(8寸)与GEM300(12寸),本篇笔者将按常见的状态模型/场景这两部分来整体介绍GEM。
一、常见GEM状态模型*
1.1 概述
状态模型将一个设备的行为分为可单独建模又可合并的多个行为模块,以紧凑、易于理解的格式描述设备的行为。
模型的基本单位是状态。状态可分为两部分,一部分是一组静态的条件(传感器读数、开关状态、工作时间等),如果设备满足条件,则当前设备正处于该状态;另一部分则是设备对特定刺激所做出的的响应(如:接收到消息SXFY消息,回复对应的SXFY+1)。对于半导体设备而言,刺激包括接收的SECS消息、到期的定时器、设备终端的操作员输入以及传感器读数的变化。
下图对设备的行为模块进行了划分:
1.2 通信状态模型(COMMUNICATIONS)
模型定义了设备与主机间通信相关的行为(通信由一条S1F13消息起始)。结构图/状态转换表如下所示。
# |
当前状态 |
转换条件 |
新状态 |
设备行为 |
注 |
1 |
(通信入口) |
系统初始化 |
系统默认状态 |
无 |
默认状态一般设置为Disabled或者Enabled |
2 |
Disabled |
Disable与Enable切换 |
Enabled |
无 |
SECS-II通信可用 |
3 |
Enabled |
Disable与Enable切换 |
Disabled |
无 |
SECS-II通信不可用 |
4 |
(Enable 入口) |
任意进入Enable状态的触发条件 |
Not COMMUNICATING |
无 |
从系统默认状态或DISABLED转换而来 |
5 |
(EQP发起通信入口) |
任意Not Communicating触发条件(EQP发起) |
Wait CRA |
通信初始化,将通信计时器设为过期状态,并发送S1F13 |
准备建立通信 |
6 |
Wait CRA |
连接事务失败 |
Wait Delay |
初始化通信计时器,清空即将发送的消息队列 |
一般来说,从队列中删除的消息会以被生成的顺序保存在脱机缓冲区,直到计时器过期。 |
7 |
Wait Delay |
计时器到时 |
Wait CRA |
发送S1F13 |
等待返回信息S1F14(也可能接收到主机的S1F13) |
8 |
Wait Delay |
收到S1F13外的SECS消息 |
Wait CRA |
弃置该消息,将计时器设为到期,发送S1F13 |
收到其它SECS消息,说明该设备有可能建立通信 |
9 |
Wait CRA |
收到预期中COMMACK==0的S1F14 |
Communicating |
无 |
通信已建立 |
10 |
Host发起通信入口 |
任意进入Not Communicating状态的触发器(主机) |
Wait CR From Host |
无 |
等待主机发送的S1F13 |
14 |
COMMUNICATING |
通信失败 |
Not COMMUNICATING |
清空即将发送的消息队列 |
被清除的消息将以正确的方式保存于脱机缓存区 |
15 |
Wait CR From Host |
Receive S1F13 |
COMMUNICATING |
发送COMMACK==0的S1F14消息 |
通信已建立 |
1.2.1 Disable状态
此时设备与主机没有进行SECS-II通信。如果操作员从 Enabled 切换到 Disabled,所有SECS-II通信必须立即停止,任何排队等待发送的消息都将被丢弃,并且任何开放的事务和会话的所有进一步行动都将被终止。
1.2.2 Enable状态
Enabled拥有两个子状态,not Communicating 和 Communicating。
- Communicating:通信已经建立。设备可以接收来自主机的任何消息,包括S1、F13。当设备正在进行通信时,必须维护与主机计算机的SECS通信。此状态一直处于活动状态,直到通信被禁用或发生通信故障。如果设备处于Communicating子状态下从主机接收到S1、F13,则应该用S1、F14回复结果设置为0的消息。
- Not Communicating:有两个子状态,Host Initiated connect以及 EQP Initiated Connect。
- Host Initiated Connect:这个状态描述了在Communicating状态未激活时,设备响应主机发送的S1F13的行为 - Wait CR From Host:设备等待来自主机的S1F13,如果成功接收,将回复通信结果为0的S1F14。
- EQP Initiated connect:在进入 Not Communicating 状态时,每当 Equipment Initiated Connect 状态首先被激活时,就会发生向 Wait CRA子状态的转变,通信延迟计时器被设置为“过期”,并立即尝试发送S1F13。该状态涉及的子状态如下:
- Wait CRA:发送了一个建立链接请求。该设备将等待主机确认该请求。
- Wait Delay:发生连接事务失败。设备初始化一个通信延迟计时器(时长为T5),该设备将等待计时器过期,而后进入Wait CRA状态
1.3 控制状态模型(CONTROL)
通信状态模型描述了主机和设备交换消息的能力,而控制模型则描述了设备对其接收到的消息采取行动的能力。
控制状态模型定义了主机和设备之间的操作等级。它还指定了操作员如何在不同级别的主机控制上进行交互。
控制模型为主机提供了三个基本的控制级别:
- 最高级别(Remote),主机可以尽可能地控制设备。
- 中间级别(Local),允许主机完全访问信息,但对对设备的操作有一些限制。
- 最低级别(OFF-Line),设备不允许主机控制且只提供非常有限的信息。
控制模型结构图及其状态转换表如下所示:
# |
当前状态 |
转换条件 |
新状态 |
设备行为 |
注 |
1 |
(控制状态入口) |
系统初始化 |
Control |
无 |
根据不同的配置条件,将默认状态设置为ON-LINE或者OFF-LINE |
2 |
(OFF-LINE状态入口) |
切换至OFF-LINE状态 |
OFF-LINE |
无 |
设备可能因为配置条件不同,将默认状态设置为OFF-LINE的任意子状态 |
3 |
EQP OFF-LINE |
准备切换至ON-LINE |
Attempt ON-LINE |
无 |
当设备启动Attempt ON-LINE状态时将发送一条S1F1消息 |
4 |
Attempt ON-LINE |
S1F0 |
EQP/Host OFF-LINE |
无 |
可能由一次通信失败、回复超时或者接受到S1F0消息导致 |
5 |
Attempt ON-LINE |
设备收到预期中的S1F2回复 |
ON-Line |
无 |
主机将在转变7中被通知转为ON-LINE状态 |
6 |
ON-LINE |
准备切换至OFF-ONLINE状态 |
EQP OFF-LINE |
无 |
当EQP OFF-LINE状态发生时,设备的回复活动将被弃置 |
7 |
(ON-LINE状态入口) |
切换至ON-LINE状态 |
ON-LINE(LOCAL/REMOTE取决于默认配置) |
无 |
基于实际的ON-LINE子状态的Event Report将同时启动 |
8 |
LOCAL |
将Front Panel切换至Remote状态 |
REMOTE |
无 |
Remote控制状态发生 |
9 |
Remote |
将Front Panel切换至Local状态 |
LOCAL |
无 |
LOCAL控制状态发生 |
10 |
Host发起通信入口 |
任意进入Not Communicating状态的触发器(主机) |
Wait CR From Host |
无 |
等待主机发送的S1F13 |
14 |
COMMUNICATING |
通信失败 |
Not COMMUNICATING |
清空即将发送的消息队列 |
被清除的消息将以正确的方式保存于脱机缓存区 |
15 |
Wait CR From Host |
Receive S1F13 |
COMMUNICATING |
发送COMMACK==0的S1F14消息 |
通信已建立 |
1.4 设备执行状态模型
设备执行状态模型定义了制程设备在制程过程中涉及的全部状态,记录设备在执行其预期功能时的行为。该处理状态模型高度依赖于设备的工艺、采用的技术和类型。其状态模型结构及其状态转换表如下所示:
# |
当前状态 |
转换条件 |
新状态 |
设备行为 |
注 |
1 |
INIT |
完成设备初始化 |
IDLE |
无 |
无 |
2 |
IDLE |
已提交SET-UP请求 |
SETUP |
无 |
无 |
3 |
SETUP |
已完成全部SETUP任务,设备已就绪,可接收START命令 |
READY |
设备特有活动 |
无 |
4 |
READY |
设备从控制台或主机收到START命令 |
EXECUTING |
设备特有活动 |
无 |
5 |
EXECUTING |
需处理的任务已全部完成 |
IDLE |
无 |
无 |
6 |
PROCESSING ACTIVE |
设备从主机或控制台收到STOP指令 |
IDLE |
无 |
当EQP OFF-LINE状态发生时,设备的回复活动将被弃置 |
7 |
PROCESSING ACTIVE |
设备从主机或控制台收到ABORT命令 |
IDLE |
设备特有活动 |
无 |
8 |
PROCESS |
由于警报等因素,设备准备进入PAUSE状态 |
PAUSE |
设备特有活动 |
处理该问题时,通常需要设备操作员的协助 |
9 |
PROCESS |
设备从主机或控制台收到PAUSE指令 |
PAUSE |
设备特有活动 |
无 |
10 |
PAUSE |
设备从主机或控制台收到RESUME指令 |
回退到先前的PROCESS子状态 |
无 |
等待主机发送的S1F13 |
其中涉及到的状态如下:
- IDLE:设备正在等待指示。
- PROCESSING ACTIVE:此状态是存在处理程序执行上下文的所有子态的父状态。
- PROCESS:此状态是指处理程序的主动准备和执行的子状态的父状态。
- SETUP:在这种状态下,满足了工艺执行所需的所有外部条件,如确保材料存在于设备上,输入/输出端口处于正常状态,温度和压力值等参数在限制范围内等。
- 如果所有的设置操作都已经完成,将转换到下一个状态。
- READY:在这种状态下,设备已准备好要执行处理程序,并正在等待来自操作员或主机的启动命令。
- EXECUTING:处理程序执行中。
- PAUSE:处理程序暂停。
1.5 缓存数据状态模型
# |
当前状态 |
转换条件 |
新状态 |
设备行为 |
注 |
1 |
SPOOL INACTIVE |
通信状态从COMMUNICATING转为NOT COMMUNICATING,或者从WAIT CRA转为WAIT DELY,且此时缓存可用 |
SPOOL ACTIVE |
将变量SpoolConutActual、SpoolCountTotal置为0.主机相关的事务全部弃置。将变量SpoolStartTime设为当前时刻,通知操作员缓存已开启 |
已将每个AND子状态中的默认值输入,无法发送的消息仍保存在发送队列中,将在缓存状态中被处理。收集事件Spooling Activated已发生。 |
2 |
SPOOL NOT FULL |
生成了不能全部缓冲的数据 |
SPOOL FULL |
将变量SPOOLFULLTIME设为当前蚀刻,警示操作员当前缓存已满 |
无法放入缓存去的数据将在当前事务完成后处理。未发生收集事件。 |
3 |
SPOOL OUTPUT |
缓存区已清空 |
SPOOL INACTIVE |
停用缓存进程,警示操作员当前缓冲已终止 |
发生收集活动Spooling Deactivated。AND的子状态Spool Unload中包含的事务发生 |
4 |
NO SPOOL OUTPUT |
收到S6,F23消息且其中w/RSDC=1 |
PURGER SPOOL |
无 |
启动清理进程。未收到主机请求,因而不会发生收集活动 |
5 |
NO SPOOL OUTPUT |
收到S6,F23消息且其中w/RSDC=0 |
TRANSMIT SPOOL |
无 |
启动缓存区的消息传输。未收到主机请求,因而不会发生收集活动。 |
6 |
TRANSMIT SPOOL |
通信失败或已达到缓存最大传输量 |
NO SPOOL OUTPUT |
缓存传输进程暂停 |
通信失败将触发Spool Transmit Failure事件。当达到缓存最大传输量时则不会触发收集事件。 |
7 |
POWER ON |
设备电源关闭 |
POWER OFF |
无 |
缓存数据已在电源关闭前保存在非易失性存储介质中 |
8 |
POWER OFF |
设备电源恢复 |
POWER ON |
从非易失性存储介质中恢复缓存数据 |
如果在电源意外关闭前缓存已启动,那么恢复后缓存将继续进行;如果在设备掉电时,设备处于TRANSMIT SPOOL状态,因为设备刚启动,处于NOT COMMUNICATING状态,需要进行本表的事务#6. |
二、常见设备功能与场景*
2.1 定义
功能是由半导体制造设备所执行的操作。这些操作是通过使用SECS-II通信接口的消息发起的。场景是一组为了实现特定功能的SECS-II消息。
2.2 建立通信
注 |
主机 |
设备 |
注 |
|
|
|
通信状态可用 |
发起请求,建立通信 |
S1,F13 --> |
|
|
|
|
<-- S1,F14 |
回复COMMACK=Accept的消息,并将通信状态转为COMMUNICATING |
2.3 事件数据上报
l 设备数据收集事件
注 |
主机 |
设备 |
注 |
|
|
<-- S6,F5 |
[IF]报告为多BLOCK数据 [THEN]发送所需的多个BLOCK |
收到多BLOCK数据 |
S6,F6 --> |
|
|
|
|
|
[END IF] |
|
|
<-- S6,F11 |
设备发送的事件报告 |
主机确认收到事件报告 |
S6,F12 --> |
|
l 主机请求事件报告
注 |
主机 |
设备 |
注 |
主机请求一个事件报告 |
S6,F15 --> |
|
|
|
|
<-- S6,F16 |
设备发送对应事件报告 |
2.4 变量数据收集
主机可通过该功能查询设备变量,可用于初始化同步。
注 |
主机 |
设备 |
注 |
主机报告中的数据变量 |
S6,F19 --> |
|
|
|
|
<-- S6,F20 |
设备根据主机给出的报告ID回复对应的一组数据变量 |
2.5 跟踪数据收集
跟踪数据收集提供了一种定期采样数据的方法。这种基于时间的数据收集方法便于跟踪和分析数据的趋势,便于在某个时间段内重复收集应用程序数据,便于监测连续数据。
注 |
主机 |
设备 |
注 |
数据追踪初始化请求 |
S2,F23 --> |
|
|
|
|
<-- S2,F24 |
设备根据主机给出的报告ID回复对应的一组数据变量 |
2.6 状态数据收集
状态数据收集功能使主机可以向设备查询选定的状态信息,便于和设备状态保持同步。
注 |
主机 |
设备 |
注 |
主机请求已选取的状态变量值对应的报告 |
S1,F3 --> |
|
|
|
|
<-- S1,F4 |
设备根据主机选中的变量回复对应的状态变量数据 |
2.7 在线确认
注 |
主机 |
设备 |
注 |
Are you there? |
S1,F1 --> |
|
|
|
|
<-- S1,F2 |
设备使用MDLN(设备名)和SOFTREV(版本号)进行回复 |
2.8 报警管理
l 激活/关闭报警:
注 |
主机 |
设备 |
注 |
激活/关闭报警 |
S5,F3 --> |
|
|
|
|
<-- S5,F4 |
确认 |
l 上传报警信息:
注 |
主机 |
设备 |
注 |
请求报警数据/文本 |
S5,F5 --> |
|
|
|
|
<-- S5,F6 |
发送报警数据/文本 |
l 发送报警报告:
注 |
主机 |
设备 |
注 |
设备检测到警报 |
|
|
|
|
|
<-- S5,F1 |
如果可用,发送警报报告 |
确认 |
S5,F2 --> |
|
|
|
|
<-- S6,F11 |
如果可用,发送事件报告 |
确认 |
S6,F12 --> |
|
2.9 远程控制
远程控制功能使主机按不同级别对设备请求执行操作。设备向主机提供的操作包括:开始工艺、选择工艺配方、停止工艺、暂停工艺、恢复工艺和取消工艺。
注 |
主机 |
设备 |
注 |
主机发出指令 |
S2,F41 --> |
|
|
|
|
<-- S2,F42 |
确认主机命令 [IF] 接受主机命令(HCACK=0 / 4) |
|
|
<-- S6,F11 |
[THEN]发送状态转换/其他数据收集事件报告 |
事件报告确认 |
S6,F12 --> |
|
2.10 设备常量
为主机提供一种读取和更改设备上所选设备常量值的方法。
l 主机发送设备常量:
注 |
主机 |
设备 |
注 |
主机发送设备常量 |
S2,F15 --> |
|
|
|
|
<-- S2,F16 |
EAC = 0,设备配置对应常量 |
l 主机请求设备常量:
注 |
主机 |
设备 |
注 |
主机请求设备常量 |
S2,F13 --> |
|
|
|
|
<-- S2,F14 |
发送设备常量数据 |
2.11 物料运输
原料运输功能包括原料在设备、缓冲区和载具之间的物理传输。该功能可以通知主机原料是否已从设备的某个端口接收或传输。
注 |
主机 |
设备 |
注 |
|
|
<-- S6,F11 |
设备在PORT处已发送或接收原料。 向主机发送收集事件。 |
主机确认 |
S6,F12 --> |
|
2.12 设备终端服务
设备终端服务允许主机能够在设备的显示器上显示信息,操作员能够在设备工作站与主机交换信息。
注 |
主机 |
设备 |
注 |
主机发送文本信息给设备,在终端上展示给操作员 |
S10,F3 --> |
|
|
|
|
<-- S10,F4 |
设备确认文本展示请求(并设置未确认消息的指示器) 操作员进行消息识别(未确认的消息将被清除) |
|
|
<-- S6,F11 |
发送状态转换/其他数据收集事件报告 |
事件报告确认 |
S6,F12 --> |
|
|
|
|
<-- S10,F1 |
操作员通过终端响应相应的文本信息 |
主机确认接收操作员发送文本 |
S10,F2 --> |
|
2.13 错误消息
错误消息是由设备向主机提供的特定消息或通信故障的原因信息。
l 未识别设备ID导致的通信错误:
注 |
主机 |
设备 |
注 |
主机发送Message |
Sx,Fy --> |
|
|
|
|
<-- S9,F1 |
设备检测到主机发送的消息中包含一个未识别的设备ID,并报告主机检测结果 |
2.14 时钟
时钟功能使主机能够管理与设备相关的与时间相关的活动和事件,其主要目的是为收集事件和警报报告提供时间戳(时间戳的使用利于分清事件或警报的发生顺序,并使主机能够调度设备行为)。
该功能使主机能把设备的内部时钟设定为某个特定值,同时设备也可以向主机询问当前日期和时间。
l 主机命令设备设置时钟
注 |
主机 |
设备 |
注 |
主机指示设备设置当前时间 |
S2,F31 --> |
|
|
|
|
<-- S2,F32 |
设备根据主机发送的时间设置自己的内部时间,并返回确认消息。 |
2.15 控制
控制功能用于配置并操作控制状态,使用户或主机可以修改设备的控制相关行为。
l 设备转换状态至ON-LINE
注 |
主机 |
设备 |
注 |
|
|
<-- S1,F1 |
“Are You There” |
主机确认 |
S1,F2 --> |
|
|
|
|
<-- S6,F11 |
报告事件“设备转为ON-LINE” |
主机确认 |
S6,F12 --> |
|
下一节:GEM300(12寸)