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 个版本。每一行都是助手或工程师启动的一次运行,没有一个被覆盖。

想对其他团队说的

  • 给助手一个犯错很便宜的结构:版本、阶段,以及写下原因的地方。
  • 把每个错误变成一条下一次会话会读的书面规则。只在对话里给的纠正不会留下来。
  • 有后果的决定,以及任何公开的东西,都留给人来做。
  • 读决策记录。这是审查你没有在旁边看着的工作最快的方法。

下一篇是最后一篇:一颗百万单元的芯片在一台笔记本上要花多少内存和运行时间,以及什么时候更多机器会有帮助。