当前位置:首页 > EDA > 电子设计自动化
[导读]从原理图到 Gerber,传统流程是:画完原理图→手动导出网表→开 PCB→导网表→布局→布线→手动跑 DRC→手动点“输出 Gerber”→填钻孔文件参数→点确定。每次改一版,重复点十几下鼠标,不仅慢而且容易漏层。下面以 KiCad 8 为例,展示如何用一套 Python 脚本把“原理图 → 网表 → PCB 导入 → DRC → Gerber + 钻孔”串成一条命令。Allegro / Altium 也有类似方案,原理相通。



从原理图到 Gerber,传统流程是:画完原理图→手动导出网表→开 PCB→导网表→布局→布线→手动跑 DRC→手动点“输出 Gerber”→填钻孔文件参数→点确定。每次改一版,重复点十几下鼠标,不仅慢而且容易漏层。下面以 KiCad 8 为例,展示如何用一套 Python 脚本把“原理图 → 网表 → PCB 导入 → DRC → Gerber + 钻孔”串成一条命令。Allegro / Altium 也有类似方案,原理相通。


一、KiCad 8 的 CLI 武器:kicad-cli


KiCad 8 将大部分 GUI 操作暴露给了命令行工具 kicad-cli,无需打开图形界面即可完成:

# 从原理图导出网表(用于 PCB 导入)

kicad-cli sch export netlist --format kicad_sexp project.kicad_sch -o project.net


# 更新 PCB 中的网表(需先有 .kicad_pcb 文件)

kicad-cli pcb update board project.kicad_pcb -n project.net


# 运行 DRC

kicad-cli pcb drc project.kicad_pcb --output drc.rpt


# 导出 Gerber(全部层,含 edge cuts)

kicad-cli pcb export gerbers project.kicad_pcb --layers F.Cu,B.Cu,F.SilkS,B.SilkS,F.Mask,B.Mask,Edge.Cuts --output gerber/


# 导出钻孔文件(Excellon 格式)

kicad-cli pcb export drill project.kicad_pcb --format excellon --output gerber/



二、Python 串联:一键流水线


上面的命令一条条敲仍然繁琐,用 Python 的 subprocess 包装成一个函数,再配上参数和日志:

import subprocess, sys, os


def run_kicad_cli(cmd_args, desc=""):

   print(f"[{desc}] Running: {' '.join(cmd_args)}")

   result = subprocess.run(cmd_args, capture_output=True, text=True)

   if result.returncode != 0:

       print(f"ERROR: {result.stderr}")

       sys.exit(1)

   return result.stdout


def build_all(sch_file, pcb_file, output_dir="gerber"):

   # 1. 导出网表

   net_file = "project.net"

   run_kicad_cli(["kicad-cli", "sch", "export", "netlist",

                  "--format", "kicad_sexp", sch_file, "-o", net_file],

                 desc="Export netlist")


   # 2. 更新 PCB 网表(如果 PCB 已存在)

   if os.path.exists(pcb_file):

       run_kicad_cli(["kicad-cli", "pcb", "update", "board",

                      pcb_file, "-n", net_file],

                     desc="Update PCB netlist")


   # 3. DRC 检查

   drc_report = run_kicad_cli(["kicad-cli", "pcb", "drc",

                               pcb_file, "--output", "drc.rpt"],

                              desc="Run DRC")

   # 如果 DRC 有错误则中止

   if "errors: 0" not in open("drc.rpt").read():

       print("DRC errors found! Check drc.rpt")

       sys.exit(1)


   # 4. 创建输出目录

   os.makedirs(output_dir, exist_ok=True)


   # 5. 导出 Gerber(指定常用层)

   layers = "F.Cu,B.Cu,F.SilkS,B.SilkS,F.Mask,B.Mask,Edge.Cuts"

   run_kicad_cli(["kicad-cli", "pcb", "export", "gerbers",

                  pcb_file, "--layers", layers,

                  "--output", output_dir],

                 desc="Export Gerbers")


   # 6. 导出钻孔文件

   run_kicad_cli(["kicad-cli", "pcb", "export", "drill",

                  pcb_file, "--format", "excellon",

                  "--output", output_dir],

                 desc="Export drills")


   print(f"\n✅ All done! Gerber files in '{output_dir}'")


if __name__ == "__main__":

   build_all("project.kicad_sch", "project.kicad_pcb")



三、进阶:集成 BOM 与 PDF 原理图


除了 Gerber,生产还需要 BOM 和原理图 PDF,顺手加入:

# 导出 BOM(CSV 格式,含参考位号和值)

run_kicad_cli(["kicad-cli", "sch", "export", "bom",

              sch_file, "--output", "bom.csv"])


# 导出原理图 PDF

run_kicad_cli(["kicad-cli", "sch", "export", "pdf",

              sch_file, "--output", "schematic.pdf"])



四、注意事项


• KiCad 版本:kicad-cli 从 KiCad 7 开始提供,8 增加了更多选项。旧版本只能用 Python API(pcbnew 模块)或手动调用插件。


• 路径处理:脚本中所有路径建议用绝对路径或相对于项目根目录,避免 kicad-cli 工作目录混淆。


• DRC 严格性:生产级建议在 DRC 后增加人工复核,脚本只拦截明显错误(短路、未连接等)。


• 多板项目:如果有多个 PCB 变体,可以在脚本中加入参数选择不同 .kicad_pcb 文件。


五、效果


把这套脚本加到 Git hooks 或 CI 里,每次提交代码后自动跑一遍:原理图改完 → 提交 → CI 自动生成 Gerber + BOM + DRC 报告,邮件通知结果。从此告别“忘了导出某层”、“钻孔格式不对”的低级失误。


EDA 自动化的核心不是炫技,是把重复性操作交给机器,让工程师专注于设计和审查。KiCad 的 CLI 只是一个起点,Allegro 的 SKILL、Altium 的 DelphiScript 都能实现类似流水线。关键是先搭框架,再逐步完善异常处理,最终让“一键出 Gerber”成为团队习惯。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

双方将依托 Pharma.AI 平台,在武田制药选定的多个治疗领域共同推进创新候选药物研发 马萨诸塞州剑桥2026年7月2日 /美通社/ -- 由生成式人工智能(AI)驱动的临床阶段药物研发科技公司英矽智能(Insi...

关键字: 生成式AI ARMA COM EDA

上海2026年6月26日 /美通社/ -- 6月23日,在火山引擎 FORCE 原动力大会上,豆包大模型2.1 Pro、豆包视频生成模型 Seedance 2.5、Seedance 2.0 4K 版、豆包图像创作模型 S...

关键字: AI 模型 SE EDA

在数字芯片设计流程中,功耗分析贯穿RTL→综合→P&R各阶段。RTL级功耗估算(如Synopsys SpyGlass Power / PowerArtist)速度快但依赖统计模型;Gate级功耗分析(如PrimeTime...

关键字: EDA RTL

随着人工智能技术的飞速发展,生成式AI正在重塑电子设计自动化(EDA)的工作流程。从RTL代码编写到验证覆盖率收敛,AI辅助工具正在帮助工程师突破传统设计方法的效率瓶颈。本文将探讨生成式AI在Verilog代码生成和功能...

关键字: EDA AI Verilog代码

2026年3月13日,《中华人民共和国国民经济和社会发展第十五个五年规划纲要》正式发布,集成电路被置于新兴支柱产业之首。从2026年政府工作报告明确的六大新兴支柱产业到“十五五”的战略部署,集成电路均位列第一。政策信号再...

关键字: 集成电路 半导体 EDA

在复杂的FPGA系统设计中,算法验证与硬件实现之间往往存在巨大的鸿沟。本文将深入探讨如何利用Tcl脚本构建自动化桥梁,实现Matlab/Simulink算法仿真与Vivado硬件验证的无缝衔接。

关键字: EDA Tcl脚本 Vivado

2026年,半导体行业的创新势头依然强劲。光子技术正从实验室创新走向实际应用,成为解决新一代数据中心带宽与功耗挑战的关键技术。与此同时,散热管理挑战加剧、安全需求以及政府推动的人工智能(AI)投资正在重塑各个行业的发展优...

关键字: 半导体 EDA 光子技术

在芯片设计流程中,电子设计自动化(EDA)工具承担着关键角色。随着工艺节点向3/nm以下推进,传统EDA算法在处理复杂设计时面临计算效率与精度瓶颈。近年来,机器学习(ML)技术为EDA领域带来新突破,尤其在布线拥堵预测与...

关键字: AI EDA 机器学习

Altium Develop秉承“植根中国,服务中国”的开发理念,并在中国本地部署运行,是面向中国电子产业生态打造的云端协同研发平台,旨在连接设计、供应链与制造环节,推动更加高效、互联的电子研发协作模式。

关键字: EDA 芯片 半导体
关闭