KiCad PCB 文件格式详解 - kit-dev-coldfire-xilinx_5213 实例分析

概述

本文使用实际的PCB文件 kit-dev-coldfire-xilinx_5213.kicad_pcb 来讲解KiCad PCB文件的格式和结构。这个文件是一个 ColdFire + Xilinx FPGA 开发板的设计文件。

文件信息:

  • 文件名: kit-dev-coldfire-xilinx_5213.kicad_pcb

  • KiCad版本: 20241229 (KiCad 9.0)

  • 文件大小: 约 2.2 MB

  • 行数: 57,889 行

  • 内容统计:

    • 160 个封装 (Footprints/组件)

    • 0 条走线 (Segments) - 未布线的板子

    • 0 个过孔 (Vias)

    • 3 个铜皮区域 (Zones)

    • 5 个文字标注 (gr_text)


1. 文件头部 (Header)


(kicad_pcb

    (version 20241229)

    (generator "pcbnew")

    (generator_version "9.0")

说明:

  • (kicad_pcb ...) - S-expression格式的根节点

  • version - 文件格式版本号(日期格式:YYYYMMDD)

  • generator - 生成此文件的程序名称

  • generator_version - 生成器版本号


2. 通用设置 (General Section)


    (general

        (thickness 1.6)

        (legacy_teardrops no)

    )

参数说明:

  • thickness - PCB板厚度,单位为毫米

    • 本例: 1.6mm = 标准厚度
  • legacy_teardrops - 是否使用旧式泪滴

常见PCB厚度:

  • 0.8mm - 薄型板(4层板常用)

  • 1.0mm - 中等厚度

  • 1.6mm - 标准厚度(最常见)

  • 2.0mm+ - 厚型板(高功率板)


3. 图纸设置 (Paper & Title Block)


    (paper "A4")

    (title_block

        (title "Demo Kicad")

        (date "2015-10-09")

        (rev "2")

    )

说明:

  • paper - 图纸尺寸 (A4, A3, Letter等)

  • title_block - 标题栏信息

    • title - 项目标题

    • date - 设计日期

    • rev - 版本号


4. 层叠定义 (Layers)

KiCad PCB使用数字ID来标识每一层:


    (layers

        (0 "F.Cu" signal "Top_layer")

        (4 "In1.Cu" signal)

        (6 "In2.Cu" signal)

        (2 "B.Cu" signal)

        (5 "F.SilkS" user "F.Silkscreen")

        (7 "B.SilkS" user "B.Silkscreen")

        (1 "F.Mask" user)

        (3 "B.Mask" user)

        (25 "Edge.Cuts" user)

        ...

    )

本例中的层结构(4层板):

| 层ID | 层名 | 类型 | 说明 |

|------|------|------|------|

| 0 | F.Cu | signal | 顶层铜(信号层) |

| 4 | In1.Cu | signal | 内层1(信号层) |

| 6 | In2.Cu | signal | 内层2(信号层) |

| 2 | B.Cu | signal | 底层铜(信号层) |

| 5 | F.SilkS | user | 顶层丝印 |

| 7 | B.SilkS | user | 底层丝印 |

| 1 | F.Mask | user | 顶层阻焊 |

| 3 | B.Mask | user | 底层阻焊 |

| 25 | Edge.Cuts | user | 板边轮廓 |

层类型说明:

  • signal - 信号层(铜层,可布线)

  • user - 用户层(非铜层,用于丝印、阻焊等)

注意: 层ID在KiCad内部是固定的,用于程序识别;层名是可配置的显示名称。


5. 层叠参数 (Setup - Stackup)


    (setup

        (stackup

            (layer "F.SilkS"

                (type "Top Silk Screen")

                (color "White")

                (material "Liquid Photo")

            )

            (layer "F.Mask"

                (type "Top Solder Mask")

                (color "Green")

                (thickness 0.01)

                (material "Dry Film")

                (epsilon_r 3.3)

                (loss_tangent 0)

            )

            (layer "F.Cu"

                (type "copper")

                (thickness 0.035)

            )

            (layer "dielectric 1"

                (type "prepreg")

                (thickness 0.48)

                (material "FR4")

                (epsilon_r 4.5)

                (loss_tangent 0.02)

            )

            (layer "In1.Cu"

                (type "copper")

                (thickness 0.035)

            )

            ...

            (copper_finish "ENIG")

            (dielectric_constraints no)

        )

        (pad_to_mask_clearance 0)

        (allow_soldermask_bridges_in_footprints no)

        (tenting front back)

        (aux_axis_origin 65.151 148.4122)

        ...

    )

层叠参数详解:

铜层

  • thickness - 铜厚(单位:mm)

    • 0.035mm = 1oz 铜(标准)

    • 0.070mm = 2oz 铜(厚铜)

介质层 (Dielectric)

  • type - 介质类型

    • prepreg - 半固化片(PP片)

    • core - 芯板

  • thickness - 介质厚度

  • material - 材料类型(FR4, Rogers等)

  • epsilon_r (εr) - 介电常数

    • FR4: 4.0-4.8

    • 高频材料: 2.2-3.5

  • loss_tangent - 介质损耗角正切

阻焊层 (Solder Mask)

  • type - 阻焊类型

  • color - 颜色(Green, Red, Blue, Black, White等)

  • epsilon_r - 介电常数(用于阻抗计算)

其他设置

  • copper_finish - 铜面处理工艺

    • ENIG - 化学镍金

    • HASL - 热风整平

    • OSP - 有机保焊剂

  • pad_to_mask_clearance - 焊盘到阻焊的间距

  • tenting - 是否盖过孔

  • aux_axis_origin - 辅助坐标原点

本例的4层板结构:


Top Silk Screen (白色)

Top Solder Mask (绿色, 0.01mm)

F.Cu (铜, 0.035mm)  ← 顶层

Dielectric 1 (FR4, 0.48mm, εr=4.5)

In1.Cu (铜, 0.035mm)  ← 内层1

Dielectric 2 (FR4, 0.48mm, εr=4.5)

In2.Cu (铜, 0.035mm)  ← 内层2

Dielectric 3 (FR4, 0.48mm, εr=4.5)

B.Cu (铜, 0.035mm)  ← 底层

Bottom Solder Mask (绿色, 0.01mm)

Bottom Silk Screen (白色)

总厚度计算:

0.01 + 0.035 + 0.48 + 0.035 + 0.48 + 0.035 + 0.48 + 0.035 + 0.01 = 1.6mm ✓


6. 网络定义 (Nets)

网络定义了PCB上所有电气连接的名称:


    (net 0 "")

    (net 1 "/ALLPST")

    (net 2 "/AN2")

    (net 3 "/AN3")

    (net 4 "/AN4")

    (net 5 "/AN6")

    (net 6 "/BKPT-")

    ...

    (net 91 "GND")

    (net 92 "GNDA")

    (net 104 "+3.3V")

    ...

    (net 278 "unconnected-(UARTCAN203-P9-Pad9)")

格式: (net <net_id> "<net_name>")

示例网络:

  • net 0 - 无网络(空网络)

  • net 91 "GND" - 地网络

  • net 104 "+3.3V" - 3.3V电源网络

  • net 1 "/ALLPST" - 信号网络

  • net 278 "unconnected-(UARTCAN203-P9-Pad9)" - 未连接的引脚

网络命名规则:

  • 电源网络: +3.3V, +5V, GND, VCC

  • 信号网络: /信号名 (以/开头)

  • 差分对: /信号_P, /信号_N

  • 未连接引脚: unconnected-(<元件>-<引脚>)

网络ID的作用:

  • 网络ID是数字,用于在文件内部引用网络

  • 同一网络ID的所有焊盘和走线在电气上是连接的

  • 路由工具使用网络ID来确定哪些引脚需要连接


7. 封装 (Footprints)

封装是PCB上的物理元件实例,包含焊盘、丝印、装配信息等。

7.1 封装基本结构


    (footprint "kit-dev-coldfire:SW_PUSH_SMALL"

        (layer "F.Cu")

        (uuid "00000000-0000-0000-0000-000053d8dc13")

        (at 172.339 100.33)

        (property "Reference" "ABRT_SW101"

            (at 7.62 0.127 0)

            (layer "F.SilkS")

            (uuid "8dcd0e7d-5b6e-4311-985b-02c40fb0fffe")

            (effects

                (font

                    (size 0.6 0.6)

                    (thickness 0.15)

                )

            )

        )

        (property "Value" "SW_PUSH"

            (at 0 1.016 0)

            (layer "F.Fab")

            ...

        )

        (path "/00000000-0000-0000-0000-000046237f50")

        (sheetname "Racine")

        (sheetfile "kit-dev-coldfire-xilinx_5213.kicad_sch")

        (attr through_hole)

        ...

        (pad "1" thru_hole circle

            (at -3.81 -2.54)

            (size 1.397 1.397)

            (drill 0.8128)

            (layers "*.Cu" "*.Mask")

            (remove_unused_layers no)

            (net 136 "Net-(ABRT_SW101-Pad1)")

            (pinfunction "1")

            (pintype "passive")

            (uuid "2a65fd96-2e4f-49f2-af18-275374f91772")

        )

        ...

    )

封装属性:

| 属性 | 说明 | 示例值 |

|------|------|--------|

| footprint | 封装库路径 | "kit-dev-coldfire:SW_PUSH_SMALL" |

| layer | 放置层 | "F.Cu" (顶层) 或 "B.Cu" (底层) |

| uuid | 唯一标识符 | "00000000-0000-0000-0000-..." |

| at | 位置坐标 | (x y rotation) |

| path | 原理图路径 | "/00000000-0000-0000-0000-..." |

| sheetname | 原理图纸名 | "Racine" |

属性 (Property):

  • Reference - 元件位号(如 R1, C1, U1)

  • Value - 元件值(如 10k, 100nF)

  • Datasheet - 数据手册链接

属性 (Attr):

  • through_hole - 通孔元件

  • smd - 表贴元件

  • virtual - 虚拟元件(不生产)

7.2 焊盘 (Pad)

焊盘是封装上用于电气连接的点:


    (pad "1" thru_hole circle

        (at -3.81 -2.54)

        (size 1.397 1.397)

        (drill 0.8128)

        (layers "*.Cu" "*.Mask")

        (remove_unused_layers no)

        (net 136 "Net-(ABRT_SW101-Pad1)")

        (pinfunction "1")

        (pintype "passive")

        (uuid "2a65fd96-2e4f-49f2-af18-275374f91772")

    )

焊盘参数:

| 参数 | 说明 | 示例 |

|------|------|------|

| pad | 焊盘编号 | "1", "A1", "H2" |

| at | 相对位置 | (x y rotation) |

| size | 焊盘尺寸 | (width height) 单位mm |

| drill | 钻孔直径 | 0表示无孔(SMD) |

焊盘类型:

| 类型 | 说明 | 例子 |

|------|------|------|

| thru_hole | 通孔焊盘 | DIP封装,连接器 |

| smd | 表贴焊盘 | 芯片,阻容元件 |

| np_thru_hole | 非电镀通孔 | 安装孔,定位孔 |

焊盘形状:

| 形状 | 说明 |

|------|------|

| circle | 圆形 |

| rect | 矩形(方形) |

| oval | 椭圆形 |

| roundrect | 圆角矩形 |

| trapezoid | 梯形 |

焊盘网络属性:

  • net - 网络ID和名称

  • pinfunction - 引脚功能名(来自原理图)

  • pintype - 引脚类型

    • passive - 被动引脚

    • input - 输入引脚

    • output - 输出引脚

    • power_in - 电源输入

    • power_out - 电源输出

    • bidirectional - 双向引脚

7.3 SMD焊盘示例


    (pad "1" smd roundrect

        (at -0.95 0 270)

        (size 1 1.45)

        (layers "B.Cu" "B.Mask" "B.Paste")

        (roundrect_rratio 0.25)

        (net 104 "+3.3V")

        (pintype "passive")

        (uuid "18307add-f83e-4a45-b1b1-20c388dc6ef0")

    )

SMD焊盘特点:

  • 没有 drill 参数

  • 指定具体层:"B.Cu", "B.Mask", "B.Paste"

  • 可能包含 roundrect_rratio(圆角比例)

7.4 封装图形

每个封装包含图形元素用于显示和制造:

丝印线条 (fp_line):


    (fp_line

        (start -3.81 -3.81)

        (end 3.81 -3.81)

        (stroke

            (width 0.127)

            (type solid)

        )

        (layer "F.SilkS")

        (uuid "6bf3909f-be9e-4e21-8edd-285a4cd4c085")

    )

参数:

  • start, end - 起点、终点坐标

  • stroke - 线宽和样式

  • layer - 所在层

丝印圆/弧 (fp_circle, fp_arc):


    (fp_circle

        (center 0 0)

        (end 0 -2.54)

        (stroke

            (width 0.127)

            (type solid)

        )

        (fill no)

        (layer "F.SilkS")

        (uuid "46701c17-abf0-44a8-8186-beb2837809bc")

    )

装配层图形 (F.Fab, B.Fab):

  • 用于定义元件的3D模型边界

  • 通常比丝印略小


8. 图形对象 (Graphic Objects)

PCB文件中的独立图形对象,不属于任何封装。

8.1 文字 (gr_text)


    (gr_text "MOD0"

        (at 108.9 98.5 0)

        (layer "F.SilkS")

        (uuid "e0a31601-c55c-4fd3-8ee0-5d848f875b65")

        (effects

            (font

                (size 1 1)

                (thickness 0.2)

            )

        )

    )

用途:

  • 板子标识文字

  • 版本号

  • 生产信息

  • 警告标识

其他图形对象(本例中未使用):

  • gr_line - 直线

  • gr_circle - 圆

  • gr_arc - 圆弧

  • gr_rect - 矩形

  • gr_poly - 多边形


9. 区域 (Zones)

区域(铜皮)用于创建大面积铜箔,常用于地平面或电源平面:


    (zone

        (net 91)

        (net_name "GND")

        (layer "B.Cu")

        (uuid "00000000-0000-0000-0000-00005aeebe1a")

        (hatch edge 0.508)

        (connect_pads

            (clearance 0.3)

        )

        (min_thickness 0.25)

        (filled_areas_thickness no)

        (fill yes

            (thermal_gap 0.381)

            (thermal_bridge_width 0.381)

        )

        (polygon

            (pts

                (xy 71.7 56.3)

                (xy 228.2 56.3)

                (xy 228.2 146.7)

                (xy 71.7 146.7)

                (xy 71.7 146.4)

            )

        )

        (filled_polygon

            (layer "B.Cu")

            (pts

                (xy 107.534601 111.826185)

                (xy 107.555243 111.842819)

                ...

            )

        )

    )

区域参数:

| 参数 | 说明 | 示例 |

|------|------|------|

| net | 网络ID | 91 (GND) |

| net_name | 网络名称 | "GND" |

| layer | 所在层 | "B.Cu" |

| hatch | 填充样式 | edge 0.508 |

| connect_pads | 焊盘连接 | (clearance 0.3) |

| min_thickness | 最小铜箔宽度 | 0.25mm |

| thermal_gap | 热风焊盘间隙 | 0.381mm |

| thermal_bridge_width | 热风焊盘连筋宽度 | 0.381mm |

区域结构:

  1. polygon - 定义区域边界的多边形轮廓

  2. filled_polygon - KiCad计算出的实际填充结果

    • 考虑了所有障碍物(焊盘、走线)

    • 生成热风焊盘

    • 避免其他网络的铜箔

本例的3个区域:

  1. 底层GND平面

  2. 顶层某个网络平面(可能是电源)

  3. 另一个平面区域

热风焊盘(Thermal Relief):

  • 用于防止焊接时散热过快

  • 通过 thermal_gap 和 thermal_bridge_width 控制

  • 常见连筋数:2或4条


10. 未布线的PCB

重要发现: 此PCB文件 没有任何走线(segments)或过孔(vias)!

这意味着:

  1. ✅ 这是一个放置好元件但未布线的PCB

  2. ✅ 它是自动布线工具的完美输入

  3. ✅ 所有网络连接都由网络定义指定

  4. ✅ 网络通过焊盘的 net 属性关联

对于路由工具的意义:

  • 输入: 160个封装,每个封装的焊盘都有网络ID

  • 任务: 根据网络ID,在同一网络的焊盘之间生成走线

  • 输出: 添加 (segment ...) 和 (via ...) 条目


11. 完整文件结构总结


(kicad_pcb                           ; 根节点

  (version ...)                       ; 文件格式版本

  (generator ...)                     ; 生成程序



  (general                            ; 通用设置

    (thickness ...)                   ; 板厚

  )



  (paper ...)                         ; 图纸尺寸

  (title_block ...)                   ; 标题栏



  (layers ...)                        ; 层定义



  (setup                              ; 设置

    (stackup ...)                     ; 层叠参数

    (pad_to_mask_clearance ...)       ; 设计规则

    (pcbplotparams ...)               ; 输出参数

  )



  ; 278个网络定义

  (net 0 "")                          ; 无网络

  (net 1 "/ALLPST")                   ; 信号网络

  (net 91 "GND")                      ; 地

  (net 104 "+3.3V")                   ; 电源

  ...



  ; 160个封装

  (footprint "..."                    ; 封装1

    (at ...)                          ; 位置

    (property "Reference" ...)        ; 位号

    (property "Value" ...)            ; 值

    (pad "1" ...)                     ; 焊盘1

    (pad "2" ...)                     ; 焊盘2

    ...

    (fp_line ...)                     ; 丝印

    (fp_circle ...)                   ; 丝印圆

  )

  (footprint "..." ...)               ; 封装2

  ...



  ; 图形对象

  (gr_text "MOD0" ...)                ; 文字

  (gr_line ...)                       ; 线条



  ; 3个区域(铜皮)

  (zone ...)                          ; GND平面

  (zone ...)                          ; 其他平面



  (embedded_fonts no)                 ; 嵌入字体

)                                    ; 文件结束


12. 坐标系统

KiCad使用毫米作为基本单位:


(at 172.339 100.33)     ; X=172.339mm, Y=100.33mm

(at 108.9 98.5 0)       ; X=108.9mm, Y=98.5mm, 旋转=0度

特点:

  • 原点(0,0)通常在左下角

  • X轴向右为正

  • Y轴向上为正

  • 旋转角度:逆时针为正

内部单位:

  • KiCad内部使用纳米(nm)作为计算单位

  • 文件中显示毫米(mm)是为了可读性

  • 1 mm = 1,000,000 nm


13. UUID (通用唯一标识符)

每个对象都有UUID:


(uuid "00000000-0000-0000-0000-000053d8dc13")

作用:

  • 唯一标识每个对象

  • 用于版本控制和同步

  • 格式: 8-4-4-4-12 (标准UUID格式)

本例中的UUID:

  • 每个封装有UUID

  • 每个焊盘有UUID

  • 每个图形对象有UUID

  • 每个区域有UUID


14. 文件大小分析

为什么这个PCB文件这么大(2.2 MB)?

主要原因:filled_polygon 数据


(filled_polygon

    (layer "B.Cu")

    (pts

        (xy 107.534601 111.826185)

        (xy 107.555243 111.842819)

        (xy 110.173343 114.460919)

        ...

    )

)

原因:

  1. KiCad存储了铜皮填充的实际多边形顶点

  2. 需要避让160个封装的所有焊盘

  3. 生成了数千个顶点来精确描述填充区域

  4. 每个顶点有6位小数精度

对比:

  • 如果只存储 polygon(边界),文件会很小

  • 但每次打开都需要重新计算填充

  • 存储填充后的结果可以加快加载速度


15. 与路由工具的关系

15.1 路由工具需要的信息

从本PCB文件,路由工具可以获得:

  1. 网络信息 - 哪些焊盘需要连接

    
    (net 104 "+3.3V")
    
    (pad ... (net 104 "+3.3V") ...)
    
    
  2. 焊盘位置 - 起点、终点坐标

    
    (pad "1" ... (at 172.339 100.33) ...)
    
    
  3. 障碍物 - 需要避开的对象

    • 所有封装的焊盘

    • 已有的走线

    • 板边 (Edge.Cuts)

  4. 布线层 - 可以使用的层

    
    (0 "F.Cu" signal)
    
    (4 "In1.Cu" signal)
    
    (2 "B.Cu" signal)
    
    
  5. 设计规则 - 约束条件

    
    (pad_to_mask_clearance 0)
    
    

15.2 路由工具的输出

运行路由工具后,文件将添加:


    (segment

        (start 172.339 100.33)

        (end 175.5 100.33)

        (width 0.25)

        (layer "F.Cu")

        (net 104)

        (tstamp 12345678)

    )

    (via

        (at 175.5 100.33)

        (size 0.6)

        (drill 0.3)

        (layers "F.Cu" "B.Cu")

        (net 104)

        (remove_unused_layers no)

        (tstamp 12345679)

    )

    (segment

        (start 175.5 100.33)

        (end 180.2 105.5)

        (width 0.25)

        (layer "B.Cu")

        (net 104)

        (tstamp 12345680)

    )

segment (走线) 参数:

  • start, end - 起点、终点

  • width - 线宽

  • layer - 所在层

  • net - 网络ID

  • tstamp - 时间戳(唯一标识)

via (过孔) 参数:

  • at - 位置

  • size - 外径

  • drill - 钻孔直径

  • layers - 连接的层

  • net - 网络ID


16. 关键概念总结

| 概念 | 文件中的表示 | 用途 |

|------|-------------|------|

| 网络 | (net ID "名称") | 定义电气连接关系 |

| 封装 | (footprint ...) | 物理元件实例 |

| 焊盘 | (pad ...) | 电气连接点 |

| 层 | (layer ID "名称" type) | 物理铜层 |

| 走线 | (segment ...) | 电气连接路径 |

| 过孔 | (via ...) | 层间连接 |

| 区域 | (zone ...) | 大面积铜皮 |

| 坐标 | (x y rotation) | 位置和角度 |

| UUID | (uuid "...") | 唯一标识符 |


17. 实用技巧

17.1 读取PCB文件的Python代码


import re



def read_pcb_nets(filename):

    """读取所有网络定义"""

    with open(filename, 'r', encoding='utf-8') as f:

        content = f.read()



    # 匹配 (net ID "name")

    pattern = r'\(net\s+(\d+)\s+"([^"]+)"'

    nets = {}

    for match in re.finditer(pattern, content):

        net_id, net_name = match.groups()

        nets[int(net_id)] = net_name



    return nets



# 使用

nets = read_pcb_nets('kit-dev-coldfire-xilinx_5213.kicad_pcb')

print(f"Total nets: {len(nets)}")

print(f"Net 91 (GND): {nets[91]}")

print(f"Net 104 (+3.3V): {nets[104]}")

17.2 查找特定网络的所有焊盘


def find_pads_by_net(filename, net_id):

    """查找特定网络的所有焊盘"""

    with open(filename, 'r', encoding='utf-8') as f:

        content = f.read()



    # 查找包含指定net的pad

    pattern = rf'\(pad\s+"([^"]+)"[^(]*\(net\s+{net_id}\s+"([^"]+)"[^(]*\)'

    pads = []

    for match in re.finditer(pattern, content, re.MULTILINE | re.DOTALL):

        pad_name, net_name = match.groups()

        pads.append((pad_name, net_name))



    return pads



# 使用

gnd_pads = find_pads_by_net('kit-dev-coldfire-xilinx_5213.kicad_pcb', 91)

print(f"GND pads found: {len(gnd_pads)}")

17.3 提取封装列表


def extract_footprints(filename):

    """提取所有封装信息"""

    with open(filename, 'r', encoding='utf-8') as f:

        content = f.read()



    footprints = []

    pattern = r'\(footprint\s+"([^"]+)"\s+\(layer\s+"([^"]+)"\)\s+\(uuid\s+"([^"]+)"\)\s+\(at\s+([\d.]+)\s+([\d.]+)'



    for match in re.finditer(pattern, content):

        fp_name, layer, uuid, x, y = match.groups()

        footprints.append({

            'name': fp_name,

            'layer': layer,

            'uuid': uuid,

            'x': float(x),

            'y': float(y)

        })



    return footprints



# 使用

footprints = extract_footprints('kit-dev-coldfire-xilinx_5213.kicad_pcb')

print(f"Total footprints: {len(footprints)}")

for fp in footprints[:5]:  # 打印前5个

    print(f"  {fp['name']} at ({fp['x']}, {fp['y']}) on {fp['layer']}")


18. 常见问题

Q1: 为什么这个PCB没有走线?

A: 这是一个典型的"布局完成但未布线"的PCB。设计者已经:

  1. 放置了所有元件

  2. 定义了网络连接关系

  3. 设置了层叠和设计规则

  4. 但还没有手动或自动布线

这种状态是自动布线工具的理想输入。

Q2: 网络ID和UUID有什么区别?

| | 网络ID (net) | UUID |

|—|-------------|------|

| 格式 | 数字 (如 91) | 8-4-4-4-12格式 |

| 作用 | 表示电气网络 | 唯一标识对象 |

| 范围 | 同一网络共享 | 全局唯一 |

| 用途 | 布线、连接 | 版本控制、同步 |

Q3: 如何识别差分对?

KiCad PCB文件中,差分对通过命名约定识别:


(net 10 "/USB_P")

(net 11 "/USB_N")

路由工具会查找 _P 和 _N 后缀的网络对。

Q4: 层ID为什么是0, 2, 4, 6而不是0, 1, 2, 3?

KiCad的层ID是历史遗留的:

  • 偶数ID: 铜层

  • 奇数ID: 配套层(如丝印、阻焊)

| ID | 层 |

|—|—|

| 0 | F.Cu |

| 1 | F.Mask |

| 2 | B.Cu |

| 3 | B.Mask |


19. 总结

通过分析 kit-dev-coldfire-xilinx_5213.kicad_pcb 文件,我们了解了:

  1. 文件格式 - KiCad使用S-expression(Lisp风格)的文本格式

  2. 基本结构 - header → general → layers → setup → nets → footprints → zones

  3. 关键数据 - 网络定义、封装、焊盘、层叠

  4. 坐标系 - 毫米单位,左下角原点

  5. 未布线状态 - 本例只有封装放置,无走线和过孔

  6. 路由输入 - 此文件是自动布线工具的完美输入

对于KiCad Routing Tools项目:

  • ✅ 此PCB文件可以立即用于测试路由工具

  • ✅ 包含160个封装,提供足够的复杂度

  • ✅ 有明确的网络定义

  • ✅ 4层板结构,可以测试多层路由

  • ✅ 包含3个区域(铜皮),可以测试避让算法


20. 参考资源

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐