基于实例的技术说明:ChatGPT如何操作KiCad

实例环境: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技术路线图

第一部分:当前 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 格式规范

以原理图为例,从零创建至少要处理:

  1. 文档版本、根 UUID、页面和标题信息。
  2. 使用的符号定义,以及符号实例、单元、位号、属性和引脚。
  3. 坐标、方向、导线、连接点、标签、电源符号和未连接标记。
  4. 工程实例路径;有层级设计时,还要处理子页和层级接口。
  5. 符号/封装库依赖、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 资料

本实例工程提出的操作需求如下:

  1. 查看并分析原理图,提出优化意见。
  2. 基于意见给出修改方案,先不操作文件。
  3. 执行原理图修订;原工程文件不得覆盖,新增文件进入 M-meter-rev。
  4. 将修订同步到 PCB。
  5. 解释技术实现,并形成本文。

因此,本次 PCB 成果是在原板基础上修订生成的新文件,保留了原板机械接口;并非从空白板重新开始。

2.2 模型、软件及运行环境

项目本次实际记录
执行应用Codex 桌面应用中的本地任务
最初原理图审阅模型gpt-6-sol
后续方案、原理图/PCB 修改及技术说明模型gpt-6.1-sol
会话记录的推理强度设置high
操作日期2026 年 10 月 3 日
操作系统与命令环境Windows、PowerShell
实际使用的 KiCad10.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 侧
R50.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 一起使用,将重新填充后的板保存。检查同时启用原理图一致性核对。

最终结果如下:

检查项记录结果
原理图 ERC0 错误、0 警告
PCB DRC0 项违规
未连接项0
原理图一致性问题0
原理图对应封装28 个,即原有 20 个加新增 8 个
PCB 总封装32 个,含 4 个机械安装孔
焊盘网络与修订网表一致
C11 DNP 状态一致,默认不装
板框、孔位及孔径与原 PCB 一致
原目录现存文件59 个 SHA-256 均保持一致
最终图面原理图及 PCB 正反面 PDF 已渲染查看

“DRC 为 0”的准确含义是:在当前工程启用的规则下,报告没有错误或警告。 工程继承的忽略类别仍保留,本次没有为了通过检查额外增加排除项。最终 JSON 明确列出以下 7 类忽略检查:

  1. missing_courtyard:封装没有庭院。
  2. track_not_centered_on_via:走线端点未居中过孔。
  3. tuning_profile_track_geometries:调谐线段几何。
  4. footprint_filters_mismatch:封装与符号封装过滤条件不匹配。
  5. pth_inside_courtyard:镀通孔位于庭院内。
  6. npth_inside_courtyard:非镀通孔位于庭院内。
  7. 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,再查看文字、器件位置、走线、板框和孔位。正文总图另行生成,只用于解释技术路线,不参与工程连接或布线验证。

PCB 修订生成完成后的交付界面

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 覆盖范围变化,某些文件操作可改用官方接口;版本支持需要逐项确认。

评价这类自动化工作的依据,应包括可编辑工程、明确的修改记录、可复核的检查结果及实际性能测试。文章中的界面截图用于展示过程和成果,工程文件与验证记录才承载具体技术结论。

资料与实例文件索引

官方资料与项目文档

本实例可复核记录

文件用途
build_revision.py原理图主要生成过程
sexpr.py本次 S 表达式解析与写出辅助代码
validate_revision.py原理图连接、属性、库依赖和原文件校验
build_pcb.pyPCB 封装同步、布局、布线与地铜轮廓修改
verify_pcb.pyPCB 焊盘网络、DNP、机械尺寸及原文件校验
verification.json原理图修订检查记录
pcb-verification.jsonPCB 独立检查记录
pcb-drc-pass3.json最终 DRC、未连接、一致性及忽略类别
实例环境记录.json本次会话的模型标识及设置摘录

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Are you human? Please solve:Captcha