VeriFlow-CC:用 Claude Code 一键打通 RTL 设计流水线,从需求到综合只需一条命令
作为一个写过无数 Verilog 的工程师,我一直在想:能不能用 AI 把 RTL 设计的重复劳动自动化?今天介绍的项目 VeriFlow-CC,给出了一个优雅的答案。
一、这个项目是什么?
VeriFlow-CC 是一个Claude Code 驱动的 RTL 硬件设计流水线。它的核心理念很简单:把 Claude Code 的主会话当作"大脑",通过 8 个严格串行的阶段,自动完成从需求分析到综合报告的完整硬件设计流程。
最吸引我的是它的零依赖设计——不需要 LangGraph、不需要 LangChain、不需要 pip install 任何包,只需要 Claude Code 和 Python 3.10+。
二、8 阶段流水线全景
architect -> microarch -> timing -> coder -> skill_d -> lint -> sim -> synth
(1) (2) (3) (4) (5) (6) (7) (8)
| 阶段 | 类型 | 输入 | 输出 | 执行方式 |
|---|---|---|---|---|
| architect | LLM | requirement.md | spec.json + behavior_spec.md | 主会话 |
| microarch | LLM | spec.json | micro_arch.md | 主会话 |
| timing | LLM | spec + microarch | timing_model.yaml + testbench | 主会话 |
| coder | LLM (子 Agent) | 全部上游文档 | rtl/*.v | vf-coder 子 Agent |
| skill_d | LLM | RTL + spec | static_report.json | 主会话 |
| lint | EDA | RTL | logs/lint.log | iverilog |
| sim | EDA | RTL + TB | logs/sim.log | iverilog + vvp |
| synth | EDA | RTL + spec | synth_report.txt | yosys |
只有 Stage 4(代码生成)会调用子 Agent,其余 7 个阶段全部在主 Claude 会话中完成。这种"1 层嵌套"的设计让调试和状态追踪变得非常简单。
三、安装与使用:3 分钟上手
安装:
python install.py
这会把 Skill 和 Agent 安装到 ~/.claude/ 目录下。
准备项目:
my_alu/
├── requirement.md # 功能需求(必需)
├── constraints.md # 约束条件(可选)
├── design_intent.md # 设计意图(可选)
└── context/ # 参考资料(可选)
运行流水线:
/vf-pipeline /path/to/my_alu
对,就是在 Claude Code 里敲这一条命令,剩下的全部自动完成。
四、几个设计细节
1. 需求澄清 checklist(Stage 1)
在生成任何代码之前,pipeline 会在 7 个维度逐一检查需求的完整性:
- A. 功能性:模块行为、接口协议、数据格式、FSM、时钟域
- B. 约束:时钟频率、目标平台、面积/功耗预算
- C. 设计意图:架构风格、模块划分、接口偏好
- D. 算法与协议:标准文档、伪代码、关键公式、测试向量
- E. 时序完整性:cycle-level 行为、latency、throughput、背压
- F. 领域知识:所属领域、标准引用、前置概念
- G. 信息完整性:隐含假设、缺失场景
这不是形式化的走过场——每个条目都必须显式确认,有任何模糊的地方会用 AskUserQuestion 逐条追问用户。
2. behavior_spec.md:把"行为"和"接口"分离
Stage 1 现在产出两个文档:
spec.json:接口契约(ports、parameters、connectivity、constraints)behavior_spec.md:行为规格(cycle-accurate behavior、FSM、timing contracts、algorithm pseudocode)
这种分离让下游的 coder Agent 能精准理解"做什么"和"怎么做"。
3. Readiness Check 门控
在离开 Stage 1 之前,会执行严格的 readiness check:
- spec.json 必须有 top module、完整 ports、constraints、design_intent
- behavior_spec.md 必须覆盖每个 module 的 Domain Knowledge、Cycle-Accurate Behavior、Timing Contracts
- 数学校验:counter width、clock divider accuracy、latency sanity、constraint consistency
不通过就停下来问用户,绝不在需求不完整的情况下往下走。
4. 错误恢复:3 次重试 + 智能回滚
当 lint/sim/synth 失败时:
- 第 1 次失败:修复 RTL,重试当前阶段
- 第 2 次失败:回滚到更早阶段,重新串行执行
- 第 3 次失败:停下来通知用户
回滚策略按错误类型分类:
| 错误类型 | 回滚目标 | 重跑路径 |
|---|---|---|
| syntax | coder | coder → skill_d → lint → sim → synth |
| logic | microarch | microarch → timing → coder → ... |
| timing | timing | timing → coder → ... |
5. 状态持久化:随时中断,随时恢复
Pipeline 状态保存在 .veriflow/pipeline_state.json,EDA 环境保存在 .veriflow/eda_env.sh。关掉电脑、明天再开,直接运行 /vf-pipeline 就能从断点继续。
五、实战示例:ChaCha20 流密码
项目自带了 ChaCha20 的示例需求文档。需求文件详细定义了:
- 32 位 uint32 运算单元,mod 2^32 加法
- Quarter Round 函数(8 步 ARX 操作)
- 20 轮迭代(10 次双轮:奇数轮列运算 + 偶数轮对角线运算)
- 小端序序列化
运行 /vf-pipeline example_test/chacha20 后,pipeline 自动生成 RTL、testbench、运行 lint 和 simulation,最终输出综合报告。
六、适合谁用?
- FPGA/ASIC 工程师:快速原型验证、算法到 RTL 的自动化
- 算法工程师:有算法但不想手写 Verilog,把需求写清楚就行
- 学生/研究者:学习硬件设计流程,看 AI 如何从需求推导出微架构
七、总结
VeriFlow-CC 的精妙之处在于不把 AI 当作黑盒生成器,而是把它当作一个严格执行设计流程的工程师:
- 需求不清?先问清楚再动手。
- 代码出错?分类诊断、有限重试、智能回滚。
- 环境复杂?自动发现 EDA 工具,持久化配置。
它不是要取代硬件工程师,而是把重复性的设计流程自动化,让人专注于真正有创造力的架构决策。