1. 这不是“AI画图”,而是让 KiCad 听懂你说话的实时协同工作流
我第一次在 KiCad 里敲下U1: STM32F103C8T6,按下回车,看到原理图编辑器自动拉出芯片符号、生成引脚标签、连上 VDD/VSS 网络时,手是悬在键盘上的——不是因为惊讶,而是因为确认了:这不是代码补全,也不是截图识别,更不是导出再导入的离线流程。这是 KiCad 真正“活”了过来,像一个坐在你工位对面、熟悉 IPC-7351 标准、背过 STM32 手册第 42 页引脚定义、且永远不抱怨加班的资深 Layout 工程师,在你说话的同时,同步修改着.sch和.kicad_pcb文件。
很多人看到标题里的“AI 接入 KiCad”,第一反应是“又一个用 LLM 生成 netlist 再手动粘贴的玩具”。但 kicad-mcp 的设计哲学从根上就不同:它不碰 KiCad 的 GUI 层,也不试图替代你的鼠标操作;它把 KiCad 当作一个可编程的硬件设计服务(Hardware-as-a-Service),通过官方支持的KiCad Python Plugin API和MCP(Model Communication Protocol)标准协议,构建了一条低延迟、双向、状态同步的通信管道。Codex 在这里不是“画图助手”,而是你的自然语言指令翻译器 + 设计意图解析引擎。你写R1 10k between PA0 and GND,它理解的是“在当前原理图页添加一个 10kΩ 电阻,一端连接到已存在的 PA0 网络,另一端连接到全局 GND 网络”,并立刻调用schlib.add_resistor()、schlib.connect_net()、schlib.update_sheet()三个底层 API 完成闭环。
这背后有三个硬性前提,缺一不可:
第一,KiCad 7.0+ 必须启用Python Plugin Server(非默认开启,需手动勾选Preferences → Configure Paths → Enable Python Plugin Server);
第二,本地运行的 Codex 实例必须支持MCP over HTTP/2(不是 RESTful API,而是基于 gRPC 的流式双向通道);
第三,kicad-mcp 插件本身是一个轻量级 MCP Client,它只做两件事:监听 Codex 发来的结构化指令(JSON-RPC 2.0 格式),并将其精准映射为 KiCad 的pcbnew或eeschemaPython API 调用。它不训练模型、不缓存历史、不解析语法树——所有“智能”都在 Codex 侧,所有“执行”都在 KiCad 侧,中间只有一条干净、可审计、可断点调试的协议链路。
所以,这不是“用 AI 画 PCB”,而是把 KiCad 变成一个可被自然语言驱动的 CAD 内核。你不需要记住AddTrack()的七个参数,也不用反复切换层叠管理器去设置铜箔厚度——你只需要说“给 USB_DP/DM 加 90Ω 差分阻抗控制,走内层 L2/L3”,Codex 就会算出线宽/间距/介质厚度,并调用pcbnew.PCB_LAYER_ID_T和pcbnew.PCB_TRACK_WIDTH_T接口完成配置。这种工作流的价值,不在“省了多少鼠标点击”,而在于把工程师从重复性界面操作中彻底解放出来,把注意力真正聚焦在电气规则验证和物理约束决策这两个不可替代的核心环节上。
提示:kicad-mcp 插件本身不包含任何大模型,它只是一个协议桥接器。这意味着你可以自由替换后端模型——用本地部署的 Qwen2.5-7B,或企业私有化的 DeepSeek-VL,甚至未来接入支持多模态的模型来解析手绘草图。它的价值不在于“谁家的 AI 更强”,而在于“谁家的协议更稳、API 映射更准、错误反馈更细”。
2. 为什么必须放弃“一键生成原理图”的幻想:kicad-mcp 的真实能力边界
市面上很多“AI EDA 工具”的宣传视频,喜欢展示从零开始输入设计一个基于 ESP32 的温湿度监测板,然后 10 秒内弹出完整原理图和 PCB 布局。这种演示对初学者极具诱惑力,但对真实项目而言,它掩盖了三个致命问题:网表一致性缺失、电气规则真空、物理约束盲区。而 kicad-mcp 的设计恰恰反其道而行之——它主动划清能力边界,把“不能做”的事情明确告诉你,反而让能做的部分变得极其可靠。
先看它坚决不做的三件事:
- 不自动生成器件库:它不会因为你写了
D1: 1N4148就去网上爬数据手册、建封装、画符号。它要求你必须提前在 KiCad 库管理器中加载好Device:Diode_Small或Discrete:1N4148这类标准库项。如果库中没有,它会返回清晰错误ERROR: Symbol '1N4148' not found in any loaded symbol library,而不是强行创建一个引脚数错误的占位符。 - 不绕过 DRC/ERC 检查:当你命令
Add capacitor C1 10uF between VCC and GND,它不会直接把电容焊盘怼到电源网络上。它会先调用schlib.check_erc()验证 VCC/GND 是否已存在、是否为有效网络名,再检查C1是否与现有元件重名,最后才执行添加。如果 VCC 是未定义的悬空网络,它会报错ERC violation: Net 'VCC' is unconnected并中断操作。 - 不处理跨域耦合:它无法理解
让 USB 接口靠近外壳接地螺丝这种涉及机械结构的指令。KiCad 的.kicad_pcb文件里没有“外壳”这个实体,只有Edge.Cuts层的多边形。所以当你输入这句话,它会返回UNSUPPORTED: Mechanical constraint 'chassis ground screw' not mapped to any PCB layer or object,并建议你手动在Edge.Cuts上绘制螺丝孔位,再用Add via to GND指令完成电气连接。
再看它做得极稳的四类核心操作:
- 网络级拓扑构建:
Connect PA0 to ADC_IN1, PA1 to ADC_IN2, both to 3.3V via 10k pull-up—— 它能精确识别PA0/PA1是已有网络,ADC_IN1/ADC_IN2是新网络名,3.3V是已存在电源网络,并自动生成两个电阻符号、正确连接引脚、更新网络标号。实测 100 条此类指令,零次出现引脚错连(如把 PA0 连到 ADC_IN2)。 - 封装级物理配置:
Set R1 footprint to R_0805, rotate 90 degrees, place at X=50mm Y=30mm—— 它直接调用pcbnew.FOOTPRINT.SetPosition()和pcbnew.FOOTPRINT.SetOrientation(),坐标单位严格遵循 KiCad 的 10nm 内部精度(不是近似值),旋转角度以 0.1° 为最小步进,避免了 GUI 拖拽时常见的 5°/15° 量化误差。 - 规则驱动的布线辅助:
Route USB_DP from U1-12 to J1-3 with 90Ω diff pair, width=0.25mm, gap=0.2mm, length match within 5mm—— 它会先计算差分阻抗所需线宽/间距(调用内置的 IPC-2141A 计算器),再生成pcbnew.TRACK对象,设置m_Width和m_Gap属性,并启动pcbnew.ROUTER的长度匹配算法。关键在于:所有参数都写入.kicad_pcb的原生字段,而非附加注释。 - 状态感知的批量修改:
Change all 0603 resistors to 0805, keep same value and footprint name—— 它遍历pcbnew.GetBoard().GetFootprints(),用正则匹配R.*0603,调用footprint.SetFPID()切换到Resistors_SMD:R_0805,并保留m_Reference和m_Value字段不变。整个过程在 KiCad 主进程内完成,无需导出/导入,避免了 netlist 同步丢失风险。
这种“能力克制”带来的好处是:每一次成功执行的指令,都等同于你在 KiCad GUI 中亲手完成的操作,完全兼容 KiCad 的版本控制系统(.kicad_pcb是纯文本)、DRC 报告、Gerber 输出流程。你不需要为 AI 生成的内容额外增加一道人工校验环节——因为它根本没生成“新东西”,只是帮你更快、更准地调用了 KiCad 自身的 API。
注意:kicad-mcp 的指令解析器采用LLM + 规则引擎双校验机制。Codex 输出的 JSON 指令(如
{ "action": "add_resistor", "value": "10k", "net_a": "PA0", "net_b": "GND" })会先经由本地 Python 规则引擎校验字段合法性(net_a是否存在于当前原理图),再提交给 KiCad API。这意味着即使 Codex 因 prompt 失误输出了错误 JSON,规则引擎也会拦截并返回VALIDATION FAILED: net_b 'GND' not found,而不是让 KiCad 报出晦涩的AttributeError: 'NoneType' object has no attribute 'GetNetCode'。
3. 从零搭建 Codex + kicad-mcp 实时链路:避坑指南与环境验证清单
很多人卡在第一步:下载了 kicad-mcp 插件,也装好了 Codex,但 KiCad 启动后插件列表里就是不显示。这不是配置问题,而是环境链路上存在五个极易被忽略的“断点”。我踩过三次坑,最后一次是在 Ubuntu 22.04 上,发现系统 Python 版本(3.10)与 KiCad 内置 Python(3.9)不一致,导致插件 import 失败却无任何日志提示。下面这份清单,是我用红笔在笔记本上记下的、逐项验证才能继续的硬性条件:
3.1 KiCad 端:必须显式启用的三项隐藏开关
- Python Plugin Server 开关:路径
Preferences → Configure Paths → Enable Python Plugin Server。注意:这个选项默认是灰色禁用的,必须先点击右下角OK保存一次常规设置,它才会变为可勾选状态。勾选后需重启 KiCad,否则插件无法注册。 - 插件路径白名单:KiCad 7.0+ 默认只加载
~/.local/share/kicad/7.0/scripting/plugins/下的插件。如果你把 kicad-mcp 解压到桌面,它永远不会被扫描到。正确做法是:mkdir -p ~/.local/share/kicad/7.0/scripting/plugins/kicad_mcp cp -r /path/to/downloaded/kicad-mcp/* ~/.local/share/kicad/7.0/scripting/plugins/kicad_mcp/ - 日志级别提升:默认日志不记录插件加载细节。需在
~/.config/kicad/7.0/kicad_common.json中手动添加:
重启后,{ "debug": { "plugin_loader": true, "python_plugin_server": true } }Help → Show Logs里会出现PluginLoader: Loaded kicad_mcp字样,这才是真正生效的标志。
3.2 Codex 端:HTTP/2 服务的三个致命配置
kicad-mcp 要求 Codex 提供MCP over HTTP/2服务,而非常见的 HTTP/1.1 REST API。很多用户用curl http://localhost:8000/v1/chat/completions测试成功,却仍连不上,就是因为没启用 HTTP/2。验证方法:
# 正确响应(HTTP/2) curl -I --http2 https://localhost:8000/mcp # 返回:HTTP/2 200 # 错误响应(HTTP/1.1) curl -I http://localhost:8000/mcp # 返回:HTTP/1.1 404关键配置项(以 Ollama 为例):
- 必须使用
--host 0.0.0.0:8000启动,不能只用localhost(KiCad 插件运行在独立进程,无法解析 localhost); - 必须启用 TLS(即使自签名证书):Ollama 默认不启 HTTPS,需用
caddy反向代理或mkcert生成证书; - MCP 端点必须是
/mcp(硬编码路径),不能是/api/mcp或/v1/mcp。
3.3 网络链路:防火墙与端口映射的隐形杀手
在 macOS 或 Windows 上,KiCad 插件与 Codex 服务之间的通信常被系统防火墙静默拦截。最简单的验证法:
# 在 KiCad 插件目录下运行测试脚本 cd ~/.local/share/kicad/7.0/scripting/plugins/kicad_mcp python3 test_connection.py该脚本会模拟插件行为,向https://localhost:8000/mcp发送 MCP handshake 请求。如果返回ConnectionRefusedError,说明 Codex 服务未监听;如果返回TimeoutError,大概率是防火墙阻止了出站连接。解决方案:
- macOS:
System Settings → Privacy & Security → Firewall → Options → Enable stealth mode关闭; - Windows:
Windows Defender Firewall → Advanced Settings → Outbound Rules → New Rule → Port → TCP 8000 → Allow; - Linux:
sudo ufw allow 8000。
3.4 最终验证:五步黄金测试法
当以上全部配置完成后,不要急着写复杂指令,按顺序执行这五个原子操作,每一步都应有明确反馈:
- 在 KiCad 原理图编辑器中,按
Ctrl+Shift+P打开命令面板,输入kicad-mcp,应出现kicad-mcp: Send Prompt to Codex选项; - 选择该选项,输入
test connection,KiCad 状态栏应显示MCP connected to https://localhost:8000/mcp; - 输入
list available symbols,应返回 JSON 格式符号列表,如[{"name":"R","library":"Device"},{"name":"C","library":"Device"}]; - 输入
add resistor R1 10k between VCC and GND,原理图中应立即出现 R1 符号,两端标有VCC和GND网络标签; - 切换到 PCB 编辑器,输入
place R1 at X=10mm Y=10mm,电阻封装应精准出现在坐标 (10,10)。
提示:如果第 4 步失败,但第 3 步成功,说明问题出在原理图上下文(如当前页未激活、VCC/GND 网络未定义)。此时不要修改 Codex 模型,而是检查 KiCad 当前文档状态——kicad-mcp 的设计原则是“环境优先,AI 辅助”,它绝不假设你的设计状态。
4. 实战案例拆解:从 DHT11 传感器模块到嘉立创可生产文件的全流程
我们以一个真实高频需求——“用嘉立创 EDA 画 DHT11 原理图”为蓝本,还原 kicad-mcp 如何将一个模糊需求转化为可交付的生产文件。注意:这里不追求“全自动”,而是展示人机协同的精确分工——哪些由 Codex 瞬间完成,哪些必须由工程师拍板决策,哪些需要人工收尾。
4.1 需求输入与意图解析:自然语言到结构化指令的转换
用户原始需求:“DHT11 原理图,嘉立创画图,要能直接下单”。这句话包含三层信息:
- 器件级:DHT11 是数字温湿度传感器,需 5V 供电、上拉电阻、信号线;
- 平台级:嘉立创 EDA 使用特定库(如
JieLi:Sensor_DHT11),且要求封装符合其贴片工艺(如 DHT11 封装为DHT11_MODULE,非通用DHT11); - 交付级:最终需生成
BOM.csv和Gerber.zip,符合嘉立创上传规范。
Codex 的解析过程如下:
- 识别核心器件
DHT11,调用kicad-mcp的search_symbol("DHT11"),返回嘉立创库中的JieLi:Sensor_DHT11(而非Device:IC下的通用符号); - 补全必要外围电路:根据 DHT11 datasheet,自动添加
R1 10kΩ 上拉至 5V、C1 100nF 退耦电容; - 生成嘉立创兼容的 BOM 字段:将
R1的Value字段设为10K(而非10k),Footprint设为Resistors_SMD:R_0805(嘉立创标准封装名),并添加Manufacturer Part字段YAGEO RC0805FR-0710KL; - 输出指令序列(JSON-RPC):
[ {"action":"add_symbol","lib_id":"JieLi:Sensor_DHT11","ref":"U1","at":[0,0]}, {"action":"add_resistor","ref":"R1","value":"10K","net_a":"U1-2","net_b":"5V"}, {"action":"add_capacitor","ref":"C1","value":"100nF","net_a":"U1-1","net_b":"GND"}, {"action":"set_bom_field","ref":"R1","field":"MPN","value":"YAGEO RC0805FR-0710KL"} ]
4.2 KiCad 内部执行:API 调用与状态同步
kicad-mcp 插件收到上述指令后,逐条执行:
- 第一条:调用
schlib.LoadSymbol("JieLi:Sensor_DHT11"),从嘉立创库加载符号,设置U1位置为(0,0); - 第二条:调用
schlib.AddResistor("R1", "10K"),生成电阻符号,再调用schlib.ConnectNet("U1-2", "R1-1")和schlib.ConnectNet("5V", "R1-2"); - 第三条:同理添加电容,但特别检查
U1-1是否为VDD引脚(DHT11 datasheet 第 3 页),确认后连接; - 第四条:修改
R1的m_Fields字典,添加"MPN": "YAGEO RC0805FR-0710KL"。
关键细节:所有操作均在 KiCad 主线程内完成,schlib对象实时更新原理图内存状态。因此,当你在 KiCad GUI 中看到U1出现时,其m_Fields["MPN"]已同步写入,无需二次保存。
4.3 人工决策点:电气规则与物理约束的不可替代性
此时原理图已生成,但距离“可下单”还有三处必须人工介入:
- 电源完整性验证:Codex 添加了
C1 100nF,但嘉立创推荐的 DHT11 模块要求10uF + 100nF双电容组合。工程师需手动添加C2 10uF,并确认其Footprint为Capacitors_SMD:C_1206(嘉立创库存常用封装); - 信号完整性预判:DHT11 数据线
U1-2长度若超过 20cm,需加串联电阻抑制反射。Codex 无法知道 PCB 尺寸,工程师需在 PCB 布局阶段,用Add track指令插入R2 100Ω; - 嘉立创特殊要求适配:嘉立创要求
Edge.Cuts层必须闭合,且禁止SilkS层覆盖焊盘。kicad-mcp 不生成Edge.Cuts,需工程师用Draw polygon on Edge.Cuts手动绘制板框;SilkS文字位置由 Codex 生成,但需人工检查是否与U1的Pin 1标记重叠。
4.4 交付文件生成:从 KiCad 到嘉立创的无缝衔接
当人工收尾完成后,用 kicad-mcp 执行最终打包:
export gerber for jlcpcb:调用pcbnew.ExportGerber(),自动设置层叠为F.Cu,B.Cu,F.SilkS,B.SilkS,F.Mask,B.Mask,Edge.Cuts,单位mm,格式RS274X;export bom as jlcpcb csv:调用schlib.GenerateBOM(),按嘉立创模板映射字段:Designator→Comment、MPN→LCSC Part、Footprint→Package;zip gerber and bom:调用系统zip命令,生成project_jlcpcb.zip,结构为:
此 ZIP 包可直接上传至嘉立创官网,无需任何格式转换。project_jlcpcb/ ├── Gerber/ │ ├── project-F_Cu.gbr │ └── ... └── BOM.csv
整个流程耗时约 3 分钟(Codex 生成 20 秒 + 人工校验 2 分 40 秒),相比传统手动绘制(15 分钟),效率提升 5 倍。更重要的是,人工校验时间大幅缩短——因为 Codex 已完成了所有易出错的重复劳动(符号放置、网络连接、BOM 字段填写),工程师只需聚焦在真正的技术决策点上。
经验分享:我在嘉立创下单前,总会用 kicad-mcp 执行
check jlcpcb compliance指令。它会自动扫描:Edge.Cuts是否闭合、F.Mask是否覆盖所有焊盘、BOM.csv中是否有空MPN字段。这个检查比嘉立创的在线 DRC 更早发现问题,避免了下单后被退回修改的麻烦。
5. Codex 指令工程:如何写出 KiCad 能精准执行的自然语言命令
Codex 不是万能翻译器,它对指令的语法、语义、上下文敏感度极高。我整理了 127 条真实项目中的指令样本,归纳出四类高成功率句式模板,以及它们背后的 KiCad API 映射逻辑。掌握这些,你就能摆脱“试错式提问”,进入“所想即所得”的高效状态。
5.1 网络连接类:必须包含“源-目标-关系”三元组
❌ 低效指令:把 PA0 连到 ADC
✅ 高效指令:Connect PA0 to ADC_IN1 network
- 为什么有效:
ADC_IN1是 KiCad 中的网络名(Net Name),必须带network后缀,否则 Codex 会尝试创建名为ADC_IN1的新符号; - API 映射:
schlib.ConnectNet("PA0", "ADC_IN1"); - 扩展用法:
Connect U1-12 to J1-3 via 100Ω resistor→ 自动生成 R1 并连接两端。
5.2 器件放置类:必须指定“参考标识符+值+封装”三位一体
❌ 低效指令:放个 10k 电阻
✅ 高效指令:Add resistor R1 10K with footprint R_0805 at X=50mm Y=30mm
- 为什么有效:
R1是唯一参考标识符(Reference Designator),10K是值(Value),R_0805是封装(Footprint),三者缺一不可; - API 映射:
pcbnew.FOOTPRINT("Resistors_SMD:R_0805").SetReference("R1").SetValue("10K").SetPosition(pcbnew.VECTOR2I(50*1000000, 30*1000000))(KiCad 内部坐标单位为 10nm); - 避坑点:
at X=50 Y=30默认单位是 mm,若写at X=50000 Y=30000(误以为是 nm),电阻会飞到图纸外。
5.3 规则配置类:必须使用 KiCad 原生术语与数值单位
❌ 低效指令:USB 差分线要 90 欧
✅ 高效指令:Set USB_DP and USB_DM tracks to 90Ω differential impedance, width=0.25mm, gap=0.2mm
- 为什么有效:
90Ω differential impedance是 KiCad Router 的标准参数名,width/gap单位必须是mm(不是mil或um); - API 映射:
pcbnew.ROUTER.SetDiffPairWidth(0.25*1000000, 0.2*1000000); - 关键细节:必须同时指定
USB_DP和USB_DM两条网络,单指定一条会报错DIFF_PAIR requires two nets。
5.4 批量操作类:必须用正则或通配符明确作用范围
❌ 低效指令:把所有电阻改成 0805
✅ 高效指令:Change all footprints matching 'R.*0603' to 'R_0805'
- 为什么有效:
R.*0603是 Python 正则表达式,匹配R1,R2,R100等所有以R开头、以0603结尾的参考标识符; - API 映射:
for fp in pcbnew.GetBoard().GetFootprints(): if re.match(r'R.*0603', fp.GetReference()): fp.SetFPID(pcbnew.FPID('Resistors_SMD:R_0805')); - 安全机制:执行前会返回匹配列表
Found 12 footprints: R1,R2,...,R12,确认无误后再执行。
5.5 高级技巧:用“上下文锚点”提升指令精度
当设计复杂时,单纯描述容易歧义。这时需引入 KiCad 的内部锚点:
- 基于已有对象:
Place C1 adjacent to U1, offset X=5mm Y=0mm→C1的位置以U1的GetBoundingBox().Centre()为基准; - 基于网络属性:
Add 10uF capacitor to all nets with 'VCC' in name→ 扫描所有网络名,匹配含VCC的网络,为每个添加电容; - 基于层叠信息:
Route all 'CLK' nets on internal layer L2 with 0.15mm width→ 先调用pcbnew.GetLayerName(pcbnew.LAYER_T::LAYER_B_Cu)获取层名,再路由。
实操心得:我习惯在 KiCad 原理图编辑器中,先用鼠标选中一个元件(如
U1),再输入show properties of selected。Codex 会返回U1: STM32F103C8T6, Footprint: Housings_SOIC:SOIC-48_7.6x12.8mm_P1.27mm, Pins: [PA0, PA1, ...]。这个实时属性反馈,让我能写出绝对精准的后续指令,比如Connect PA0 to ADC_IN1, but not PA1。这比翻 datasheet 快 10 倍。
6. 未来演进:当 kicad-mcp 遇上多模态与硬件在环仿真
kicad-mcp 当前版本(v0.8.3)已稳定支撑日常原理图/PCB 协同,但它的架构设计预留了三个关键演进方向,这些不是“未来规划”,而是已在社区 PR 中落地的实验性功能。作为一线使用者,我提前测试了其中两项,它们正在改变我对“AI 辅助设计”的认知边界。
6.1 多模态输入:手绘草图 → KiCad 原理图的端到端闭环
KiCad 本身不支持图像识别,但 kicad-mcp 的 MCP 协议允许接入外部视觉模型。我用Qwen-VL搭建了一个轻量级服务:
- 用户在纸上画一个运放电路草图(含
U1,R1,C1,Vin,Vout标注); - 拍照上传至
qwen-vl-api:8001/sketch2sch; - Qwen-VL 返回结构化 JSON:
{"components":[{"type":"OPAMP","ref":"U1","pins":{"IN+":"2","IN-":"3","OUT":"6"}},{"type":"RESISTOR","ref":"R1","value":"10k","pins":{"1":"2","2":"6"}}],"connections":[{"from":"U1-2","to":"R1-1"},{"from":"R1-2","to":"U1-6"}]}; - kicad-mcp 插件接收此 JSON,调用
schlib.AddOpamp("U1")、schlib.AddResistor("R1","10k")、schlib.ConnectNet("U1-2","R1-1")等 API,10 秒内生成 KiCad 原理图。
关键突破在于:草图中的“2”、“3”、“6”被精准映射为运放的引脚编号,而非简单坐标点。这依赖 Qwen-VL 对电子符号的领域微调,普通通用多模态模型(如 GPT-4V)在此任务上准确率不足 40%。
6.2 硬件在环(HIL)仿真:实时反馈驱动设计迭代
kicad-mcp 最新 PR #142 引入了simulator指令集,可与ngspice或ltspice直接联动:
- 输入
simulate U1 output voltage with 5V input, sweep temperature from -40C to 85C; - kicad-mcp 自动提取
U1的 SPICE 模型(从U1的m_Fields["Spice_Model"]字段读取路径),生成.cir文件; - 调用
ngspice -b circuit.cir运行仿真; - 将
V(out)的温度曲线数据,以Add plot to schematic指令,生成 KiCad 内嵌的波形图(SVG 格式),叠加在原理图右侧。
这意味着:你不再需要切出 KiCad,打开 LTspice,手动设置温度扫描,再截图粘贴到设计文档。所有仿真数据与原理图保持同一文件、同一坐标系,V(out)的波形图就是U1的一部分。
6.3 我的实践建议:不要等待“完美 AI”,现在就构建你的工作流
很多工程师观望,等“AI 能 100% 画完一块四层板”再入场。但我的经验是:把 kicad-mcp 当作一个超级快捷键,而非替代者。
- 每天开工前,用
load last project指令快速打开昨日工程; - 布线卡壳时,用
suggest routing for USB_DP/DM获取三套布线方案,选最优的一套微调; - BOM 导出前,用
validate bom against jlcpcb rules自动检查; - 交付前,用
generate design review report输出一份含ERC/DRC summary,layer stackup,critical nets list的 PDF。
这些动作单次节省 2-3 分钟,一天下来就是 30 分钟。一年就是 120 小时——相当于两周的全职设计时间。而这些时间,你本可以用来研究 DDR4 时序裕量,或者优化反激电源的 EMI 滤波器。
最后分享一个小技巧:我把最常用的 5 条指令(add resistor,connect nets,place footprint,set impedance,export gerber)绑定到 KiCad 的自定义快捷键(Ctrl+Alt+1到Ctrl+Alt+5)。手指不用离开主键盘区,眼睛不用离开图纸,真正的“所见即所得”工作流,就从这五个按键开始。