3. SVID与VID的命名规范
SVID(状态变量ID)和VID(数据变量ID)是SECS/GEM通信中标识设备数据点的唯一键。合理的命名规范直接影响设备集成效率、上位机解析正确率以及后期维护成本。本章从编号规则、行业标准分配和自定义注意事项三个层面展开。
3.1 编号规则:SVID与VID的ID结构
SEMI标准规定SVID和VID均为无符号4字节整数(U4),取值范围为0~4,294,967,295。编号本身不携带语义,但行业惯例和标准文档对特定区间做了功能划分。
| 区间 | 范围 | 用途 | 示例 |
|---|---|---|---|
| 标准保留区 | 0 – 999 | SEMI标准定义的通用变量 | SVID 1 = 设备状态 |
| 设备商自定义区 | 1,000 – 32,767 | 设备制造商分配的私有变量 | SVID 1001 = 腔体压力 |
| 用户扩展区 | 32,768 – 65,535 | 最终用户或系统集成商自定义 | VID 50000 = 批次配方参数 |
| 保留/未来扩展 | 65,536 – 4,294,967,295 | 标准预留,不建议使用 | — |
实践建议:设备商自定义区(1,000–32,767)是最常用的分配区间。建议将SVID和VID的编号空间分开管理,避免冲突。例如SVID使用1,000–9,999,VID使用10,000–32,767。
编号规则核心原则:
- 唯一性:同一设备内SVID不可重复,VID不可重复,SVID与VID之间可以重复(属于不同命名空间)。
- 稳定性:一旦发布,已分配的ID不应变更,废弃ID应标记为“已废弃”而非重用。
- 可扩展性:预留连续区间给未来新增变量,避免碎片化。
3.2 行业标准中的常见变量ID分配
SEMI E5(SECS-II)、E30(GEM)和E37(HSMS)等标准文档中定义了一组通用SVID和VID,用于实现设备与主机之间的基本互操作。这些标准变量是所有GEM兼容设备必须或应当支持的。
3.2.1 SEMI E5/E30 标准SVID(部分)
| SVID | 变量名 | 数据类型 | 描述 | 支持级别 |
|---|---|---|---|---|
| 1 | MDLN | ASCII | 设备型号 | 必须 |
| 2 | SOFTREV | ASCII | 软件版本 | 必须 |
| 3 | DEVICE_ID | U2 | 设备ID | 必须 |
| 4 | COMM_STATUS | B | 通信状态 | 应当 |
| 5 | CONTROL_STATE | B | 控制状态 | 应当 |
| 6 | PROCESS_STATE | B | 工艺状态 | 应当 |
3.2.2 SEMI E30 标准VID(部分)
| VID | 变量名 | 数据类型 | 描述 | 支持级别 |
|---|---|---|---|---|
| 1 | LOT_ID | ASCII | 批次ID | 必须 |
| 2 | WAFER_ID | ASCII | 晶圆ID | 必须 |
| 3 | RECIPE_ID | ASCII | 配方ID | 应当 |
| 4 | OPERATOR_ID | ASCII | 操作员ID | 可选 |
| 5 | PRODUCT_ID | ASCII | 产品ID | 可选 |
注意:标准变量ID(0–999)的分配由SEMI国际标准委员会管理。设备商不得自行占用标准保留区内的ID,除非该ID对应的标准变量确实被实现。误用标准ID会导致上位机解析错误。
3.3 自定义变量ID的注意事项
在实际项目中,标准变量往往无法覆盖所有设备特性,自定义变量是不可避免的。以下是经过多个半导体Fab项目验证的注意事项清单。
3.3.1 命名与编号原则
- 语义化命名:变量名应清晰反映物理含义,例如
Chamber1_Pressure优于CP1。 - 编号连续性:按功能模块分组分配ID区间,例如:
- 腔体相关:1,000–1,999
- 温度传感器:2,000–2,999
- 压力传感器:3,000–3,999
- 流量控制器:4,000–4,999
- 避免ID跳跃:不要随意跳过大量ID,防止未来扩展时区间碎片化。
- 数据类型固定:同一ID的数据类型一旦确定,不得更改。例如SVID 1001定义为F4(浮点),后续不能改为U4。
3.3.2 文档与版本管理
| 文档要素 | 要求 | 示例 |
|---|---|---|
| 变量定义表 | 包含ID、名称、类型、单位、范围、默认值 | SVID 1001, Chamber1_Pressure, F4, Torr, 0–1000 |
| 变更记录 | 每次新增/废弃/修改需记录版本号和日期 | v2.1 2024-03-15 新增SVID 1010 |
| 兼容性说明 | 标注哪些变量影响上位机兼容性 | SVID 1001 变更会影响历史数据解析 |
3.3.3 常见错误与避坑
避坑清单:
- ❌ 重用废弃ID:废弃ID应永久保留,新变量使用新ID,否则历史数据解析会错乱。
- ❌ 使用标准保留区ID:即使标准变量未实现,也不要用0–999区间定义私有变量。
- ❌ 数据类型不一致:同一ID在不同版本中改变数据类型,会导致SVID/VID读取失败。
- ❌ 无文档分配:口头约定ID分配,后期人员变动后无人知晓变量含义。
- ❌ 忽略单位:不标注单位会导致上位机显示错误数值(如Pa vs Torr)。
3.3.4 自定义变量ID分配示例
// 设备商自定义SVID分配示例(某刻蚀设备)
// 区间分配:
// 1,000–1,099: 系统状态
// 1,100–1,199: 腔体1
// 1,200–1,299: 腔体2
// 1,300–1,399: 气体系统
SVID 1000 = System_Status // U2, 0=Idle, 1=Running, 2=Alarm
SVID 1001 = System_Uptime // U4, 秒
SVID 1100 = Chamber1_Pressure // F4, Torr
SVID 1101 = Chamber1_Temperature // F4, °C
SVID 1102 = Chamber1_Power // F4, W
SVID 1200 = Chamber2_Pressure // F4, Torr
SVID 1201 = Chamber2_Temperature // F4, °C
SVID 1300 = Gas1_FlowRate // F4, sccm
SVID 1301 = Gas2_FlowRate // F4, sccm
最佳实践:在设备交付前,向客户提供完整的SVID/VID变量定义手册(PDF或Excel格式),并包含在设备的SECS/GEM通信文档中。建议同时提供一份机器可读的变量定义文件(如JSON或XML),方便上位机自动导入。