GOF(Gates On the Fly)是一款功能 ECO(Functional ECO)工具,可以对门级网表做自动化修补。它自带的 examples/ai_eco 例程演示了 "RTL guided ECO" 流程:对比新旧 RTL 找出差异点,再在实现网表上自动插入/修改逻辑门,最后输出 ECO 后的网表和 Perl 脚本。
最近 GOF 提供了 AI 辅助能力:通过一个 gofai_server.py WebSocket 服务,让 AI Agent(如 Claude Code、Codex、Kimi 等 CLI 工具)可以直接驱动 GOF 完成 ECO 任务。本文记录用 Hermes Agent(Nous Research 开源的 AI Agent)+ Kimi K3 模型 + gof-ai skill 跑通整个流程的过程,包括踩坑和解决方案。
关键点:skill 把 "怎么驱动 GOF" 这件事沉淀成了可复用的流程文档,Agent 拿到用户的自然语言需求(甚至只是一个 spec 文件路径)后,按 skill 步骤执行即可,不需要人手工写 GOF API 脚本。
OS: RHEL 8 兼容环境 (4.18 内核)
GOF: 安装在 ~/tools/GOF(即 GOFDIR),含 bin/gof、scripts/gofai_server.py、examples/ai_eco/
Hermes Agent TUI,模型 kimi-k3
gof-ai skill 已安装到 Hermes(skill 内容:启动 server → 生成脚本 → 运行 → 离开等待)
测试用的 spec 文件 eco_spec1.txt 内容就是一段自然语言:
在 Hermes TUI 里直接说:
Agent 自动加载 gof-ai skill,然后按流程执行。
skill 标准做法是用 tmux 起 server:
server 是一个 Python WebSocket 服务,默认监听 11998 端口,负责把 GOF 运行状态回传给 AI 平台。
Agent 把 spec 文件转成 GOF Perl API 脚本(时间戳命名,如 eco_script_1785736018.pl):
这份脚本完全是 Agent 根据 skill 里的 API 说明和范例自动生成的,人工零干预。
这套流程对环境有几个前置要求,建议按下表逐项检查,确认无误后再发起任务,可以一次跑通:
skill 的标准流程用 tmux 管理 server 会话、xterm 弹窗跑 client,最小化安装的机器通常没有:
如果没有 tmux,可以临时用 screen 代替;client 端也可以让 Agent 用后台进程跑(我们的实测就是这样)。
gofai_server.py 的 shebang 是 #!/usr/bin/env python,且依赖 websockets 模块。两点注意:
很多服务器只有 python3 没有 python,直接执行会报 No such file or directory
不要 直接 pip install --user websockets —— 如果机器上跑着 Hermes Agent(它 pin 了 websockets==15.0.1),装最新版会污染环境把 Agent 搞坏
正确做法是给 GOF 建独立 venv,并把 shebang 指向它:
修改 gofai_server.py 和 verilog2spec.py 的第一行:
这样脚本直接执行就走隔离环境,和系统里其他 Python 应用互不干扰。
xterm 弹窗需要 X server。纯 SSH 终端 DISPLAY 为空,xterm 弹不出窗口 —— client 端改用后台进程 + 完成通知即可,效果一样;tmux server 不受影响。如果有 VNC/本地桌面,则可以用 skill 的弹窗模式。
Hermes 里需已安装 gof-ai skill(内容:启动 server → 生成脚本 → 运行)。Agent 拿到任务后会自动加载,无需手工干预。
一次通过:
PL_FIX_GOOD —— 算法自动修复成功,只新增 4 个门
check_design 干净,无 floating 等问题
输出 output_rtl_guided_eco.v(ECO 后网表)和 output_rtl_guided_eco.pl(可回放的 ECO 脚本)
一个小提示:进程退出码 29 只是 "后台模式没有交互 shell" 的提示,GOF 本身正常退出,不影响结果。
这套 "Agent + Skill + EDA 工具" 的组合有几个明显的好处:
自然语言直达 EDA 流程 —— 用户只需要给一个 spec 文件路径,GOF 脚本生成、server 管理、运行监控全部由 Agent 完成
Skill 沉淀流程知识 —— GOF 的 API 用法、脚本模板、注意事项都固化在 gof-ai skill 里,换个人、换个会话都一样能用
环境自愈能力 —— 遇到 tmux/python/websockets 缺失时,Agent 能自己诊断并给出 venv 隔离这类不污染系统的解法,还把结论写进了持久记忆,下次直接绕开坑
对 EDA 工程师来说,这意味着 ECO 这类重复性高、脚本模板固定的工作,可以真正交给 AI Agent 端到端跑完,人只需要检查结果。