于是,我谋划了一件事:让Codex完全接管我装有 Vivado的电脑,纯自动化运行,不干预,看看它最终能把 FPGA 的开发任务完成到什么程度。

我把Codex授予最高管理员权限,同时把FPGA开发板的Jtag调试线接到电脑上。然后在Codex工作区里放了一份开发板原理图 。
随后我就要求 Codex 基于这块板子,做一个面向初学者的 FPGA 开发教程(以word 形式给出)。每章教程必须对应一个实际 Vivado 工程,并且每个工程都要在板子上验证过。
点击开始后,我就放任不管了。3个多小时后,Codex交出了答案。


结果比我预期的好很多,它孜孜不倦,把工程文件,仿真文件,在线调试,写文档全部完成了。如下表格里罗列了 Codex 输出的最终成果。
成果 | 说明 |
|---|---|
Word | 基于 Arty C.1 的初学者 FPGA 应用设计教程 |
Vivado 工程 | GPIO、计数闪灯、RGB PWM、消抖 FSM、UART、Pmod GPIO |
6 个 bitstream | 全部由 Vivado 2019.1 成功生成,并通过 JTAG 下载 |
硬件验证记录 | 识别 xc7a35t_0,6 个 PROGRAM OK |
UART 实测 | COM4 发送 35 41 5A,回显 35 41 5A |
附件包 | 源码、仿真、约束、工程、bitstream、报告和 Word 教程 |
我把这些内容都打开看了下,文档的排版、逻辑、内容甚至好过部分开发板厂商。且每一个vivado工程都是经过功能验证的、还提供了编译好的bit文件。
日志上看,Codex 的行为流程完全就和人一样:先写代码,再调试,最后写报告。便于展示,我把他的行为脉络总结如下。

具体:
Codex 首先从 PDF 原理图里提取了文本,确认这块板是 Digilent Arty C.1,FPGA 是 XC7A35T-L1CSG324I。随后它把教程要用到的板载资源整理出来。
我觉得这里最有意思的一点是,它并没有一上来就把 DDR3、以太网、MicroBlaze 之类的大系统塞进教程。它判断初学者第一阶段更应该从小而完整的应用开始:就先把 GPIO、计数、PWM、状态机、UART 这些基本功跑通,再进入复杂 IP。这个判断很像一个有经验工程师会做的取舍。
确定板卡资源后,Codex 开始生成工程文件。它写了通用 XDC 约束,把 RTL 端口和 Arty C.1 的真实引脚对应起来;又给每个 demo 建了 src/top.v、sim/tb_top.v、README 和 Vivado 工程生成脚本。个人感觉,这清晰的层级感超越了绝大多数的FPGA工程师。
Demo | 主题 | 初学者能学到什么 |
|---|---|---|
01_gpio_led_switch | GPIO | 开关、按键、LED、组合逻辑和引脚约束 |
02_counter_blink | 计数闪灯 | 100 MHz 时钟、寄存器、计数器、复位和暂停 |
03_rgb_pwm | RGB PWM | 占空比、亮度控制、RGB 混色和呼吸效果 |
04_debounce_fsm | 按键消抖 + FSM | 同步、消抖、边沿检测和状态机 |
05_uart_echo | UART 回显 | 115200 8N1 串口接收、发送和缓冲 |
06_pmod_gpio | Pmod GPIO | 外部扩展口、跑马灯和开关/按键镜像 |
这一步的成果就是一套可以打开、可以验证的Vivado工程包。每个 demo 都有 Vivado .xpr,生成好的 bitstream,还有 timing 和 utilization 报告。可谓面面俱到。

让人觉得它“有点东西”的地方,应该是它会自己找办法解决遇到的问题。
最开始它用 project flow 批量跑综合实现,可Vivado 在 run launcher 处报了一个 Windows 下的 Access denied错误。但Codex 没有卡住,也没有让我自己去查,而是切换到更稳的 in-memory direct flow:直接 read_verilog、synth_design、opt_design、place_design、route_design、write_bitstream。
这个问题即便让我去解决也不一定能搞定,因为这方案我就没接触过。反而Codex调整很工程化。它保留了 .xpr 让人能在 GUI 里打开,又用 direct flow 负责稳定地产出 bitstream。
生成 bitstream 后,Codex 调用 Vivado hardware manager开始调试板子了。它启动 hw_server,把 6 个 bitstream 逐个下载到 FPGA。直到脚本检测到每个 demo 最后都返回了 PROGRAM OK。
我觉得这一步非常关键,因为这属于AI把整个硬件链路调试跑通了,大部分的AI Coding其实只是停留在代码层面压根没有和硬件进行交互。
毕竟对 FPGA 来说,能综合只是第一层,能生成 bitstream 是第二层,能通过 JTAG 下载到真实芯片才是真正接近工程闭环。

我觉得最精彩的小插曲发生在调试 UART demo。
Codex第一次上电验证并不成功。它用 COM4 做了串口测试,连续发送 35 41 5A。结果回显只收到 35 5A,中间的 41 丢了。
但Codex 根据这个现象判断:顶层在 TX busy 时直接丢掉了新收到的字节。于是它给 UART 顶层补了一个 1 字节 pending buffer,更新 testbench,重新仿真连续 3 字节,重新生成 bitstream,重新下载,再次用 COM4 测试。第二次结果是 TX=35 41 5A,RX=35 41 5A。成功了。

这事挺牛逼的。大家知道,Verilog的时序问题AI经常会搞不定,而且Deepseek chatgpt这类聊天式AI 还难以将嵌入式代码应用到硬件上去进行功能验证。所以谁解决了 “代码设计-->硬件验证-->迭代”的这个回环流程,谁就是解决了AI难以给嵌入式开发提效的问题。显然以Codex为代表的Agent方案目前是最佳答案。
工程跑通之后,Codex 把整个成果整理成一份面向初学者的 Word 教程。教程没有泛泛讲 FPGA,而是围绕这块开发板真实可操作的 6 个例子展开:每个例子讲学习目标、关键概念、实验步骤、文件入口和拓展练习。
最后,它还把附件包整理出来做了说明:Word 教程、6 个 Vivado 工程、通用 XDC、脚本、bitstream、报告和硬件下载记录。

我把完整的成功都打包上传到了云盘,感兴趣的后台私信“Codex"获取围观。
这次的尝试倒是让我想起一位前同事。因为身体原因,他有段时间居家办公。我们把他在公司的电脑开着机,连好硬件板卡,再给他开通远程权限。于是,他隔着一根网线写代码、调试硬件,仿佛人就在工位上。
只不过这一次,网线另一头好像不再是人,而是 Codex。传统的开发模式已经变了。
当然,嵌入式开发由于距离前端开发比较远,对AI coding的能力边界还不敏感。我在粉丝群了解了下,大部分人用AI还停留在“帮我写一段 Verilog”或者“帮我解释一段约束”的程度。
但Codex 接管 Vivado的案例可以看到,人类给个FPGA需求,AI 已经可以全自动输出可落地的工程文件了。包括:设计代码、创建 vivado 工程、仿真、和实际电路板进行调试、生成可执行的文件、输出文档。涉及到流程和规范方面,AI 甚至做得比大部分人还好。
当然AI 还存在的一些瑕疵,但能力边界已经展示,剩下的就交给时间和 token 吧。

实际上,这篇文章差点也是Codex帮我完成的。Codex在完成了FPGA教程的编写后,我直接让它把这件事记录下来总结成了一篇文章。
它写的其实真的挺不错,吩咐的内容和情绪都表达出来了。但我想在AI味的时代洪流里留点人味,产出点不一样的。于是重写了大部分文字。
