基于KiCad的大语言模型插件(Agent) - 支持自动布线
前言
前面介绍了如何通过KiCad AI Assistant修改PCB,当时还未想好怎么支持自动布线。没想到今天我遇到了freerouting这个工具,该工具支持KiCad等多种PCB编辑软件,使用起来也很方便。因此通过集成freerouting工具,我们就可以补上自动布线功能,这篇文章就介绍KiCad AI Assistant如何支持自动布线功能。
相关文章:
自动布线功能
集成freerouting
freerouting 是一个成熟的开源自动布线工具,使用 Specctra DSN/SES 格式与 KiCad 交换数据。KiCad 可以将 PCB 导出为 DSN 文件,freerouting 读取 DSN 后完成布线并输出 SES 文件,KiCad 再将 SES 导入回 PCB。
第一步,用 pcbnew Python API 将当前 PCB 导出为 DSN 文件:
import pcbnew
board = pcbnew.GetBoard()
pcbnew.ExportSpecctraDSN(board, "/tmp/kicad_autoroute_xxx/board.dsn")
第二步,调用 freerouting JAR 进行自动布线(=–gui.enabled=false= 表示无界面批处理模式,=-mp 50= 表示最多优化 50 轮):
java -jar freerouting-2.2.3.jar \
-de /tmp/kicad_autoroute_xxx/board.dsn \
-do /tmp/kicad_autoroute_xxx/board.ses \
--gui.enabled=false \
-mp 50
第三步,布线完成后将 SES 文件导回 PCB 并保存:
import pcbnew
board = pcbnew.GetBoard()
pcbnew.ImportSpecctraSES(board, "/tmp/kicad_autoroute_xxx/board.ses")
freerouting 本身是一个 Java 程序,以 JAR 包形式发布。为了方便部署,插件目录里提供了 setup_plugin.sh 脚本,会在安装插件依赖的同时自动从 GitHub Release 下载指定版本的 freerouting JAR(当前版本为 2.2.3)并放置到插件目录下。
# 在插件目录中执行,一键完成依赖安装和 JAR 下载
cd ~/.local/share/kicad/10.0/scripting/plugins/kicad_ai_assistant
./setup_plugin.sh ~/code/kicad-mcp
脚本会帮我们创建python虚拟环境和下载freerouting.jar文件。
如何使用自动布线
在完成封装摆放之后,就可以通过菜单启动自动布线。步骤如下。
- 确保 PCB 编辑器中已打开需要布线的 .kicad_pcb 文件,且封装已摆放到位。
- 在 KiCad AI Assistant 插件窗口的菜单栏中选择 =Tools → Auto Route…=。
- 插件会弹出网络选择对话框,列出板上所有网络。可以勾选不希望 freerouting 自动布线的网络(例如 GND、电源网络等,通常这些网络需要手动铺铜处理)。如果不选择任何网络,则对全部网络布线。
- 点击确认后,插件先导出 DSN 文件,同时为当前 PCB 保存一个快照(方便布线效果不理想时回退)。
- freerouting 在后台运行(最多 50 次优化遍历),界面状态栏会显示”⏳ Auto-routing in progress…”。
- 布线完成后,插件自动将结果导入 PCB,保存文件并刷新编辑器视图,状态栏变为”✅ Backend ready”。
总结
本文介绍了 KiCad AI Assistant 插件新增的自动布线功能。通过集成开源工具 freerouting,结合之前已有的封装搜索、元器件摆放等功能,用户现在可以在 KiCad AI Assistant 的辅助下完成从原理图到布线完成的大部分 PCB 设计流程。
插件代码可以从索引中的 kicad-mcp克隆 仓库获取,欢迎大家试用,反馈问题,提交 PR。
参考索引
- kicad-mcp克隆 - https://github.com/paul356/kicad-mcp
- freerouting - https://github.com/freerouting/freerouting



