DeepDataFlow
Earlgrey in G2:用開源工具和 AI 助手跑百萬單元 SoC · 第 5 篇,共 6 篇

和 Claude Code 一起做晶片流程

誰做了什麼、記下十六個決定的無人值守之夜、助手的錯誤以及它們變成的規則,還有為什麼 G2 的結構讓助手的工作可以被審查。

發佈日期 2026-10-22 · 第 5 篇,共 6 篇 · DeepDataFlow

第 2 篇到第 4 篇講的是晶片。這一篇講工作是怎麼完成的。這個專案裡大部分動手的工作,是由 Anthropic 的 AI 程式設計助手 Claude Code 完成的,它在 G2 裡工作,和一位工程師並肩合作。下面是這種合作怎麼進行,也包括出錯的地方。

兩個角色

分工很簡單:

Claude Code工程師
透過 G2 自己的命令跑流程設定目標和限制
讀日誌和報告做決定:選項 A 還是 B、用哪個 floorplan、「還是先完成」
診斷失敗提出改變方向的問題
寫腳本、修正和報告批准任何要公開的東西

簡單說:助手出手,工程師出判斷。

有一條規則從一開始就很重要:每一個流程步驟都透過 G2 的 API,也就是 WebUI 按鈕呼叫的同一組 sd -e 命令。助手不用臨時寫的 shell 腳本去跑工具。當它需要的步驟沒有 API 時,那就是一個要回報並補上的缺口,而不是要繞過去的東西。這讓每一次執行都留在 G2 的記錄裡,工程師都看得到。

2:10

在 YouTube 觀看(英文) ↗在 Bilibili 觀看(中文) ↗

無人值守的一夜

10 月 13 日 21:40,工程師交出了大約十個小時,只有一個指示:能走多遠就走多遠,只有遇到真正需要決定的事才停下來。到了第二天早上 07:00:

  • otbn v5 繞通了。 四次繞線失敗,一個接一個被診斷並修好(故事在第 2 篇)。
  • 七個模組完成了繞線後處理和 finish,並生成了它們的 IP 視圖(抽象 LEF、時序模型、black box stub)。
  • i2c 先做: 新的 finish 腳本先在最便宜的模組上測試,再用到昂貴的模組。
  • 晶片 v2 的腳本準備好了: 電源網路和 floorplan。
  • 記下了十六個決定, 每個都附上原因。

決策記錄

每個不顯而易見的選擇都有一條記錄,分四部分:時間、決定了什麼、為什麼,以及標籤。那一晚的兩個例子:把重新分析時序合併進一個 G2 階段,而不是另寫一個腳本;新腳本先在最便宜的模組上測試。每條記錄都很短,而讓它有用的是「為什麼」那一行。

七天裡(10 月 13 日到 19 日),這份記錄累積了 101 條。工程師第二天早上幾分鐘就能看完整晚的工作,而不用從日誌裡重建。

每天的決策記錄條數。13 日晚上就是那次無人值守的執行。
每天的決策記錄條數。13 日晚上就是那次無人值守的執行。

錯誤變成了規則

助手犯過錯。每個錯誤都有代價,而每個錯誤都變成了一條書面規則:

發生了什麼規則
助手自己設的四小時 timeout 殺掉了一次佈局執行,什麼輸出都沒有。長時間的 EDA 執行不設 timeout。
它在一個已有的版本上重跑模組,覆蓋了第一次的結果。每次執行一個新版本。
它把探測放在專案之外的臨時資料夾裡。檢查要做成 G2 階段,放在測試版本裡,附上 README。
它把 SPEF 的 bug 怪到時脈樹工具上。和同一段程式寫對的地方比較。
它提議在 OpenROAD 裡分析晶片時序。簽核留在獨立的工具裡。
它在等一些永遠不可能成立的條件。工程師問了三次「為什麼在等?」。先確認等待能結束,並讓 timeout 會回報。
每條規則背後都有一個故事。
每條規則背後都有一個故事。

SPEF 的案例最能說明這種合作。助手最初的推論說得通,還追蹤了一個 buffer 作為證據。工程師沒有和證據爭辯,而是問了一個更好的問題:同一個檔案把這個模組合成出來的 net 都寫對了,那這裡有什麼不同?這把搜尋方向從時脈樹工具移到了 SPEF 的寫出程式,bug 就在那裡(第 4 篇)。

寫給 AI 的規則

這些規則寫在一份純文字指南裡,下一個助手在動任何 G2 專案之前都會先讀它。裡面有十條黃金規則:

  1. 每一步都用 G2 的 API。
  2. 每次執行一個新版本。
  3. 檢查要做成 G2 階段。
  4. 建立測試案例之前先問。
  5. 任何公開的東西之前先問。
  6. 一次一個 EDA 任務,最多 10 個執行緒。
  7. 長時間的執行不設 timeout。
  8. 簽核時序用獨立的 OpenSTA。
  9. 時序分析用 G2 的時序路徑資料。
  10. 示範執行不等於收斂:記下遺留問題,繼續往前。

其中有些是任何晶片團隊都認得的工程慣例。另一些,例如「任何公開的東西之前先問」和「先確認等待能結束」,則是和助手一起工作才特有的。第 5 條涵蓋了提交到上游的 bug 報告:issue 和 pull request 由助手準備,但在工程師同意之前什麼都沒有發布。

為什麼在 G2 裡行得通

一個無人值守跑十個小時的助手,留下的工作必須讓人能很快審查、也能信任。G2 的結構做到了大部分:

  • 每次執行都是一個版本。 助手做的任何事都不會覆蓋結果,所以一次糟糕的執行只損失時間,不損失資料。
  • 每一步都是一個階段,有日誌、QoR 摘要和 README。助手在執行結束時寫 README:目的、結果、下一步。
  • 決定都寫下來了,在決策記錄裡:時間、決定了什麼、為什麼。
  • 同一組頁面。 工程師審查的,就是助手寫入的同一組 WebUI 頁面。沒有另一份需要信任或懷疑的報告。
晶片在 G2 裡的 14 個版本。每一行都是助手或工程師啟動的一次執行,沒有一個被覆蓋。
晶片在 G2 裡的 14 個版本。每一行都是助手或工程師啟動的一次執行,沒有一個被覆蓋。

想對其他團隊說的

  • 給助手一個犯錯很便宜的結構:版本、階段,以及寫下原因的地方。
  • 把每個錯誤變成一條下一次工作階段會讀的書面規則。只在對話裡給的糾正不會留下來。
  • 有後果的決定,以及任何公開的東西,都留給人來做。
  • 讀決策記錄。這是審查你沒有在旁邊看著的工作最快的方法。

下一篇是最後一篇:一顆百萬單元的晶片在一台筆電上要花多少記憶體和執行時間,以及什麼時候更多機器會有幫助。