配完 GEM 模型)
做半導(dǎo)體設(shè)備自動(dòng)化EAP/SECS-GEM開發(fā)的朋友應(yīng)該都有過這樣的經(jīng)歷客戶突然改需求——“再給我加 50 個(gè) SVID15 個(gè) AlarmRecipe 變量也要調(diào)整”。你打開那個(gè) 3000 行的 XML 文件開始手動(dòng)改標(biāo)簽、調(diào)屬性、對引用關(guān)系……改完編譯報(bào)錯(cuò)排了 2 小時(shí)發(fā)現(xiàn)是少了一個(gè)閉合標(biāo)簽。這不是段子是大多數(shù)設(shè)備商 EAP 團(tuán)隊(duì)的日常。今天聊一款我最近深度使用的SECS/GEM 通信模型 XML 配置工具——它讓配一套完整的 GEM200 GEM300 模型這件事從幾天壓縮到 1 小時(shí)。一、手寫 XML 的痛苦誰寫誰知道在講工具之前先說說我們之前純手寫的痛點(diǎn)。一份標(biāo)準(zhǔn)的 EAP 設(shè)備模型 XML通常包含GEM200 基礎(chǔ)層HSMS 通信參數(shù)、SVID/ECID 變量、CEID 事件、ALID 報(bào)警、Remote Command、Terminal、Clock、LogGEM300 高級層E87 Carrier載具管理、E90 Substrate基板追蹤、E40 ProcessJob工藝作業(yè)、E94 ControlJob控制作業(yè)Equipment 設(shè)備層Module模塊、LoadPort負(fù)載端口、WaferMap晶圓圖譜一個(gè)中等復(fù)雜度的 300mm 設(shè)備XML 輕松突破5000 行。手寫意味著痛點(diǎn)后果標(biāo)簽拼寫錯(cuò)誤如/EibModel:Event少個(gè)斜杠運(yùn)行時(shí)才報(bào)錯(cuò)排查 2 小時(shí)SVID/CEID/ALID 引用關(guān)系錯(cuò)亂Host 收到事件但數(shù)據(jù)是空的屬性值類型不匹配該填 int 填了 string設(shè)備啟動(dòng)直接崩潰不同模塊間 ID 沖突調(diào)試階段才發(fā)現(xiàn)兩個(gè)變量共用一個(gè) VID客戶改需求要全局搜索替換改一處漏三處回歸測試全跑一遍最要命的是SEMI 標(biāo)準(zhǔn)文檔有幾千頁手寫 XML 等于把標(biāo)準(zhǔn)文檔再實(shí)現(xiàn)一遍。二、這款工具是什么簡單說它是SECS/GEM 通信模型的 XML 可視化建模器。核心思路把 SEMI 標(biāo)準(zhǔn)的對象模型用樹狀導(dǎo)航 表單界面來管理最終導(dǎo)出合規(guī)的 XML 文件。你不需要記住 XML 標(biāo)簽怎么寫不需要查文檔確認(rèn)屬性名拼寫只需要在表單里填值、下拉框里選枚舉、點(diǎn) Set 保存。界面全景工具左側(cè)是功能導(dǎo)航樹按 SEMI 標(biāo)準(zhǔn)分層組織GEM200 ├── Hsms通信參數(shù) ├── VariableSVID/ECID 管理 ├── EventCEID 管理 ├── Report報(bào)告映射 ├── AlarmALID 管理 ├── Terminal終端服務(wù) ├── Clock時(shí)鐘同步 ├── Command遠(yuǎn)程命令 └── Log日志配置 GEM300 ├── E87 Carrier載具管理 ├── E90 Substrate基板追蹤 ├── E94 ControlJob控制作業(yè) ├── E40 ProcessJob工藝作業(yè) └── Module Track模塊追蹤 Equipment ├── Module設(shè)備模塊 ├── LoadPort負(fù)載端口 └── WaferMap晶圓圖譜右側(cè)是對應(yīng)模塊的表單配置區(qū)每個(gè)參數(shù)都有下拉選擇、輸入校驗(yàn)、關(guān)聯(lián)檢查。三、實(shí)戰(zhàn)演示1 小時(shí)配完一套 GEM 模型下面以配置一臺(tái) 300mm 刻蝕設(shè)備的完整 GEM 接口為例展示工具的實(shí)戰(zhàn)效率。Step 1GEM200 基礎(chǔ)通信配置10 分鐘打開工具選中GEM200 → Setting右側(cè)出現(xiàn)基礎(chǔ)通信表單Local IP填192.168.1.100設(shè)備網(wǎng)卡 IPLocal Port填5000Device ID填1Mode下拉選Passive300mm Fab 標(biāo)配LinkTestInterval填6000060 秒心跳InitControlState下拉選OnlineLocalDefaultOnlineState下拉選OnlineLocalAttemptOnlineFail下拉選HostOfflineT3~T8 超時(shí)分別填45000 / 10000 / 50000 / 10000 / 5000關(guān)鍵點(diǎn)Mode、ControlState 這些值都是下拉枚舉不會(huì)出現(xiàn)手滑填錯(cuò)字符串導(dǎo)致狀態(tài)機(jī)不認(rèn)的問題。Step 2VariablesSVID/ECID批量配置15 分鐘選中GEM200 → Variable進(jìn)入變量管理界面。左側(cè)表單填單個(gè)變量Module Name下拉選InTool300mmName填ChamberPressureParameter Type下拉選FloatDataClassification下拉選DataUnit填mTorrVID填10001VID Type下拉選SVID點(diǎn)Add保存。右側(cè)表格實(shí)時(shí)顯示所有已配置的變量VidVID TypeAttributeNameAttributeTypeValue20ECIDLotIDStringDatanull50001SVIDPortIdentifierStringData110DVIDPressureFloatDatanull11DVIDTemperatureFloatDatanull160SVIDCarrierRecreateSupportedBooleantrue效率提升點(diǎn)不用手寫EibModel:Variable標(biāo)簽Classification 下拉選Configuration / Control / Data避免分類錯(cuò)誤表格視圖一目了然哪個(gè) VID 沒填、哪個(gè)重復(fù)秒發(fā)現(xiàn)實(shí)操經(jīng)驗(yàn)一臺(tái)刻蝕腔有 200 傳感器通道。我建議全部暴露成 SVID寧多勿少。后期客戶要做 FDC故障檢測時(shí)缺數(shù)據(jù)才是真災(zāi)難。Step 3Events Reports 事件報(bào)告配置15 分鐘選中GEM200 → Event配置 Collection EventCEIDNameDescription802PressureMeasurementMade壓力測量完成400001ProcessingStarted加工開始400002ProcessingCompleted加工完成400003ProcessingStopped加工停止400004ProcessStateChange加工狀態(tài)變更然后選中GEM200 → Report建立Event → Report → VIDS的映射鏈CEIDCEIDNameReportIDVIDS816OperatorCommandIssued3210;11;12;815MessageRecognition3112;802PressureMeasurementMade3011;12;801TestMeasurementMade2910;12;這是 SECS/GEM 最容易出錯(cuò)的地方——Event 觸發(fā)后Host 收到的數(shù)據(jù)取決于 Report 里綁定的 VIDS 列表。手寫 XML 時(shí)VID 引用錯(cuò)了完全沒提示用工具綁定關(guān)系在表格里可視化校驗(yàn)一目了然。Step 4Alarms 報(bào)警配置10 分鐘選中GEM200 → Alarm配置設(shè)備報(bào)警ALIDNameDescriptionSetCEIDClearCEID55ExceptionCondition55異常條件 551000510006100ExceptionCondition100異常條件 1001000110002101ExceptionCondition101異常條件 101101011010299999UnknownException未知異?!總€(gè)報(bào)警綁定Set CEID觸發(fā)事件和Clear CEID清除事件Host 就能精確區(qū)分報(bào)警發(fā)生了和報(bào)警解除了。踩坑經(jīng)驗(yàn)之前手寫 XML 時(shí)ClearCEID 漏配過結(jié)果 Host 端報(bào)警永遠(yuǎn)消不掉Fab 驗(yàn)收直接打回。用工具表單配置Set/Clear 兩個(gè)字段并排展示想漏都難。Step 5E87 Carrier 載具管理配置5 分鐘切換到GEM300 → E87 Carrier配置載具狀態(tài)機(jī)事件Carrier Service Events載具狀態(tài)轉(zhuǎn)換事件IDNameStatemap1301CarrierSMTrans01NoState → IDNotRead1302CarrierSMTrans02IDNotRead → WaitingForHost1303CarrierSMTrans03IDVerified → Clamped………1313CarrierSMTrans13Complete → NotAccessedCarrier Service Location Events載具位置事件IDName1351CarrierLocationChange1352CarrierClamped1353CarrierClosed1354CarrierOpened1355CarrierUnclamped關(guān)鍵參數(shù)配置在 Equipment 節(jié)點(diǎn)下選中 LoadPort配置clampControl 1全自動(dòng) Fab 必須否則 AMHS 來了不松夾carrierHoldControl 0accessMode AUTO關(guān)于clampControl的坑我之前單獨(dú)寫過一篇文章《E87 ClampControl 這個(gè)參數(shù)90% 的設(shè)備商都沒配對》感興趣可以翻我博客。Step 6導(dǎo)出 XML 并驗(yàn)證5 分鐘所有模塊配置完成后點(diǎn)擊Export導(dǎo)出工具自動(dòng)生成符合 SEMI 標(biāo)準(zhǔn)的 XML 文件D:\git\demo0000\gem300\代碼\代碼\AutomationServices\InTool300mmModel.xml文件包含完整的EibModel:E87LoadportSystem節(jié)點(diǎn)含 clampControl、carrierHoldControl 等屬性EibModel:Variable列表EibModel:Event與EibModel:Report映射EibModel:Alarm定義EibModel:Command及參數(shù)配置導(dǎo)出后用 EAP 運(yùn)行時(shí)加載 XML啟動(dòng)設(shè)備Host 端 Simulator 連接測試一次通過。四、效率對比手寫 vs 工具配置任務(wù)手寫 XML用這款工具效率提升GEM200 基礎(chǔ)配置4 小時(shí)10 分鐘24x50 個(gè) SVID 錄入3 小時(shí)15 分鐘12x20 個(gè) Event Report 映射4 小時(shí)15 分鐘16x15 個(gè) Alarm 配置2 小時(shí)10 分鐘12xE87 狀態(tài)機(jī)事件3 小時(shí)5 分鐘36x導(dǎo)出 驗(yàn)證1 小時(shí)5 分鐘12x總計(jì)17 小時(shí)2 天1 小時(shí)≈17x這還只是從零新建的場景。如果是客戶改需求、加變量、調(diào)參數(shù)的日常維護(hù)工具的優(yōu)勢更大——改個(gè)值點(diǎn) Set不用翻 5000 行 XML 找位置。五、工具的核心價(jià)值不只是快1. 降低出錯(cuò)率下拉枚舉防止非法值如 Mode 只能選 Active/Passive表單校驗(yàn)防止類型不匹配該填 int 的不會(huì)讓你填 string引用關(guān)系可視化Event → Report → VID 鏈路一目了然2. 降低門檻不需要熟讀 3000 頁 SEMI 標(biāo)準(zhǔn)文檔才能上手工藝工程師也能參與模型配置不依賴核心開發(fā)新人 1 天可上手手寫 XML 至少要 2 周培訓(xùn)3. 配置與代碼解耦XML 模型是靜態(tài)描述文件供 EAP 運(yùn)行時(shí)加載改配置不改代碼不用重新編譯、不用重新認(rèn)證同一套代碼 不同 XML 適配不同客戶/不同設(shè)備型號4. 版本可管理XML 文件天然適合 Git 版本管理每次變更有 diff可審計(jì)、可回滾多客戶項(xiàng)目并行配置互不干擾六、適用場景場景是否推薦理由設(shè)備 OEM 出廠 GEM 接口配置? 強(qiáng)烈推薦不同客戶配置不同工具化是剛需Fab 現(xiàn)場 EAP 集成調(diào)試? 推薦快速響應(yīng) Host 端變更需求通信仿真與離線聯(lián)調(diào)? 推薦配好 XML 直接跑 Simulator老舊設(shè)備 SECS-I 改造?? 視情況需確認(rèn)工具是否支持 SECS-I純運(yùn)行時(shí)監(jiān)控? 不適用這是配置工具不是監(jiān)控軟件七、寫在最后半導(dǎo)體自動(dòng)化的難點(diǎn)從來不是把消息發(fā)出去而是讓設(shè)備在 7×24 小時(shí)、網(wǎng)絡(luò)抖動(dòng)、操作員誤觸的真實(shí)環(huán)境里依然穩(wěn)得像塊石頭。而穩(wěn)的第一步是模型配置不出錯(cuò)。手寫 5000 行 XML出錯(cuò)是必然不出錯(cuò)才是偶然。用對工具把精力花在真正重要的事上——業(yè)務(wù)邏輯、狀態(tài)機(jī)、客戶價(jià)值——而不是和 XML 語法較勁。如果你也在做 SECS/GEM 或 GEM300 相關(guān)開發(fā)歡迎在評論區(qū)聊聊你現(xiàn)在的配置方式咱們一起把效率卷上去。系列文章預(yù)告《做 SECS/GEM 這些年我踩過的 7 個(gè)最致命的坑》《E87 ClampControl 這個(gè)參數(shù)90% 的設(shè)備商都沒配對》《E40 ProcessJob 與 E94 ControlJob別再搞混了》覺得有用請點(diǎn)贊 收藏你的支持是我持續(xù)輸出干貨的動(dòng)力 —— 一個(gè)在半導(dǎo)體自動(dòng)化領(lǐng)域摸爬滾打的 EAP 工程師