1. 从"画图苦力"到"意图驱动":这套工作流到底在解决什么
画原理图这件事,说穿了就是把脑子里的电路意图翻译成一套符号、网络和连线。但真正干过的人都知道,这个"翻译"过程里塞满了大量重复劳动:查数据手册确认引脚定义、翻参考设计找典型应用电路、手动摆放去耦电容、一根根拉电源和地线、给每个网络起名字、检查有没有悬空引脚。一个中等复杂度的板子,光是这些机械操作就能吃掉你两三天时间,而且越到后面越容易因为疲劳犯低级错误。
我做了十多年硬件,带过不少刚入行的工程师,发现一个很普遍的规律:初级工程师和资深工程师画同一块板子,差距往往不在"懂不懂电路",而在"脑子里有没有现成的模板库"和"知不知道哪些地方可以偷懒、哪些地方绝对不能偷懒"。资深工程师画一个MCU最小系统,去耦电容的容值组合、晶振的负载电容计算、复位电路的RC取值,几乎是肌肉记忆,十分钟就能摆完;初级工程师则要翻半天手册,摆完还不确定对不对。
这套"AI硬件原理图工作流"要解决的,就是这个"经验差"问题。它的核心思路不是让AI替你设计电路——那是不现实的,也是危险的——而是把AI Agent当作一个"随时在线的资深同事",帮你完成三件事:意图解析(把"我要做一个STM32F103的最小系统"翻译成具体的元件清单和连接关系)、模板检索与生成(从知识库里调出经过验证的参考电路,生成可导入的原理图文件)、规则校验(自动检查电源网络、去耦配置、引脚冲突等常见问题)。
关键词里出现的KiCad、立创EDA、AI Agent、原理图、PCB,基本勾勒出了这套工作流的技术栈轮廓。KiCad和立创EDA是目前个人和小团队用得最多的两款EDA工具,前者开源、脚本能力强,后者中文生态好、元件库和立创商城打通。AI Agent则是这两年真正开始能干活的东西——不是那种只会聊天的,而是能调用工具、读写文件、执行校验脚本的Agent。
适合读这篇的人有三类:一是刚入行、想快速建立"工程化画图习惯"的初级工程师;二是想把自己脑子里的经验沉淀成可复用资产的资深工程师;三是做硬件相关工具链开发、想了解AI Agent在EDA场景怎么落地的人。下面我会把整套工作流拆开讲,包括为什么这么设计、每一步具体怎么做、以及我在实际跑这套流程时踩过的坑。
2. 工具链选型:为什么是KiCad加立创EDA,而不是只用一个
2.1 两款工具的分工逻辑
很多人第一反应是"选一个不就行了",但实际跑下来,KiCad和立创EDA在这套工作流里承担的是完全不同的角色,硬要二选一会很难受。
KiCad的优势在于文件格式开放、Python脚本生态成熟。它的原理图文件(.kicad_sch)本质上是结构化的S表达式文本,AI Agent可以直接读写、程序化生成。你让Agent生成一个包含几十个元件的原理图,它不需要去操作GUI,直接输出符合格式的文本文件就行。而且KiCad有完整的Python API(通过kicad-skip、kiutils这类库),可以做批量网络检查、元件属性修改、BOM导出。这一点对自动化工作流来说是决定性的。
立创EDA的优势在于元件库和供应链打通。它的元件库直接关联立创商城的库存和价格,你画完原理图,BOM里的元件能不能买到、多少钱、有没有现货,一目了然。对于国内做小批量或者打样的团队,这个价值非常大。而且立创EDA的3D模型库很全,画完PCB能直接看3D预览。
所以我的分工方案是:用KiCad做原理图的生成和校验主战场,用立创EDA做元件选型和最终交付。具体来说,AI Agent在KiCad格式下生成和修改原理图,完成规则校验后,再通过网表(netlist)导入立创EDA,在立创的库里做元件映射和替换,最后出BOM和PCB。
2.2 AI Agent的选型与能力边界
Agent这块,我用过几种方案,最后稳定下来的组合是"本地脚本能力 + 大模型推理 + 工具调用"。
纯靠大模型对话生成原理图是不靠谱的,因为它会编造引脚号、编造不存在的元件型号。正确的做法是让Agent具备工具调用能力:它需要能查询本地元件库(确认某个型号存在、引脚定义是什么)、能读取参考设计文件(从历史项目里找相似电路)、能执行校验脚本(跑ERC检查)、能写文件(输出.kicad_sch)。
关键词里提到的"AI Agent主流架构""AI Agent搭建""基于Rust语言的AI Agent"这些,反映的是大家在选型时的纠结。我的建议是:不要为了用某个语言或框架而用。如果你只是做硬件工作流,Python生态最成熟,kiutils、skidl这些库都是现成的,Agent用Python写最省事。Rust写Agent性能好,但在EDA这个场景里,瓶颈根本不在Agent本身的执行速度,而在大模型的推理延迟和工具调用的往返上,用Rust属于杀鸡用牛刀。
Agent的能力边界要划清楚:它能做的是"检索+组合+校验",不能做的是"从零发明电路拓扑"。你让它生成一个"基于TPS5430的降压电路",它可以去查TPS5430的典型应用电路、算出反馈电阻值、生成原理图。但你让它"设计一个效率95%以上的5V转3.3V方案",它给不出可靠的答案,因为选型涉及成本、封装、散热、EMI等一堆工程权衡,这些需要人来判断。
2.3 环境准备中最容易忽略的三个细节
第一个细节是KiCad版本。KiCad 6、7、8的文件格式有差异,尤其是符号库的路径管理方式变过。如果你的Agent生成的原理图引用了错误的库路径,打开时会一堆符号丢失。我的做法是固定一个版本(目前用KiCad 8),并且在Agent的配置里写死符号库的搜索路径。
第二个细节是元件库的本地化。不要依赖在线库,因为网络波动会让Agent的查询超时。把常用的符号库(Device、MCU_ST_STM32、Regulator_Linear等)下载到本地,建一个索引文件,Agent查库时直接查本地索引。这个索引可以用简单的JSON维护,记录元件型号、所属库、引脚数、关键引脚定义。
第三个细节是网表格式的兼容性。KiCad导出的网表默认是KiCad自己的格式,导入立创EDA时需要选对格式(立创支持导入KiCad网表,但版本要对上)。我实测下来,用KiCad 8导出的网表,立创EDA专业版能正常识别,但标准版偶尔会丢网络名。建议在导入后做一次网络对比,确认关键网络(电源、地、复位、时钟)没有丢失。
3. 让Agent真正"看懂"电路意图:提示词与知识库的配合
3.1 意图解析的提示词设计
Agent能不能生成靠谱的原理图,八成取决于提示词怎么写。我见过太多人上来就一句"帮我画一个STM32最小系统",然后抱怨Agent生成的东西不能用。问题不在Agent,在于你没给它足够的约束。
我的提示词模板分四层:功能描述层、约束条件层、参考设计层、输出格式层。
功能描述层要具体到型号和核心功能。比如不要写"画一个单片机电路",要写"生成STM32F103C8T6最小系统原理图,包含8MHz晶振电路、复位电路、SWD调试接口、3.3V稳压电路、所有电源引脚的去耦电容"。
约束条件层要写清楚工程限制。比如"去耦电容采用100nF和10uF组合,每个电源引脚配一个100nF,每两个电源引脚配一个10uF""晶振负载电容按20pF计算,实际取值需扣除PCB寄生电容""复位电路采用10k上拉加100nF电容"。
参考设计层是让Agent去检索知识库里的相似电路。我会在知识库里放一批经过验证的参考设计,按"MCU最小系统""电源转换""接口电路""传感器前端"等分类。Agent接到任务后,先检索最相似的参考设计,在此基础上做修改,而不是从零生成。
输出格式层明确要求输出KiCad 8格式的.kicad_sch文件,并且要求元件符号引用本地库路径。
3.2 知识库的构建:把经验变成可检索的资产
知识库是这套工作流的灵魂。没有知识库,Agent就是个只会说漂亮话的实习生;有了知识库,它才像个有几年经验的工程师。
我的知识库分三个层次。第一层是元件知识,记录每个常用元件的关键参数、引脚定义、典型应用电路。比如TPS5430这个降压芯片,记录它的输入电压范围、输出电流、开关频率、反馈电压基准、典型应用电路图、外围元件计算公式。这些信息从数据手册里提取,人工审核后入库。
第二层是电路模板,按功能分类存放经过验证的原理图片段。比如"STM32最小系统模板""RS485隔离收发模板""锂电池充电管理模板""DDR4内存接口模板"(关键词里提到了ddr4原理图,这类高速接口的模板尤其有价值,因为布线规则和端接电阻的配置很容易出错)。每个模板都标注了适用场景、注意事项、已知问题。
第三层是规则库,记录设计规则和常见错误。比如"所有电源引脚必须有去耦电容""晶振走线下方不能走其他信号""复位引脚不能悬空""I2C总线需要上拉电阻""M2螺丝孔的过孔和环宽要求"(关键词里提到了这个,一般M2螺丝孔建议内径2.2mm、外径4.5mm左右,具体看螺丝头型和安装方式)。
知识库的检索用向量数据库做语义检索,配合关键词过滤。Agent接到任务后,先用语义检索找相似模板,再用关键词过滤确认元件型号匹配。
3.3 一个完整的意图解析实例
拿"生成一个基于STC89C52RC的最小系统"举例(关键词里出现了stc89c52rc原理图,这是很多教学场景常用的芯片)。
Agent的解析过程是这样的:首先识别出核心元件是STC89C52RC,这是一款8051内核的单片机,40引脚DIP或44引脚QFP封装。然后检索知识库,找到"51单片机最小系统"模板。模板里包含:11.0592MHz晶振电路(两个30pF负载电容)、复位电路(10uF电容加10k电阻)、电源去耦(每个电源引脚一个100nF)、EA引脚上拉(接VCC使能内部程序存储器)、串口下载电路(如果模板里有的话)。
Agent需要根据STC89C52RC的具体引脚定义调整模板。比如它的P0口是开漏输出,如果模板里P0口接了上拉电阻阵列,要保留;如果没接,要根据实际用途决定是否添加。这些细节Agent会从元件知识库里查。
生成完成后,Agent调用校验脚本,检查:所有电源引脚是否有去耦、晶振负载电容是否匹配、复位电路时间常数是否合理、有没有悬空引脚。校验通过后输出.kicad_sch文件。
整个过程大概几十秒到几分钟,取决于Agent的推理速度和知识库检索效率。相比人工从零画,效率提升是数量级的,而且生成的结果一致性更好——不会因为今天状态不好就漏掉某个去耦电容。
4. 从原理图到PCB的衔接:网表、封装与规则传递
4.1 网表导出与元件映射
原理图生成完,下一步是导入PCB工具。这里的关键是网表——它描述了元件之间的连接关系,是原理图和PCB之间的桥梁。
KiCad导出网表后,导入立创EDA时会遇到元件映射问题。KiCad的符号库和立创的元件库不是一一对应的,同一个型号可能符号名不同、引脚编号方式不同。我的做法是维护一个映射表,记录KiCad符号名到立创元件ID的对应关系。Agent在生成原理图时,就按照映射表里的立创元件ID来命名元件,这样导入时能自动匹配。
映射表里还要记录封装信息。KiCad的封装库和立创的封装库也有差异,尤其是国内常用的一些封装命名。比如"0603"电阻,KiCad里叫R_0603_1608Metric,立创里可能叫R0603。这些都要在映射表里对齐。
4.2 封装选择的坑
封装选择是初级工程师最容易踩坑的地方。我见过有人画完原理图,导入PCB发现一半元件没有封装,或者封装尺寸不对,焊盘间距和实际元件对不上。
Agent在这方面的价值是自动匹配封装并校验。知识库里记录每个元件的推荐封装,Agent生成原理图时直接带上封装信息。同时校验脚本会检查:封装的焊盘间距是否和元件引脚间距匹配、封装尺寸是否和元件本体尺寸匹配、有没有用到非标准封装。
关键词里提到"一般pcb中m2螺丝孔留多大过孔和环宽",这是个很实际的问题。M2螺丝的头部直径一般是3.5到4.0mm,所以螺丝孔的禁布区直径至少要4.5mm。如果做金属化孔,内径建议2.2mm(M2螺丝杆直径2.0mm加0.2mm余量),外径建议4.0到4.5mm。如果是非金属化孔,内径2.2mm,外径可以小一些,2.8到3.2mm。这些参数我会写进知识库的规则层,Agent生成机械孔时会自动带上。
4.3 设计规则的传递
原理图阶段定义的很多规则,需要传递到PCB阶段。比如差分对的阻抗要求、电源网络的线宽要求、关键信号的等长要求。
我的做法是在原理图的网络命名上做文章。比如差分对命名为"USB_D+"/"USB_D-",Agent在生成PCB规则时,识别到这类命名就自动应用差分对规则。电源网络命名为"VCC_3V3""VCC_5V",自动应用对应的线宽规则。
关键词里提到"allegro中如何将pcb的叠层线宽、线距等信息设置进cm中",这反映的是规则传递的通用需求。不同工具的实现方式不同,但思路是一样的:在原理图阶段就把规则信息编码进去,PCB阶段自动解析。Allegro用Constraint Manager,KiCad用Design Rules,立创EDA用设计规则设置,本质都是把规则从原理图传递到PCB。
5. 实测中踩过的坑与排查链路
5.1 Agent生成的原理图打不开:符号库路径问题
第一次跑通流程时,Agent生成的.kicad_sch文件在KiCad里打开,满屏都是问号,所有符号都显示不出来。排查过程是这样的:
先看文件本身,用文本编辑器打开,发现符号引用写的是"Device:R",但KiCad找不到这个库。原因是KiCad 8的符号库路径配置在全局的sym-lib-table文件里,Agent生成的文件没有正确引用这个配置。
解决方案是在Agent的输出模板里,强制使用完整的库路径引用,或者在生成后自动执行一个脚本,把符号引用替换成本地库的绝对路径。我最后用的是后者,写了个Python脚本,用kiutils库读取生成的原理图,遍历所有符号,把库引用替换成本地路径。
5.2 网络名冲突:电源网络被意外合并
有一次生成一个包含多路电源的板子,3.3V和5V网络在导入PCB后变成了同一个网络。排查发现是Agent在生成时,把两个网络的标签都写成了"VCC",导致KiCad认为它们是同一个网络。
这个坑的根因是网络命名不规范。解决方案是在提示词里强制要求网络命名规则:电源网络必须带电压标识(VCC_3V3、VCC_5V),地网络统一用GND,信号网络用功能名加序号。同时校验脚本增加一项:检查有没有不同电压的网络用了相同名字。
5.3 去耦电容漏配:校验脚本的必要性
Agent生成STM32最小系统时,漏掉了两个电源引脚的去耦电容。人工检查很容易漏,因为STM32F103有多个VDD和VSS引脚,分散在符号的不同位置。
这个问题的解决方案是强制校验。我写了个校验脚本,读取原理图,提取所有电源引脚,检查每个引脚附近是否有去耦电容。检查逻辑是:找到所有电源网络,对每个电源网络,统计连接的去耦电容数量,如果少于电源引脚数量,就报错。
这个脚本后来成了工作流的标准环节,每次生成原理图后自动跑一遍。类似的校验还有:晶振电路是否完整、复位电路是否存在、SWD接口是否引出、I2C总线是否有上拉。
5.4 立创EDA导入后元件丢失:映射表不完整
从KiCad导入立创EDA时,有几个元件显示不出来。排查发现是映射表里没有这几个元件的对应关系。原因是Agent在生成时用了一个知识库里没有的元件型号,Agent自己编了一个符号名。
解决方案是限制Agent只能使用知识库里已有的元件。在提示词里明确要求:如果需要的元件不在知识库里,Agent应该报错并提示人工添加,而不是自己编造。同时在Agent的工具调用里加一个检查:生成原理图前,先验证所有元件都在知识库里。
6. 这套工作流的实际产出与适用边界
6.1 实际产出:从几小时到几十分钟
跑通这套工作流后,我实测了几个场景。一个STM32F103C8T6的最小系统,从输入需求到生成可用的原理图,大概15分钟,其中大部分时间花在Agent推理和校验上。人工画同样的电路,熟练工程师大概1到2小时,初级工程师可能要大半天。
一个包含电源转换、MCU、RS485接口、EEPROM存储的板子,Agent生成加人工审核修改,大概1小时。人工画的话,资深工程师半天,初级工程师一两天。
效率提升是明显的,但更重要的是一致性。Agent不会因为今天心情不好就漏掉去耦电容,不会因为赶时间就跳过校验。生成的结果每次都经过同样的规则检查,质量稳定。
6.2 适用边界:什么能做,什么不能做
这套工作流适合有成熟参考设计的常规电路。MCU最小系统、电源转换、接口电路、传感器前端、存储电路,这些都有大量经过验证的参考设计,Agent可以在此基础上快速生成。
不适合需要创新拓扑的电路。比如你要设计一个新型的开关电源拓扑,或者一个特殊的模拟前端,这些没有现成参考设计,Agent帮不上忙,还是得靠人。
也不适合高速数字电路的关键部分。DDR4内存接口、PCIe、USB 3.0这些,虽然关键词里提到了ddr4原理图,但这类电路的关键在于布线规则和信号完整性,原理图阶段能做的有限。Agent可以帮你生成连接关系,但端接电阻的取值、走线长度匹配、阻抗控制这些,需要人工仔细设计。
6.3 后续可以扩展的方向
这套工作流目前主要覆盖原理图生成和校验。后续可以扩展的方向有几个:一是自动生成PCB布局建议,根据电路功能模块划分布局区域;二是自动生成测试点,根据网络重要性在关键信号上添加测试点;三是与仿真工具联动,生成原理图后自动跑一次SPICE仿真,验证关键节点的电压电流。
还有一个方向是知识库的持续积累。每次人工审核修改后的原理图,都可以反哺回知识库,让Agent下次生成得更准。这个反馈闭环跑起来后,工作流会越用越顺手。
我个人在实际操作中的体会是,这套工作流最大的价值不是"省时间",而是"把资深工程师的经验固化下来"。以前这些经验在资深工程师脑子里,带新人的时候靠口传心授,效率低还容易遗漏。现在把经验写进知识库和规则库,Agent每次生成都带着这些经验,新人拿到生成结果,对照着看,学得也快。这才是这套工作流对团队真正的意义。