实例环境:Windows、Codex 桌面应用、KiCad 10.0.6。
本文讨论新建与修改原理图、PCB、校验验证以及制造输出,并结合一次实际工程修订说明具体实现。
本文实例ChatGPT操作KiCad使用的组合为:原理图结构化文件处理 + PCB 的 pcbnew API + KiCad CLI 检查及输出 + 独立验证脚本 + 图面查看。没有使用桌面鼠标操作、IPC API、MCP KiCad 服务、第三方自动布线器或 SKiDL。
引言
当用户把 KiCad 工程交给 ChatGPT,要求分析电路、修改原理图或完成 PCB 时,实际执行可以经过多条技术路线:模型生成脚本,通过执行工具修改文件;调用 KiCad 的本机接口;向运行中的编辑器发送 API 请求;或者借助桌面操作工具完成菜单、放置与交互布线。
这些方式可以组合使用。模型负责理解需求、拟定操作和解释检查结果,执行环境负责读写文件或运行程序,KiCad 负责解释设计、进行规则检查并输出工程文件。是否能够直接执行,取决于当前应用提供的工具、文件访问权限和安装的软件;只有聊天功能的环境可以输出方案及脚本,实际执行需另行完成。
本文将可实现的技术手段按底层机制分类,覆盖主要路线及其组合。插件和服务数量不断变化,因此不把某个插件名单视为永久完整的能力清单。第一部分介绍通用方法;第二部分只叙述本次实例工程实际执行并留下记录的操作。

第一部分:当前 ChatGPT 操作 KiCad 的主要技术手段
1.1 技术路线一览
| 技术路线 | 实现机制 | 新建/修改原理图 | 新建/修改 PCB | 检查与输出 | 适用条件 |
|---|---|---|---|---|---|
| 对话辅助与脚本交付 | 输出设计说明、操作步骤、代码,交由用户执行 | 可以指导或生成文件内容 | 可以指导或生成脚本 | 可以生成检查及导出流程 | 没有本地执行工具时也可使用 |
| 桌面界面操作 | 屏幕识别、键盘鼠标、可用的辅助功能接口 | 通过原理图编辑器完成 | 通过 PCB 编辑器完成 | 使用菜单、规则检查和导出对话框 | 需要桌面控制工具与可访问的 KiCad 窗口 |
| KiCad 命令行 | 调用 kicad-cli | 负责升级和导出;不提供通用画图命令 | 负责部分导入、升级和导出;不提供通用布局布线命令 | ERC、DRC、图面及制造输出 | 适合批处理、报告生成和自动化检查 |
传统 pcbnew Python 绑定 | Python 直接操作 PCB 对象 | 不支持原理图编辑 | 支持创建和修改板、封装、焊盘、走线等 | 可配合 CLI 检查与导出 | 需要与 KiCad 版本匹配的运行环境 |
| 官方 IPC API | 外部程序与 KiCad 进程通信 | KiCad 10 中尚不支持原理图编辑器插件 | KiCad 10 支持 PCB 编辑器接口 | KiCad 10 通常配合 CLI 输出 | 对应操作必须在安装版本中已有接口 |
| 直接读写原生文件 | 解析 S 表达式及工程配置,生成或修改设计数据 | 支持 | 支持 | 写出后交给 KiCad 验证 | 需要处理版本、身份、库依赖及连接语义 |
| 第三方文件库 | 用数据类等封装原生文件格式 | 按库的支持范围操作 | 按库的支持范围操作 | 仍需 KiCad 验证 | 必须核实库版本及字段保留能力 |
| 电路描述语言/网表生成 | 以代码定义器件和网络,再生成设计 | 可生成网表;部分工具可生成可编辑原理图 | 可生成 PCB 初始数据,再完成布局布线 | 可结合自身 ERC、KiCad 和仿真工具 | 适合参数化、重复电路及从零设计 |
| 外部 EDA 导入与格式转换 | 先生成兼容格式,或转换其他 EDA 的设计 | 依导入器支持范围 | 依导入器支持范围 | 转换后重新验证 | 需要核对符号、封装、网络及层映射 |
| 专用工具与自动化框架 | 自动布线、批量输出、仿真、几何优化等 | 可处理相应专用任务 | 可处理相应专用任务 | 扩展分析、制造与发布流程 | 各工具需单独安装、配置及验证 |
MCP 服务、插件、远程执行服务和自建连接器,可以把上述能力封装为模型可调用的工具。例如,一个服务可以提供“读取 PCB”“运行 DRC”“导出 Gerber”等操作。它们的实际能力仍来自底层 CLI、API、文件处理程序或界面操作;服务名称本身不能证明其拥有完整的 KiCad 编辑能力。
1.2 通过界面操作:沿用工程师的交互流程
如果运行环境提供桌面控制能力,模型可以查看窗口、选择菜单、输入器件属性、使用快捷键放置符号、连接导线、调整封装、交互布线、铺铜和保存。
这条路线适合完成需要编辑器交互的工作,例如使用 PCB 的交互布线器处理拥挤区域,或者查看三维装配。它也可与脚本结合:先用程序生成结构,再通过界面调整图面。
界面自动化需要持续读取实际状态。窗口缩放、焦点、对话框及快捷键配置都会影响执行结果;操作后还应检查保存文件、导出网表及规则报告。截图只能展示界面状态,不能单独证明文件已保存或全部网络正确。
本次实例没有使用这条路线。
1.3 命令行:检查、导出和批量执行
KiCad 10 的 kicad-cli 提供原理图和 PCB 的规则检查、网表和图面导出、制造资料导出等功能。它适合自动化流水线,但没有通用的“放置一个原理图电阻”“添加一段 PCB 走线”命令。创建设计内容通常还要结合 API、文件生成或界面操作。KiCad 10 命令行手册
例如,以下是检查一个已存在工程的命令形式:
$cli = 'C:/Program Files/KiCad/10.0/bin/kicad-cli.exe'
& $cli sch erc --format json `
-o 'checks/erc.json' 'example.kicad_sch'
& $cli sch export netlist --format kicadxml `
-o 'checks/netlist.xml' 'example.kicad_sch'
& $cli pcb drc --schematic-parity --format json `
-o 'checks/drc.json' 'example.kicad_pcb'
示例目录需预先建立。工程、原理图及 PCB 的名称和路径也需按实际项目设置。
自动化检查应读取报告内容。需要让持续集成流程因违规而失败时,可增加 --exit-code-violations;不能仅根据默认命令退出码判断设计合格。报告中的错误、警告、排除项和忽略类别都应明确记录。KiCad CLI 的 ERC/DRC 参数
1.4 传统 Python 绑定:直接操作 PCB 对象
pcbnew 是 KiCad PCB 编辑器的传统 Python 绑定,由 SWIG 将相关 C++ 对象暴露给 Python。它可以在编辑器内运行,也可以通过独立脚本加载和保存 PCB。它提供的是 PCB 对象访问能力,不能用同一模块创建原理图符号和导线。官方 PCB Python 绑定说明
从零创建 PCB 时,脚本可以建立 BOARD,添加网络、板框、封装和铜对象;修改现有板时,则可使用 LoadBoard() 加载,再移动元件、修改字段、重建走线并保存。板上对象包括:
- 封装与焊盘:
FOOTPRINT、PAD; - 走线与过孔:
PCB_TRACK、PCB_VIA; - 图形与文字:板框、丝印、说明等;
- 铜区:轮廓、网络、层及填充设置;
- 连接关系:焊盘和走线所属的网络。
几何创建和几何检查是两个步骤。脚本能添加相互冲突的走线,API 写入本身不保证 DRC 合格,也不等同于运行交互布线器。单位转换、层编号、旋转角度、焊盘编号、网络和对象生命周期均要正确处理。
这套绑定与 KiCad 内部结构联系紧密,跨大版本可能改变。官方文档已将其标记为弃用,并说明计划在 KiCad 11 移除;长期插件开发应关注 IPC API 的覆盖情况。本文实例使用的是本机 KiCad 10.0.6 中实际可用的绑定,不把该脚本视为跨版本通用接口。弃用及兼容性说明
1.5 官方 IPC API:连接正在运行的 KiCad
IPC API 是另一套接口。外部程序作为客户端,向 KiCad 进程发送消息;官方 kicad-python 提供 Python 封装。它与 import pcbnew 直接加载本机对象的方式不同。
版本边界尤其重要:
| 能力 | KiCad 9/10 | 官方文档对 KiCad 11 的说明 |
|---|---|---|
| 与编辑器通信 | 需要运行中的 GUI | 增加通过 CLI 提供无界面服务的支持 |
| PCB 编辑器插件 | 支持已有接口所覆盖的操作 | 继续扩展 |
| 原理图编辑器插件 | 不支持 | 增加支持,具体操作仍需核对接口 |
| 经 IPC 绘图/导出 | 不支持,通常调用 CLI 补充 | 增加相应支持 |
这些边界来自官方开发者文档。文档首页可能展示开发版本的功能,不能将其直接视为 KiCad 10.0.6 已有能力;也不能从“支持原理图插件”推断每一种原理图对象操作都已实现。官方 IPC API 状态及版本说明
IPC 插件、传统 Action Plugin 和自定义工具服务,是调用能力的不同组织方式。实际选型应先明确任务、安装版本及可用方法,再决定采用哪一种连接形式。
1.6 直接读写原生文件:原理图生成的重要路线
现代 KiCad 的原理图、PCB、符号库和封装文件采用 S 表达式。工程配置 .kicad_pro 则采用 JSON。程序可以解析这些结构,再生成新文档或修改指定节点。原理图格式规范、PCB 格式规范
以原理图为例,从零创建至少要处理:
- 文档版本、根 UUID、页面和标题信息。
- 使用的符号定义,以及符号实例、单元、位号、属性和引脚。
- 坐标、方向、导线、连接点、标签、电源符号和未连接标记。
- 工程实例路径;有层级设计时,还要处理子页和层级接口。
- 符号/封装库依赖、DNP、BOM 与 PCB 参与状态。
修改现有设计时,应尽量保留原有对象身份,为新增对象分配唯一 UUID,并维护原理图与 PCB 的关联。直接做无范围约束的文本替换,容易改到不相关字段;先解析结构再修改,可限定目标对象,但仍需验证修改后的电气含义。
原理图中的导线与引脚必须在有效坐标处相接,交叉线与连接点也有不同含义。因此,文件可以被解析、图面看起来正常,并不足以证明连接正确。应让 KiCad 重新导出网表,再核对“元件位号—引脚编号—网络”的关系。
直接生成 PCB 同样可行,但还需处理层、板框、网络、焊盘、走线、铜区等对象。对于复杂 PCB,利用 KiCad 的对象接口通常能减少手工处理底层结构的工作量。
1.7 第三方库、电路描述语言和格式转换
文件对象库。 KiUtils 等工具将 KiCad 文件转换为 Python 数据类,支持处理原理图、PCB、符号、封装及库表。这属于第三方文件处理库,并非 KiCad 官方原理图 API。使用时应检查目标版本、未知字段保留及读写往返结果。KiUtils 项目说明
电路描述语言。 SKiDL 允许以 Python 定义器件及网络。当前项目说明列出网表输出,也列出可编辑 KiCad 原理图输出;不能沿用“SKiDL 只能输出网表”的旧概括。生成图面后仍需检查布局、符号选择和电气连接。SKiDL 项目说明
网表表达连接关系,可用于 PCB 初始化和核对,但网表与完整原理图有不同的信息量:仅有连接关系不会自动给出符合工程阅读习惯的符号位置、分页和说明。自动生成 PCB 初始数据,也不代表完成了元件布局、铜走线及铺铜。
格式转换。 还可先生成其他支持的 EDA 格式,再通过 KiCad 导入。具体原理图/PCB 格式及支持程度应查询安装版本。转换后要核对引脚映射、封装、层、网络、单位及图面,不能仅以导入成功作为验收。KiCad 开发文档中的导入格式入口
1.8 布局、布线与外部专用工具
布局布线可以由模型确定具体坐标,再由 API 或文件程序创建;也可通过界面使用 KiCad 的交互布线器。规则化设计还能采用参数化排列、几何搜索、优化算法或外部布线工具。
例如,Freerouting 可读取 DSN 设计文件,输出 SES 布线会话文件,再导回 EDA。它提供 GUI、CLI 等使用方式,可以接入自动化流程。Freerouting 项目说明
自动布线之前仍需确定布局、网络类别和约束;导回之后仍需 DRC,并复核电源、参考、敏感模拟信号及回流路径。几何上连通的结果,可能仍不适合某个电路的噪声或时序要求。
KiCad Jobset、脚本、持续集成和 KiBot 等框架,可组织重复的检查、制造文件及文档输出。框架负责执行已定义的任务,设计判断与验收标准仍需要明确。KiBot 项目说明
必要时也可以开发专用插件或修改 KiCad 源码,增加已有接口没有覆盖的操作;这需要额外的开发、编译和版本维护工作。本次实例没有采用这些扩展路线。
1.9 校验、验证与验收的不同层次
完整流程应分层检查,每一层回答不同问题:
| 层次 | 要回答的问题 | 典型方法 |
|---|---|---|
| 文件与依赖 | 能否正确加载?符号、封装和模型是否存在? | KiCad 读取、库路径核对、UUID 和位号检查 |
| 电气连接 | 是否接到了期望引脚和网络? | 网表比较、关键连接断言、ERC |
| PCB 几何 | 有没有短路、间距或未连接问题? | DRC、重新铺铜、未连接项检查 |
| 原理图/PCB 一致性 | 两边的器件、封装、字段及连接是否同步? | 原理图一致性检查、逐焊盘核对 |
| 图面与机械 | 能否清晰阅读和装配?机械接口是否满足约束? | PDF/SVG 渲染、二维及三维检查、尺寸核对 |
| 电路性能 | 精度、带宽、建立时间和噪声是否达标? | 计算、仿真及实测 |
| 制造输出 | 输出文件是否属于同一修订且符合工厂要求? | Gerber/钻孔查看、层及坐标原点核对、版本清单 |
KiCad 的仿真器是 ngspice 的图形前端;自动化也可生成适当 SPICE 网表并调用外部仿真程序。仿真必须有适用的器件模型、引脚映射及测试条件,不能把 ERC 当作仿真。KiCad 仿真说明
规则检查通过,也不能代替性能验证。一个连接正确的 ADC 电路,仍可能因采样时序、参考噪声或驱动建立时间而不能达到目标精度。图面截图则主要用于阅读和交付展示。
1.10 制造输出与生产资料
设计检查完成后,可以通过 GUI、CLI、Jobset 或自动化框架输出生产资料。按工厂需求,常见资料包括:
- 铜层、阻焊、丝印、焊膏、板框等 Gerber 文件及 Gerber Job。
- 镀通孔、非镀通孔钻孔资料及钻孔图。
- BOM、贴片坐标、装配图和 DNP/装配变体说明。
- 用于机械配合的 STEP 等三维文件。
- 需要时提供 IPC-D-356、IPC-2581、ODB++ 等数据;格式应与工厂协商。
KiCad 10 的 PCB 输出手册及 CLI 手册列出了相关功能。下面只展示基础命令形态,未代表已确定生产配置,也没有在本次工程上执行:
# 输出目录需预先建立;层、原点、格式等按工厂要求配置。
& $cli pcb export gerbers -o 'fabrication/gerber/' 'example.kicad_pcb'
& $cli pcb export drill -o 'fabrication/drill/' 'example.kicad_pcb'
& $cli pcb export pos --format csv --units mm --exclude-dnp `
-o 'fabrication/position.csv' 'example.kicad_pcb'
& $cli sch export bom --exclude-dnp `
-o 'fabrication/bom.csv' 'example.kicad_sch'
BOM 和坐标表要区分装配元件、机械件及仅用于测量的裸焊盘。DNP 不意味着删除 PCB 焊盘;装配输出应反映不装状态,而裸板输出保留相应铜和阻焊结构。还需核对底面旋转、坐标原点、PTH/NPTH 分类以及丝印与板框。
制造资料应从同一修订设计重新生成,附版本和输出配置。文件已经导出,不等于已在独立查看器中验证,更不等于已经完成制造或功能测试。
第二部分:本次 M-meter 工程的实际技术过程
2.1 工程背景与用户要求
本实例为M强度传感变换器项目工程(M-meter 工程)。现有电路使用 OPA333 运放、ADS8320 ADC,以及传感器和 USB/SPI 适配器接口。
根据器件资料,OPA333 属于零漂精密运放,ADS8320 是 16 位采样 ADC。电路修订围绕输入调理、参考与电源去耦、元件采购要求和可测量性展开,并未更换这两个核心器件。TI OPA333 资料、TI ADS8320 资料
本实例工程提出的操作需求如下:
- 查看并分析原理图,提出优化意见。
- 基于意见给出修改方案,先不操作文件。
- 执行原理图修订;原工程文件不得覆盖,新增文件进入
M-meter-rev。 - 将修订同步到 PCB。
- 解释技术实现,并形成本文。
因此,本次 PCB 成果是在原板基础上修订生成的新文件,保留了原板机械接口;并非从空白板重新开始。
2.2 模型、软件及运行环境
| 项目 | 本次实际记录 |
|---|---|
| 执行应用 | Codex 桌面应用中的本地任务 |
| 最初原理图审阅模型 | gpt-6-sol |
| 后续方案、原理图/PCB 修改及技术说明模型 | gpt-6.1-sol |
| 会话记录的推理强度设置 | high |
| 操作日期 | 2026 年 10 月 3 日 |
| 操作系统与命令环境 | Windows、PowerShell |
| 实际使用的 KiCad | 10.0.6,已通过本机 CLI 版本输出确认 |
| 原原理图文件头 | generator_version "9.0",格式版本 20250114 |
| 修订原理图 | 保留原有文件格式头,由 KiCad 10.0.6 读取、检查和导出 |
| 修订 PCB | 由 KiCad 10.0.6 的 pcbnew 保存 |
| PCB 脚本运行时 | KiCad 安装目录自带的 python.exe |
| 预览处理 | KiCad 导出 PDF,pypdf 合并,Poppler 渲染成图片 |
模型标识来自本次会话的各轮记录,不能作为“所有 ChatGPT 都使用该型号”的表述。只保留模型标识、时间和设置的摘录见实例环境记录。原理图文件头中的 9.0 也不是本次执行工具版本:它来自原文件,脚本修改时保留了该格式。
相关可执行文件是:
C:/Program Files/KiCad/10.0/bin/kicad-cli.exe
C:/Program Files/KiCad/10.0/bin/python.exe
本次使用的组合为:原理图结构化文件处理 + PCB 的 pcbnew API + KiCad CLI 检查及输出 + 独立验证脚本 + 图面查看。没有使用桌面鼠标操作、IPC API、MCP KiCad 服务、第三方自动布线器或 SKiDL。
2.3 文件隔离与原工程保护
原始目录是 M-meter,修订目录是它的同级目录 M-meter-rev。本次写入的原理图、PCB、工程配置、工程库副本、报告、预览及处理脚本均放入修订目录。
保护原工程采用文件校验,而不是只检查修改时间:
- 原理图修订前,记录原目录文件的 SHA-256。
- PCB 修订前,再建立一次校验快照。
- 完成后逐项比较文件集合及校验值。
首次记录包含 60 个文件,其中一个是 KiCad 临时锁文件 ~M-meter.kicad_pro.lck。PCB 修订开始时该锁文件已不存在,剩余 59 个文件与首次记录一致;本轮结束,59 个文件仍全部保持一致。
修订目录复制了必要的自定义符号及封装库,使用工程相对路径。没有把原工程旧 Gerber、钻孔和坐标文件当作修订版生产资料复制交付。
2.4 原理图具体修改内容
| 对象 | 修订内容 | 设计目的或保留条件 |
|---|---|---|
| C10 | 新增 10 µF、X7R、耐压至少 10 V,接 AD_VREF 到 GND | 提供 ADC 参考端的局部去耦,接在 R7 的 ADC 侧 |
| R5 | 0.1 Ω 改为 10 Ω | 与现有电容形成更明确的运放电源滤波;压降需结合负载核实 |
| R1、R2、Rf1、Rg1 | 保留阻值,增加 0.1% 容差、≤25 ppm/℃采购字段 | 明确电阻比精度及温漂要求 |
| C9 | 保留 100 pF,指定 C0G/NP0 | 明确 ADC 输入小电容的介质要求 |
| C11 | 新增 10 nF、C0G/NP0,DIV 到 GND,默认 DNP | 保留输入滤波选装位置,待带宽和采样条件明确后选值 |
| TP1~TP6 | 新增六个 1.5 mm 测试焊盘 | 分别测输入、运放输出、ADC 输入、参考、电源和地 |
| J1、J2 | 显示名称、接口功能和供电约定补充 | 便于装配、接线和调试;实际适配器仍需核对 |
| 工程说明 | 补充增益、器件和布板备注 | 将设计条件留在工程中 |
采购字段表达的是选料要求;只有实际采购和装配了对应元件,才能体现其物理性能。修改字段本身并不会改变已装元件的精度。
原有分压与放大电阻阻值保持不变,理想总增益仍为:
G = 10 / (15 + 10) × (1 + 10 / 20) = 0.6
ADC 电源串联电阻 R4 保留 0.1 Ω。参考仍来自现有 5 V 电源架构,没有直接改成独立精密参考源。实际传感器型号、输出范围、比例式/绝对式特性和采样率尚未给出,因此没有在本次修订中重新确定全量程或抗混叠带宽。
2.5 原理图如何被程序修改
主要代码在build_revision.py,S 表达式处理辅助代码在sexpr.py。
脚本将原文件解析为嵌套列表,按 Reference 查找符号,针对指定属性节点进行修改。以下为实际逻辑摘录:
set_field(symbols['R5'], 'Value', '10')
for ref in ['R1', 'R2', 'Rf1', 'Rg1']:
set_field(symbols[ref], 'Tolerance', '0.1%')
set_field(symbols[ref], 'Temperature Coefficient', '<=25 ppm/degC')
新增 C10、C11 时,复制现有电容符号,更新坐标、位号、数值及属性,并为新增对象重新生成 UUID。原有符号及根 UUID 保留。
C10 的连接通过拆分原 VREF 导线、增加分支连接点和接地符号完成;C11 则增加 DIV 标签,并设置 dnp yes。测试点从安装的 KiCad 符号库提取定义,嵌入原理图,并添加位号、封装、引脚、实例路径和网络连接。
修订脚本还复制工程配置与库表,更新工程实例名称,清空继承的 ERC 排除项。原 ADC 已被排除仿真,其指向缺失桌面模型的 Sim.* 字段被清理;这项处理没有构成仿真验证。
文件写出后,通过 KiCad 导出新网表。独立脚本比较原有器件的引脚连接分组,确认既有连接关系没有意外改变,并检查新增器件。例如:
assert pins[('C10', '1')] == pins[('U2', '1')] == pins[('R7', '2')]
assert pins[('C10', '1')] != pins[('R7', '1')]
assert pins[('C10', '2')] == 'GND'
assert pins[('C11', '1')] == pins[('U1', '3')]
这组断言检查实际网表连接,能够识别 C10 是否误接在 R7 的另一侧。校验代码见validate_revision.py。

2.6 PCB 如何通过 API 同步
主要代码在build_pcb.py。脚本通过 KiCad 自带 Python 运行,以 import pcbnew 加载本机绑定。
首先读取原 PCB、修订原理图和 KiCad 导出的 XML 网表:
b = pcbnew.LoadBoard(source_pcb)
# 建立“位号、引脚编号 → 网络名”的映射
pin_nets = {
(node.get('ref'), node.get('pin')): net.get('name')
for net in netlist.findall('./nets/net')
for node in net.findall('node')
}
原有电路器件封装从库中刷新,先保持原位置、方向和封装 UUID,再设置位号、数值、DNP、原理图路径及焊盘网络。原有铜焊盘尺寸和封装内相对位置进行了核对。关联操作包括:
fresh.SetPosition(old.GetPosition())
fresh.SetOrientation(old.GetOrientation())
fresh.SetUuid(old.m_Uuid)
fresh.SetPath(pcbnew.KIID_PATH(symbol_uuid_path))
for pad in fresh.Pads():
pad.SetNet(nets[pin_nets[(ref, pad.GetNumber())]])
新增 C10、C11 和 TP1~TP6 同样从封装库加载,再按网表分配网络。四个机械安装孔整理为 H1~H4,设置为仅 PCB 器件,并排除 BOM 和坐标输出。
ADS8320 的自定义封装还在修订库副本中清理了多余丝印及错误庭院线,补充外框和 1 脚标记,铜焊盘未改动。该库清理属于文件修改,随后由 PCB API 加载封装;不是所有相关工作都通过同一种接口完成。
2.7 局部布局、布线及地铜
本次采用明确坐标的局部改线。模型结合原板位置确定元件和走线路径,脚本负责创建对应铜对象;没有运行自动布线器或交互布线器。
C8、C9、R8 调整了位置,为参考电容和 ADC 输入网络留出空间。C10 靠近 U2 的参考引脚;C11 放到 DIV 输入网络附近,六个测试点分布到相关节点。
C10 参考端到 U2.1 的正面路径实际写为:
track(
'/AD_VREF',
[(149.95, 87.7),
(149.95, 89.0),
(150.3, 89.35),
(150.3, 90.0)],
width=0.45
)
上例的 track() 是本次脚本的辅助函数,不是 KiCad API 的函数名。它将相邻坐标转成线段,并调用:
t = pcbnew.PCB_TRACK(b)
t.SetStart(point(*start))
t.SetEnd(point(*end))
t.SetWidth(pcbnew.FromMM(width))
t.SetLayer(pcbnew.F_Cu)
t.SetNet(nets[net_name])
b.Add(t)
该路径中心线总长约 2.45 mm。C10 接地端附近增加过孔;本次新增通孔过孔外径 0.6 mm、钻孔 0.3 mm。坐标和线宽通过 FromMM() 转成内部单位,避免把毫米数直接当成内部整数。
局部调整同时重建了部分电源和模拟信号走线,为电容及地测试点增加接地过孔,移除不再使用的残留线段与过孔。背面 GND 铜区扩展到板框内侧,以 SHAPE_POLY_SET 设置轮廓后重新填充。
板框仍为 50 × 30 mm,两层铜结构不变;四个安装孔仍为 2.2 mm,坐标与原 PCB 一致。元件丝印位置重新整理,新增 MAG REV A 和 DNP,J2 的引脚功能放到背面丝印。
脚本维护了被移除对象的 Python 引用,以避免本轮遇到的 SWIG 对象生命周期问题。这属于绑定使用上的实现细节,也是采用版本匹配运行时和反复校验的重要原因。
2.8 KiCad 检查与迭代修正
本次通过三轮 PCB DRC 逐步处理局部走线冲突、庭院线、丝印及原理图一致性问题。规则检查给出错误类型、坐标和对象,模型据此修改脚本及库副本,再重新生成并检查。
最终 PCB 检查包含:
$cli = 'C:/Program Files/KiCad/10.0/bin/kicad-cli.exe'
& $cli pcb drc --schematic-parity --refill-zones --save-board `
--format json -o '检查中间文件/pcb-drc-pass3.json' `
'M-meter-rev.kicad_pcb'
这里,--refill-zones 重新填充铜区;与 --save-board 一起使用,将重新填充后的板保存。检查同时启用原理图一致性核对。
最终结果如下:
| 检查项 | 记录结果 |
|---|---|
| 原理图 ERC | 0 错误、0 警告 |
| PCB DRC | 0 项违规 |
| 未连接项 | 0 |
| 原理图一致性问题 | 0 |
| 原理图对应封装 | 28 个,即原有 20 个加新增 8 个 |
| PCB 总封装 | 32 个,含 4 个机械安装孔 |
| 焊盘网络与修订网表 | 一致 |
| C11 DNP 状态 | 一致,默认不装 |
| 板框、孔位及孔径 | 与原 PCB 一致 |
| 原目录现存文件 | 59 个 SHA-256 均保持一致 |
| 最终图面 | 原理图及 PCB 正反面 PDF 已渲染查看 |
“DRC 为 0”的准确含义是:在当前工程启用的规则下,报告没有错误或警告。 工程继承的忽略类别仍保留,本次没有为了通过检查额外增加排除项。最终 JSON 明确列出以下 7 类忽略检查:
missing_courtyard:封装没有庭院。track_not_centered_on_via:走线端点未居中过孔。tuning_profile_track_geometries:调谐线段几何。footprint_filters_mismatch:封装与符号封装过滤条件不匹配。pth_inside_courtyard:镀通孔位于庭院内。npth_inside_courtyard:非镀通孔位于庭院内。footprint_type_mismatch:封装类型与焊盘类型不匹配。
这些类别不能因为报告的违规列表为空就被理解为全部已检查通过。原始结果可复核最终 DRC JSON和文本报告。额外的连接与机械检查记录见PCB 验证结果。
2.9 图面导出与截图位置
原理图由 KiCad CLI 导出单页 PDF。PCB 正面和镜像背面分别导出 PDF,再用 pypdf 合并为两页。正面包含 F.Cu、F.Silkscreen 和 Edge.Cuts;背面包含 B.Cu、B.Silkscreen 和 Edge.Cuts,并采用镜像视图。
导出 PDF 通过 Poppler 渲染成 PNG,再查看文字、器件位置、走线、板框和孔位。正文总图另行生成,只用于解释技术路线,不参与工程连接或布线验证。

2.10 交付内容与验证边界
本次修订目录提供了原理图、工程配置、PCB、库副本、修订物料表、ERC/DRC 报告、修改说明以及原理图和 PCB 预览。详细说明见原理图修改说明、PCB 修改说明和PCB 检查报告。
本次没有完成以下工作:
- 修订版 Gerber、钻孔和贴片坐标制造输出。
- 电路仿真及实物功能、噪声、精度、ADC 建立时间或 EMC 测试。
- 根据实际磁传感器和目标采样率最终确定输入滤波带宽。
- 根据实际 USB/SPI 适配器确认供电方向与 5 V 电平兼容性。
因此,工程文件已完成修改及连接规则校验,但测量性能仍需在实际器件和采样条件下验证。尤其应区分 ADS8320 的 16 位输出分辨率和整条测量链的实际精度;后者还受传感器、参考、电阻比、ADC 误差及校准影响。
处理脚本保留了主要生成与验证逻辑,便于审计。部分后续字段、备注和封装修正由单独的迭代操作完成;初始脚本也有防覆盖约束,所以现存脚本集合不能被描述为“一次运行即可完整重现最终全部文件”。若要将其产品化为稳定工具,还需整合最终补丁、固定依赖、配置化参数并建立回归检查。
结语
本次实例展示了三个执行层的组合:Python 按文件结构修改原理图,KiCad 的 pcbnew 绑定修改 PCB,KiCad CLI 重新解释设计、检查并导出图面。独立网表和 SHA-256 校验则补充了连接与原工程保护的证据。
新建工程可以沿用同样的分工,但还要从零建立器件、网络、库依赖和机械约束。随着 API 覆盖范围变化,某些文件操作可改用官方接口;版本支持需要逐项确认。
评价这类自动化工作的依据,应包括可编辑工程、明确的修改记录、可复核的检查结果及实际性能测试。文章中的界面截图用于展示过程和成果,工程文件与验证记录才承载具体技术结论。
资料与实例文件索引
官方资料与项目文档
- KiCad 10 命令行手册
- KiCad IPC API 开发者文档
- KiCad PCB Python 绑定与弃用说明
- KiCad 原理图格式
- KiCad PCB 格式
- KiCad 原理图编辑器及仿真手册
- KiUtils 项目、SKiDL 项目
- Freerouting 项目、KiBot 项目
- TI ADS8320、TI OPA333
本实例可复核记录
| 文件 | 用途 |
|---|---|
| build_revision.py | 原理图主要生成过程 |
| sexpr.py | 本次 S 表达式解析与写出辅助代码 |
| validate_revision.py | 原理图连接、属性、库依赖和原文件校验 |
| build_pcb.py | PCB 封装同步、布局、布线与地铜轮廓修改 |
| verify_pcb.py | PCB 焊盘网络、DNP、机械尺寸及原文件校验 |
| verification.json | 原理图修订检查记录 |
| pcb-verification.json | PCB 独立检查记录 |
| pcb-drc-pass3.json | 最终 DRC、未连接、一致性及忽略类别 |
| 实例环境记录.json | 本次会话的模型标识及设置摘录 |