用 Hermes Agent + Kimi K3 + GOF Skill 跑通 GOF AI ECO 例程
专栏:NanDigits Aug. 3, 2026, 2:03 p.m. 14 阅读
记录用 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 脚本。

环境与准备

测试用的 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 就用 python3.11 -m venv
uv pip install --python ~/tools/GOF/venv/bin/python websockets

修改 gofai_server.pyverilog2spec.py 的第一行:

#!/home/billc/tools/GOF/venv/bin/python

这样脚本直接执行就走隔离环境,和系统里其他 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 ...

一次通过:

一个小提示:进程退出码 29 只是 "后台模式没有交互 shell" 的提示,GOF 本身正常退出,不影响结果。

总结

这套 "Agent + Skill + EDA 工具" 的组合有几个明显的好处:

  1. 自然语言直达 EDA 流程 —— 用户只需要给一个 spec 文件路径,GOF 脚本生成、server 管理、运行监控全部由 Agent 完成

  2. Skill 沉淀流程知识 —— GOF 的 API 用法、脚本模板、注意事项都固化在 gof-ai skill 里,换个人、换个会话都一样能用

  3. 环境自愈能力 —— 遇到 tmux/python/websockets 缺失时,Agent 能自己诊断并给出 venv 隔离这类不污染系统的解法,还把结论写进了持久记忆,下次直接绕开坑

对 EDA 工程师来说,这意味着 ECO 这类重复性高、脚本模板固定的工作,可以真正交给 AI Agent 端到端跑完,人只需要检查结果。

感谢阅读,更多文章点击这里:【专栏:NanDigits】
最新20篇 开设专栏