之前聊过,任何EDA软件只要支持Tcl或类似的脚本,就完全可以被AI Agent操控,从而搭上AI时代的快车,甩开那些老派的开发方式——让工程师先扔掉鼠标再说。
于是,我谋划了一件事:让Codex完全接管一台装有Vivado的电脑,纯自动化运行、不加干预,看看它最终能把FPGA开发任务完成到什么程度。

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

结果比预期的好很多——它孜孜不倦,把工程文件、仿真文件、在线调试、写文档全部完成了。如下表格里罗列了 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 的行为流程完全就和人一样:先写代码,再调试,最后写报告。为了便于展示,把它的行为脉络总结如下。
Image
第一步:理解任务
Codex 首先从PDF原理图里提取了文本,确认这块板是Digilent Arty C.1,FPGA 是 XC7A35T-L1CSG324I。随后它把教程要用到的板载资源整理出来。
这里最有意思的一点是,它并没有一上来就把DDR3、以太网、MicroBlaze之类的大系统塞进教程。它判断初学者第一阶段更应该从小而完整的应用开始:先把GPIO、计数、PWM、状态机、UART这些基本功跑通,再进入复杂IP。这个判断很像一个有经验工程师会做的取舍。
第二步:建 Vivado 工程
确定板卡资源后,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报告。可谓面面俱到。
Image
第三步:调试
让人觉得它“有点东西”的地方,应该是它会自己找办法解决遇到的问题。
最开始它用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下载到真实芯片才是真正接近工程闭环。
Image
第五步:迭代
整个实验中最精彩的小插曲发生在调试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。成功了。
Image
这事挺有意思的。大家都知道,Verilog的时序问题AI经常会搞不定,而且DeepSeek、ChatGPT这类聊天式AI还难以将嵌入式代码应用到硬件上去进行功能验证。所以谁解决了“代码设计→硬件验证→迭代”的这个闭环流程,谁就解决了AI难以给嵌入式开发提效的问题。显然,以Codex为代表的Agent方案目前是最佳答案。
第六步:成果
工程跑通之后,Codex把整个成果整理成一份面向初学者的Word教程。教程没有泛泛讲FPGA,而是围绕这块开发板真实可操作的6个例子展开:每个例子讲学习目标、关键概念、实验步骤、文件入口和拓展练习。
最后,它还把附件包整理出来做了说明:Word教程、6个Vivado工程、通用XDC、脚本、bitstream、报告和硬件下载记录。
Image
(完整成果已打包,感兴趣的读者可以自行获取)
感想
这次的尝试倒是让人想起一位前同事。因为身体原因,他有段时间居家办公。我们把他在公司的电脑开着机,连好硬件板卡,再给他开通远程权限。于是,他隔着一根网线写代码、调试硬件,仿佛人就在工位上。
只不过这一次,网线另一头好像不再是人,而是Codex。传统的开发模式已经变了。
当然,嵌入式开发由于距离前端开发比较远,对AI coding的能力边界还不敏感。从粉丝群了解到,大部分人用AI还停留在“帮我写一段Verilog”或者“帮我解释一段约束”的程度。
但从Codex接管Vivado的案例可以看到,人类给个FPGA需求,AI已经可以全自动输出可落地的工程文件了。包括:设计代码、创建Vivado工程、仿真、和实际电路板进行调试、生成可执行的文件、输出文档。涉及到流程和规范方面,AI甚至做得比大部分人还好。
当然AI还存在一些瑕疵,但能力边界已经展示,剩下的就交给时间和token吧。

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