记录用 Hermes Agent(Nous Research 开源 AI Agent)搭配 Kimi K3 模型和 gof-ai skill,跑通 GOF 功能 ECO 工具自带 ai_eco 例程的全过程。内容涵盖整体架构、自然语言 spec 直达 ECO 流程的执行步骤、事前环境准备清单(tmux/xterm、Python venv 隔离、DISPLAY 检查),以及最终 ECO 修复结果。对想用 AI Agent 自动化 EDA 流程的工程师有参考价值。
用 Hermes Agent + Kimi K3 + GOF Skill 跑通 GOF AI ECO 例程
背景
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 跑通整个流程的过程,包括踩坑和解决方案。
整体架构
用户(自然语言需求)
|
Hermes Agent (kimi-k3 模型)
| 加载 gof-ai skill(内置 prompt 流程)
|-- 1. 启动 gofai_server.py (tmux 会话, 监听 11998 端口)
|-- 2. 把需求转成 GOF Perl 脚本 eco_script_<timestamp>.pl
|-- 3. 调用 bin/gof -run eco_script_<ts>.pl 执行
v
GOF 引擎:读 lib/RTL/netlist -> rtl_compare -> fix_design -> 输出 ECO 网表
关键点: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 内容就是一段自然语言:
Do RTL guided ECO on netlist /home/billc/projects/goftest/ai_eco/imp_net.v
The library is /home/billc/projects/goftest/ai_eco/art.m.simple2.LIB
The original rtl is /home/billc/projects/goftest/ai_eco/imp_rtl.sv
The new rtl is /home/billc/projects/goftest/ai_eco/ref_rtl.sv
The top level module name is testtop
Set test_mode to constant zero
执行过程
一句话发起任务
在 Hermes TUI 里直接说:
use gof to do eco spec file projects/goftest/ai_eco/eco_spec1.txt
Agent 自动加载 gof-ai skill,然后按流程执行。
Step 1: 启动 GOFAI Server
skill 标准做法是用 tmux 起 server:
tmux new-session -d -s "GOFAI_SERVER" "$GOFDIR/scripts/gofai_server.py --platform kimi"
server 是一个 Python WebSocket 服务,默认监听 11998 端口,负责把 GOF 运行状态回传给 AI 平台。
Step 2: 生成 GOF 运行脚本
Agent 把 spec 文件转成 GOF Perl API 脚本(时间戳命名,如 eco_script_1785736018.pl):
use strict;
setup_eco("rtl_guided_eco");
set_log_file("rtl_guided_eco.log");
read_library("/home/billc/projects/goftest/ai_eco/art.m.simple2.LIB");
set_llm_effort(0);
read_rtl('-ref', "/home/billc/projects/goftest/ai_eco/ref_rtl.sv");
read_rtl('-imp', "/home/billc/projects/goftest/ai_eco/imp_rtl.sv");
set_top("testtop");
rtl_compare();
read_design("-imp", "/home/billc/projects/goftest/ai_eco/imp_net.v");
set_top("testtop");
set_pin_constant("test_mode", 0);
fix_design();
report_eco();
check_design("-eco");
write_perl("output_rtl_guided_eco.pl");
write_verilog("output_rtl_guided_eco.v");
这份脚本完全是 Agent 根据 skill 里的 API 说明和范例自动生成的,人工零干预。
Step 3: 运行
cd ~/projects/goftest/ai_eco && ~/tools/GOF/bin/gof -run eco_script_1785736018.pl
事前准备清单(重点)
这套流程对环境有几个前置要求,建议按下表逐项检查,确认无误后再发起任务,可以一次跑通:
1. 安装 tmux 和 xterm
skill 的标准流程用 tmux 管理 server 会话、xterm 弹窗跑 client,最小化安装的机器通常没有:
sudo yum install tmux xterm
如果没有 tmux,可以临时用 screen 代替;client 端也可以让 Agent 用后台进程跑(我们的实测就是这样)。
2. 准备带 websockets 的 Python 环境(用 venv 隔离)
gofai_server.py 的 shebang 是 #!/usr/bin/env python,且依赖 websockets 模块。两点注意:
正确做法是给 GOF 建独立 venv,并把 shebang 指向它:
uv venv ~/tools/GOF/venv --python 3.11
uv pip install --python ~/tools/GOF/venv/bin/python websockets
修改 gofai_server.py 和 verilog2spec.py 的第一行:
这样脚本直接执行就走隔离环境,和系统里其他 Python 应用互不干扰。
3. 确认是否有图形环境(DISPLAY)
xterm 弹窗需要 X server。纯 SSH 终端 DISPLAY 为空,xterm 弹不出窗口 —— client 端改用后台进程 + 完成通知即可,效果一样;tmux server 不受影响。如果有 VNC/本地桌面,则可以用 skill 的弹窗模式。
4. 确认 gof-ai skill 已安装
Hermes 里需已安装 gof-ai skill(内容:启动 server → 生成脚本 → 运行)。Agent 拿到任务后会自动加载,无需手工干预。
运行结果
INFO! For module ppro these are the fix points: ac_an_d_reg gclk/enable aen_d_reg cen_d_reg
# Algo fix done with good result new gate number 4
PL_FIX_GOOD for algo fix
Good! ppro has ECO script applied
...
ECO Report for 'rtl_guided_eco_i'
*MODULE* ppro
Added Instances, total 4
newcell_U09 AND2X1
aen_d_reg DFFCDRQX2
cen_d_reg DFFCDRQX2
ac_an_d_reg DFFCDRQX2
Modified Instances, total 1
gclk
INFO! (I-159) The design 'testtop' and its sub-modules are clean in check_design
# Writing to Verilog file output_rtl_guided_eco.v for module testtop ...
一次通过:
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 端到端跑完,人只需要检查结果。