高级主题

配置和自定义

Pcbnew 有各种偏好设置,可以通过偏好设置对话框进行配置。与 KiCad 的所有部分一样,Pcbnew 的偏好设置存储在用户配置目录中,并且在 KiCad 次要版本之间相互独立,从而允许多个版本与独立的偏好设置并行运行。

偏好设置对话框的第一部分 (通用、鼠标和触摸板以及快捷键) 在所有 KiCad 程序之间共享。KiCad 手册中“通用偏好设置”部分详细介绍了这些部分。请注意,尽管快捷键部分在所有程序之间共享,但有许多特定于 Pcbnew 的快捷键只有在 Pcbnew 运行时才会出现在列表中。

显示选项

pcbnew preferences display

渲染引擎: 控制是否使用硬件加速图形或软件加速图形。

网格样式: 控制如何绘制路线网格。

网格厚度: 控制网格线或网格点的粗细。

最小网格间距: 控制两条网格线之间的最小距离 (以像素为单位)。无论当前的栅格设置如何,都不会绘制违反此最小间距的栅格线。

捕捉到网格: 控制何时将绘制和编辑操作捕捉到活动网格上的坐标。 “始终”将启用对齐,即使网格处于隐藏状态; “当网格显示时”将仅在网格可见时启用对齐。

按住 Ctrl 可以暂时禁用网格捕捉。

光标形状: 控制编辑光标是绘制为小十字准线还是全屏十字准线 (覆盖整个绘图画布的一组线)。 编辑光标显示下一个绘图或编辑操作将发生的位置,如果启用了捕捉,则会捕捉到栅格位置。

始终显示十字准线: 控制是始终显示编辑光标, 还是仅在编辑或绘图工具处于活动状态时才显示编辑光标。

网络名称: 控制是否在铜对象上绘制网络名称标签。 这些标签仅作为编辑指南,不会出现在制造输出中。

显示焊盘编号:控制是否在封装焊盘上绘制焊盘编号标签。

显示焊盘 <无网络> 指示器: 控制是否用特殊标记指示没有 网络的焊盘。

布线间隙: 控制是否显示布线和过孔周围的间隙轮廓。 间隙轮廓显示为对象周围的细长形状,表示与其他对象之间的最小间隙, 如约束和设计规则所定义。

显示焊盘间隙: 控制是否显示焊盘周围的间隙轮廓。

交叉探测项的居中视图: 当 Eesschema 和 Pcbnew 都在运行时, 控制点击 Eesschema 中的元件或引脚是否会使 Pcbnew 视图在相应的封装或焊盘上居中。

缩放以适合交叉探测项: 控制是否缩放视图以显示交叉探测 封装或焊盘。

高亮显示交叉探测网络: 控制当在两个工具中激活高亮显示工具时, 是否在 Pcbnew 中高亮显示 Eesschema 中高亮显示的网络。

编辑选项

pcbnew preferences editing

翻转电路板项目 L/R: 控制在顶层和底层之间移动电路板项目时翻转的方向。 选中时,项目从左向右翻转(围绕垂直轴); 取消选中时,项目从上向下翻转(围绕水平轴)。

旋转命令的步长: 控制每次使用旋转命令时选定对象将旋转多远。

允许自由焊盘: 控制封装焊盘是否可以解锁并与封装分开编辑或移动。

吸附点: 此部分控制对象捕捉,也称为吸附点。启用时,对象捕捉优先于栅格捕捉。 对象捕捉仅适用于活动图层上的对象。 按住 Shift 可暂时关闭对象捕捉。

捕捉焊盘: 控制编辑光标何时捕捉焊盘原点。

捕捉到布线: 控制编辑光标何时捕捉到布线端点。

对齐图形: 控制编辑光标何时对齐图形形状点。

始终显示选定的飞线:启用后,即使全局飞线被隐藏, 选定封装外形的飞线也将始终显示。

用曲线显示飞线:控制飞线是直线绘制还是曲线绘制。

鼠标拖动布线行为: 控制使用鼠标拖动布线段时将发生的操作:”移动” 将独立于任何其他布线段移动布线。 “拖动(45 度模式)” 将调用推挤式布线器拖动布线,遵守设计规则并保持其他布线段的连接。 “拖动(自由角度)” 将移动布线段最近的角点,高亮显示与其他对象的碰撞,但不会将其移开。

将图形线条限制为 H、V 和45度: 控制使用图形绘制工具绘制的布线是否可以采用任何角度。 请注意,这仅影响绘制新的布线:可以编辑布线以采用任何角度。

显示页面限制: 控制页面边界是否绘制为矩形。

覆铜属性后重新填充覆铜对话框: 控制编辑任何覆铜的属性后是否自动重新填充覆铜。 可以在复杂的设计或速度较慢的计算机上禁用此功能,以提高响应速度。

颜色

pcbnew preferences colors

Pcbnew 支持在不同的颜色主题之间切换,以符合您的喜好。Kicad 6.0 有两个内置的颜色主题:”KiCad 默认” 是一个新主题,设计用于大多数情况下具有良好的对比度和平衡度,并且是新安装的默认主题。”KiCad 经典版” 是 KiCad 5.1 及更早版本的默认主题。这两个内置主题都不能修改,但您可以创建新主题来自定义 Pcbnew 的外观,也可以安装其他用户制作的主题。

颜色主题存储在位于 KiCad 配置目录的 Colors 子目录中的 JSON 文件中。“打开主题文件夹”按钮将在您的系统文件管理器中打开此位置,使您可以轻松地管理已安装的主题。要安装新主题,请将其放在此文件夹中,然后重新启动 KiCad。如果文件是有效的颜色主题文件,则新主题将从颜色主题下拉列表中提供。

要创建一个新的颜色主题,从颜色主题的下拉列表中选择新主题…​。 为你的主题输入一个名称,然后开始编辑颜色。 新主题中的颜色将从你创建新主题之前选择的任何主题中复制。

要更改颜色,请双击或中键单击列表中的色样。“重置为默认值”按钮会将该颜色重置为“KiCad 默认”颜色主题中的相应条目。

颜色主题会自动保存;当您关闭偏好设置对话框时,所有更改都会立即反映出来。对话框右侧的窗口显示所选主题外观的预览。

操作插件

pcbnew preferences action plugins

KiCad PCB 编辑器支持用 Python 编写的插件,可以对正在编辑的电路板进行操作。 这些插件可以使用内置的插件和内容管理器来安装(详见 KiCad 章节),或者将插件文件放在用户的插件目录中。 详见下面的脚本部分。

每个被检测到的插件都会在这个偏好设置上显示一排。 插件可以在 PCB 编辑器的顶部工具栏上显示一个按钮。 如果一个插件的 “显示按钮” 控制没有被选中,它仍然可以从 “工具” > “外部插件” 菜单中访问。

列表底部的箭头控制允许改变插件在工具栏和菜单中的显示顺序。 文件夹按钮将启动一个文件资源管理器到插件文件夹,以使安装新的插件更容易。 刷新按钮将扫描插件文件夹中的任何新的或删除的插件,并更新列表。

原点和轴

pcbnew preferences origin axes

显示原点: 决定在编辑画布中坐标显示使用哪个坐标原点。 页面原点固定在页面的角落。 用户可以移动钻取/放置文件原点和栅格原点。

X 轴: 控制 X 坐标向右还是向左增加。

Y 轴: 控制 Y 坐标是向上还是向下增加。

自定义设计规则

KiCad 的自定义设计规则系统允许创建比电路板设置对话框的构造页面中提供的通用规则更具体的设计规则。自定义设计规则有很多应用,但通常它们用于将某些规则应用于电路板的一部分,例如特定的网络或网络类、特定的区域或特定的封装。

自定义设计规则存储在一个扩展名为 kicad_dra 的单独文件中。当您开始向项目添加自定义规则时,会自动创建此文件。如果您在项目中使用自定义规则,请在备份或提交到版本控制系统时,确保将 kicad_dra 文件与 kicad_pcbkicad_pro 文件一起保存。

kicad_dra 文件由 KiCad 自动管理,不应使用外部文本编辑器进行编辑。 始终使用电路板设置对话框的自定义规则页面编辑自定义设计规则。

自定义规则编辑器

自定义规则编辑器位于电路板设置对话框中,它提供了一个用于输入自定义规则的文本编辑器,一个语法检查器将测试你的自定义规则并指出任何错误,还有一个语法帮助对话框,其中包含了对自定义规则语言的快速参考和一些规则示例。

最好在编辑自定义规则后使用 检查规则语法 按钮,以确保没有语法错误。自定义规则中的任何错误都将阻止设计规则检查器运行。

自定义规则语法

自定义设计规则语言基于 s 表达式,允许您创建使用内置约束无法实现的设计约束。每条设计规则通常包含一个定义匹配哪些对象的 条件,以及一个定义要应用于匹配对象的规则的 约束

该语言使用圆括号 (()) 来定义相关标记和值的子句。括号必须始终匹配:对于每个 ( 必须有匹配的 )。在子句中,标记和值之间用空格分隔。按照惯例,使用单个空格,但是可以在标记之间使用任意数量的空格字符。在文本字符串有效的地方,没有任何空格的字符串可以用 "' 引起来,也可以不加引号。包含空格的字符串必须始终用引号引起来。在需要嵌套引号的地方,可以使用 " 作为外引号字符,使用 ' 作为内引号字符 (反之亦然),从而实现单层嵌套。换行符不是必需的,但为清楚起见,通常在示例中使用。

在下面的语法描述中,< 尖括号 > 中的项表示必须存在的标记,[ 方括号 ] 中的项表示可选或仅有时需要的标记。

自定义规则文件必须以定义规则语言的版本头开始。 从 KiCad 6.0 开始,版本是 1。 版本头的语法是 (version<number>)。因此,在 KiCad 6.0 中,标题应该是这样的:

  1. (version 1)

在版本标题之后,您可以输入任意数量的规则。规则以相反的顺序计算,这意味着首先检查文件中的最后一个规则。一旦找到正在测试的给定集合对象的匹配规则,将不再检查其他规则。实际上,这意味着更具体的规则应该在文件的后面,以便在评估更一般的规则之前对其进行评估。

例如,如果您创建一条规则来限制网络 HV 中的布线与任何其他网络中的布线之间的最小间距,以及第二条规则来限制特定规则区域内所有对象的最小间距,请确保第一条规则在自定义规则文件中的出现时间比第二条规则晚,否则,如果 HV 网络中的布线落在规则区域内,可能会有错误的间距。

每条规则必须有一个名称和一个或多个 约束 (constraint) 子句。该名称可以是任何字符串,用于在 DRC 报告中引用该规则。约束 (constraint) 定义了规则的行为。规则还可以有一个 条件 (condition) 子句,决定哪些对象应该应用该规则,以及一个可选的 层 (layer) 子句,指定该规则适用于哪些板层。

  1. (rule <name>
  2. [(layer <layer_name>)]
  3. [(condition <expression>)]
  4. (constraint <constraint_type> [constraint_arguments]))

定制规则文件还可以包括描述规则的注释。注释由任何以 # 字符开头的行表示 (不包括空格)。

  1. # Clearance for 400V nets to anything else
  2. # 400V 网络与任何其他网络之间的净空
  3. (rule HV
  4. (condition "A.NetClass == 'HV'")
  5. (constraint clearance (min 1.5mm))))
图层子句

层 (layer) 子句确定规则将对哪些层起作用。虽然对象层可以在下面介绍的 约束 (constraint) 子句中进行测试,但是使用 层 (layer) 子句效率更高。

层 (layer) 子句的值可以是任何线路板层名,也可以是与顶底铜层 ( F.CuB.Cu ) 匹配的快捷方式 外 (outer),以及与任何内部铜层匹配的快捷键 内 (inner)

如果省略 层 (layer) 子句,则该规则将适用于所有层。

下面是一些示例:

  1. # Do not allow footprints on back layer (no condition clause means this rule always applies)
  2. # 不允许在底层上留下封装 (无条件子句表示此规则始终适用)
  3. (rule "Top side footprints only"
  4. (layer B.Cu)
  5. (constraint disallow footprint))
  6. # This rule does the same thing, but is less efficient
  7. # 此规则执行相同的操作,但效率较低
  8. (rule "Top side footprints only"
  9. (condition "A.Layer == 'B.Cu'")
  10. (constraint disallow footprint))
  11. # Larger clearance on outer layers (inner layer clearance set by board minimum clearance)
  12. # 外层间隙较大 (内层间隙由电路板最小间隙设置)
  13. (rule "clearance_outer"
  14. (layer outer)
  15. (constraint clearance (min 0.25mm)))
条件子句

规则 条件 是一个包含在文本字符串中的表达式(因此通常用引号包围,以便允许留出空白,使之更清晰)。 该表达式是针对设计规则检查器正在测试的每一对对象进行评估的。 例如,当检查铜对象之间的间隙时,每个网络上的每个铜对象(布线段、焊盘、通孔等)都要与其他网络上的其他铜对象进行检查。 如果存在一个自定义规则,其表达式与两个给定的铜对象相匹配,并且约束条件定义了铜的间隙,那么这个自定义规则可以用来确定这两个对象之间所需的间隙。

被测对象在表达式语言中称为 AB。这两个对象的顺序并不重要,因为设计规则检查器将测试这两种可能的顺序。例如,您可以编写一条规则,假设 A 为布线,B 为过孔。 有一些表达式函数可以同时测试这两个对象;这些表达式函数使用 AB 作为对象名。

条件中的表达式必须解析为布尔值 ( 真 (truefalse )。如果表达式解析为 true,则规则应用于给定的对象。

每个被测对象都有可以比较的 属性,以及可以执行特定测试的 函数。属性和函数的使用语法分别为 <object>.<property><object>.<function>([arguments])。译者注: <对象>.<属性><对象>.<函数>([参数])

当您在文本编辑器 ( A.B.AB. ) 中键入 <对象 (object)>. 时,会出现一个自动完成列表。将打开包含所有可使用的对象属性的。

使用 布尔运算符 比较对象属性和函数,得到布尔表达式。布尔运算符基于 C/C++ 语法,并支持以下运算符:

==

等于

!=

不等于

>, >=

大于、大于或等于

<, <=

小于、小于或等于

&&

||

例如,A.NetClass == 'HV' 将适用于任何属于 “HV” 网类的对象,A.NetClass != B.NetClass 将适用于任何属于不同网类的对象。圆括号可以用来澄清复杂表达式中的操作顺序,但并不是必须的。

有些属性表示物理测量,比如尺寸、角度、长度、位置等等。 在这些属性上,单位后缀 可以在自定义规则语言中使用,以指定使用什么单位。 如果没有使用单位后缀,属性的内部表示将被使用(距离为纳米,大多数角度为度)。 支持以下后缀:

mm

毫米

mil, th

千分之一英寸 (mils)

in,

英寸

deg

rad

弧度

自定义设计规则中使用的单位独立于 PCB 编辑器中的显示单位。
约束

规则的 约束 子句定义了规则在条件匹配的对象上的行为。每个约束子句都有一个 约束类型 和一个或多个设置约束行为的参数。单个规则可以有多个约束子句,以便为符合相同规则条件的对象设置多个约束 (如 间隙 (clearance)布线宽度 (trace_width) )。

许多约束条件的参数指定了一个物理测量或数量。 这些约束条件支持最小值、最优值和最大值说明(缩写为 “min/opt/max”)。 最小最大 值用于设计规则检查:如果实际值小于约束条件中的最小值或大于最大值,将产生一个 DRC 错误。 最优 值仅用于某些约束,并通知 KiCad 默认使用的 “最优” 值。 例如,最优的 diff_pair_gap 是由布线器在放置新的差分对时使用的。 如果后来修改了差分对,使得差分对之间的间隙与最佳值不同,只要间隙在最小值和最大值之间(如果这些值被指定),就不会产生错误。 在所有接受最小/最大/最优值的情况下,可以指定任何或全部的最小值、最优值和最大值。

最小/最优/最大值被指定为 (min<value>), (opt<value>), 和 (max<value>)。例如,布线宽度约束可以写成 (constraint track_width (min 0.5mm) (opt 0.5mm) (max 1.0mm)),如果只约束最小宽度,可以简单写成 `(constraint track_width (min 0.5mm))。

约束类型参数类型描述

annular_width

min/opt/max

检查过孔环的宽度。

clearance

min

检查不同网络的铜对象之间的间隙。 KiCad 的设计规则系统目前不允许在同一网络上的对象之间限制间隙

要允许铜对象重叠 (碰撞),请创建 min 值小于零 (例如 -1 ) 的 clearance 约束。

courtyard_clearance

min

检查封装和外框之间的间距,如果有任何两个外框形状比 min 距离更近,则会生成错误。 如果封装没有外框形状,则此约束不会生成错误。

diff_pair_gap

min/opt/max

检查差分对中耦合布线之间的间隙。 耦合布线是彼此平行的区段。 不会在差分对的未耦合部分 (例如,元件的扇出) 上测试差分对间隙。

diff_pair_uncoupled

max

检查差分对布线从该对中的另一个极性布线解耦的距离 (例如,该对从一个元件散开,或变为解耦以绕过另一个对象 (如过孔) )。

disallow

布线 track
过孔 via
微孔 micro_via
埋孔 buried_via
焊盘 pad
敷铜 zone
文本 text
图形 graphic
通孔 hole
封装 footprint

指定一个或多个不允许的对象类型,用空格分隔。 例如,(constraint disallow track 约束不允许布线)(constraint disallow track via pad 约束不允许 布线 过孔 焊盘)。 如果此类型的对象与规则条件匹配,则会创建 DRC 错误。 此约束实质上与禁止规则区域相同,但可用于创建更具体的禁止限制。

edge_clearance

min/opt/max

检查 Edge.Cuts 层上的对象和图形项目之间的间距 (线路板轮廓, 以及在该层上定义的任何线路板切割或插槽)。

length

min/max

检查符合规则条件的网络的总布线长度,并为小于约束的 min 值 (如果指定) 或大于约束的 max 值 (如果指定) 的每个网络生成错误。

hole

min/max

检查焊盘或过孔中钻孔的大小 (直径)。 对于椭圆形通孔,较小的 (小) 直径将对照 min 值 (如果指定) 进行测试, 较大的 (大) 直径将对照 max 值 (如果指定) 进行测试。

hole_clearance

min

检查焊盘或过孔中的钻孔与不同网络上的铜对象之间的间隙。 间隙是从孔的直径测量的,而不是从孔的中心测量的。

hole_to_hole

min

检查焊盘和通孔中机械钻孔之间的间隙。 间隙是在孔的直径之间测量的,而不是在它们的中心之间测量的。 HDI 孔 (微孔、盲孔和埋孔) 不受此约束的测试。

silk_clearance

min/opt/max

检查丝网网层上的对象与其他对象之间的间隙。

skew

max

检查符合规则条件的网络的总偏差,即每个网络的长度与规则匹配的每个网络 的所有长度的平均值之间的差。如果该平均值与任何一个网络的长度之间 的差值高于约束 max 值,则会产生一个错误。

track_width

min/opt/max

检查布线和弧段的宽度。宽度小于 min 值 (如果指定) 或大于 max 值 (如果指定) 的每个段都会产生错误。

via_count

max

统计与规则条件匹配的每个网络上的过孔数量。 如果该数字超过任何匹配网络上的约束 max 值,则该网络将产生错误。

对象属性和函数参考

可以在自定义规则表达式中测试以下属性:

常见属性

这些属性适用于所有 PCB 对象。

属性数据类型描述

Layer

string

对象所在的板层。对于存在于多个层上的对象, 该属性将返回第一层 (例如,对于大多数通孔焊盘/通孔,返回 F.Cu )。

Locked

boolean

如果对象已锁定,则为 True。

Parent

string

返回此对象的父对象的唯一标识符。

Position_X

dimension

对象原点在 X 轴上的位置。请注意,对象的原点并不总是与对象边界框的中心相同。 例如,封装的原点是封装编辑器中该封装的 (0, 0) 坐标的位置, 但是封装的设计可能使此位置不在外框形状的中心。

Position_Y

dimension

对象原点在 Y 轴上的位置。请注意,KiCad 始终在内部使用从屏幕顶部到底部递增的 Y 坐标, 即使您已将设置配置为显示从底部到顶部递增的 Y 坐标。

Type

string

“封装 (Footprint)”, “焊盘 (Pad)”, “图形形状 (Graphic Shape)”, “电路板文本 (Board Text)”, “封装文本 (Footprint Text)”, “敷铜 (Zone)”, “布线 (Track)”, “过孔 (Via)”, “敷铜 (Zone)”, 或 “组合 (Group)” 之一.

连接的对象属性

这些属性适用于可以分配网的铜对象(焊盘、过孔、覆铜、布线)。

属性数据类型描述

Net

integer

铜对象的网络码。

请注意,不能依赖网络码来保持不变:如果您需要在规则中引用特定的网络,请使用NetNameNet 可以用来比较两个性能更好的对象的网络, 例如 A.Net == B.NetA.NetName == B.NetName 快。

NetClass

string

铜对象的网络类的名称。

NetName

string

铜对象的网络名称。

封装属性
属性数据类型描述

Clearance_Override

dimension

为封装设置的铜间隙覆盖。

Orientation

double

封装的方向 (旋转) (单位:度)。

Reference

string

封装的位号。

Solderpaste_Margin_Override

dimension

为封装设置的焊膏边缘覆盖。

Solderpaste_Margin_Ratio_Override

dimension

为封装设置的焊膏余量比率覆盖。

Thermal_Relief_Gap

dimension

为封转设置的散热间隙。

Thermal_Relief_Width

dimension

为封装设置的散热连接宽度。

Value

string

封装的 “值” 字段的内容。

焊盘属性
属性数据类型描述

Clearance_Override

dimension

为焊盘设置的铜间隙覆盖。

Fabrication_Property

string

“无”、”BGA 焊盘”、”基准, 全局到电路板”、”基准, 本地到封装”、”测试点焊盘”、 “散热片焊盘”、”蜂窝状焊盘” 之一。

Hole_Size_X

dimension

焊盘在 X 轴上的通孔/槽的大小。

Hole_Size_Y

dimension

焊盘在 Y 轴上的通孔/槽的大小。

Orientation

double

焊盘的方向 (旋转) (单位:度)。

Pad_Number

string

焊盘的 “编号”,可以是字符串 (例如,BGA 中的 “A1”)。

Pad_To_Die_Length

dimension

焊盘的 “焊盘到芯片长度” 属性的值,它是在计算网络时添加到焊盘的网络的附加长度。

Pad_Type

string

“通孔”、”贴片”、”板边连接器” 或 “非导通孔,机械” 之一。

Pin_Name

string

焊盘的名称 (通常是原理图中相应接点的名称)。

Pin_Type

string

焊盘的电气类型 (通常取自原理图中相应的引脚)。 “输入”、”输出”、”双向”、”三态”、”无源”、”自由”、”未指定”、 “电源输入”、”电源输出”、”集电极开路”、”发射器开路” 或 “未连接” 之一。

Round_Radius_Ratio

double

对于圆形矩形焊盘,为半径与矩形大小的比率。

Shape

string

“圆形”、”矩形”、”椭圆形”、”梯形”、”圆角矩形”、”倒角矩形” 或 “自定义” 之一。

Size_X

dimension

焊盘在 X 轴上的大小。

Size_Y

dimension

焊盘在 Y 轴上的大小。

Soldermask_Margin_Override

dimension

为焊盘设置的阻焊边距覆盖。

Solderpaste_Margin_Override

dimension

为焊盘设置的焊膏边距覆盖。

Solderpaste_Margin_Ratio_Override

dimension

为焊盘设置的焊膏边距比率覆盖。

Thermal_Relief_Gap

dimension

为焊盘设置的散热间隙。

Thermal_Relief_Width

dimension

为焊盘设置的散热连接宽度。

布线和圆弧属性
属性数据类型描述

Origin_X

dimension

起点的 X 坐标。

Origin_Y

dimension

起点的 Y 坐标。

End_X

dimension

终点的 X 坐标。

End_Y

dimension

终点的 Y 坐标。

Width

dimension

布线或圆弧的宽度。

过孔属性
属性数据类型描述

Diameter

dimension

过孔焊盘的直径。

Drill

dimension

过孔成品通孔的直径。

Layer_Bottom

string

过孔压层中的最后一层。

Layer_Top

string

过孔压层中的第一层。

Via_Type

string

“通孔”、”盲孔/埋孔” 或 “微孔” 之一。

覆铜和规则区域属性

这些属性适用于铜区和非铜区,以及规则区(以前称为禁止布线区)。

属性数据类型描述

Clearance_Override

dimension

为覆铜设置的铜间隙覆盖。

Min_Width

dimension

覆铜中允许的填充区域的最小宽度。

Name

string

用户指定的名称 (默认情况下为空)。

Pad_Connections

string

“继承”、”无”、”焊盘散热孔”、”实心”、”导通的散热孔” 之一

Priority

int

覆铜的优先级别。

Thermal_Relief_Gap

dimension

为覆铜设置的散热间隙。

Thermal_Relief_Width

dimension

为覆铜设置的散热连接宽度。

图形形状属性

这些属性适用于图形线、圆弧、圆、矩形和多边形。

属性数据类型描述

End_X

dimension

终点的 X 坐标。

End_Y

dimension

终点的 Y 坐标。

Thickness

dimension

形状画笔的粗细。

文本属性

这些属性适用于文本对象(封装字段、自由文本标签等)。

属性数据类型描述

Bold

boolean

如果文本为粗体,则为 true

Height

dimension

字体中字符的高度。

Horizontal_Justification

string

水平文本对齐 (对齐):”向左对齐”、”居中对齐” 或 “向右对齐” 之一。

Italic

boolean

如果文本为斜体,则为 true

Mirrored

boolean

如果文本为镜像,则为 true

Text

string

文本对象的内容。

Thickness

dimension

字体笔划的粗细。

Width

dimension

字体中字符的宽度。

Vertical_Justification

string

垂直文本对齐方式:”向上对齐”、”居中对齐” 或 “向下对齐” 之一。

Visible

boolean

如果文本对象可见 (显示),则为 true

表达式函数

可以对自定义规则表达式中的对象调用以下函数:

函数对象描述

existsOnLayer(‘layerid’)

A or B

如果对象存在于给定的板层上,则返回 truelayer_id 是包含电路板层名称的字符串。

fromTo(‘x’, ‘y’)

A or B

如果对象存在于给定焊盘之间的铜层路径上,则返回 truexy 是设计中焊盘的全称,如 ‘R1-Pad1’

inDiffPair(‘x’)

A or B

如果对象是差分对的一部分,并且该对的基本名称与给定的参数 x 匹配,则返回 真。 例如,inDiffPair(‘USB‘) 返回 USB_PUSB_N 网络中对象的 true 可以作为通配符,所以 inDiffPair(‘USB‘) 匹配 USB1_PUSB1_N。 因此,在具有名为 USB_P 的网络但没有名为 USB_N 的网络的电路板上,该函数返回 false

insideArea(‘x’)

A or B

如果对象完全位于命名规则区域或覆铜内,则返回 true。 规则区域和覆铜名称可以在各自的属性对话框中设置。 请注意,如果布线段从规则区域的内部向外部交叉,则此函数将返回 false,因为该布线不完全在该区域内。 如果给定区域是填充铜区,则该函数测试给定对象是否在该区域的任何填充铜区内,而不是该对象是否在该区域的轮廓内。

insideCourtyard(‘x’)

insideFrontCourtyard(‘x’)

insideBackCourtyard(‘x’)

A or B

如果对象完全位于给定封装位号的外框内,则返回 true。 第一个变量检查顶层外框或底层外框,如果对象在其中任何一个内,则返回 true;第二个和第三个变量检查特定的外框。 可以在位号中使用 通配符: insideCourtyard(‘R‘) 将检查位号以 R 开头的所有封装位号。

isBlindBuriedVia()

A or B

如果对象是盲孔/埋孔,则返回 true

isCoupledDiffPair()

AB

如果正在测试的两个对象属于同一差分对,但极性相反,则返回 true。 例如,如果 A 在网络 USB+ 中,而 B 在网络 USB- 中,则返回 true

isMicroVia()

A or B

如果对象是微孔,则返回 true

isPlated()

A or B

如果对象是导通孔 (在焊盘或过孔中),则返回 true

memberOf(‘x’)

A or B

如果对象是命名组合 x 的成员,则返回 true

自定义设计规则示例

  1. (rule RF_width
  2. (layer outer)
  3. (condition "A.NetClass == 'RF'")
  4. (constraint track_width (min 0.35mm) (max 0.35mm)))
  5. (rule "BGA neckdown"
  6. (constraint track_width (min 0.2mm) (opt 0.25mm))
  7. (constraint clearance (min 0.05mm) (opt 0.08mm))
  8. (condition "A.insideCourtyard('U3')"))
  9. (rule "Distance between Vias of Different Nets"
  10. (constraint hole_to_hole (min 0.25mm))
  11. (condition "A.Type =='Via' && B.Type =='Via' && A.Net != B.Net"))
  12. (rule "Distance between test points"
  13. (constraint courtyard_clearance (min 1.5mm))
  14. (condition "A.Reference =='TP*' && B.Reference == 'TP*"))
  15. # This assumes that there is a cutout with 1mm thick lines
  16. # 这假设有一个带有 1mm 粗细的打断
  17. (rule "Clearance to cutout"
  18. (constraint clearance (min 0.8mm))
  19. (condition "A.Layer=='Edge.Cuts' && A.Thickness == 1.0mm"))
  20. (rule "Max Drill Hole Size Mechanical"
  21. (constraint hole (max 6.3mm))
  22. (condition "A.Pad_Type == 'NPTH, mechanical'"))
  23. (rule "Max Drill Hole Size PTH"
  24. (constraint hole (max 6.35mm))
  25. (condition "A.Pad_Type == 'Through-hole'"))
  26. # Specify an optimal gap for a particular differential pair
  27. # 指定特定差分对的最佳间隙
  28. (rule "Clock gap"
  29. (condition "A.inDiffPair('CLK') && AB.isCoupledDiffPair()")
  30. (constraint diff_pair_gap (opt 0.8mm)))
  31. # Specify a larger clearance between differential pairs and anything else
  32. # 指定差分对之间的较大间隙和任何其他间隙
  33. (rule "Differential pair clearance"
  34. (condition "A.inDiffPair('*') && !AB.isCoupledDiffPair()")
  35. (constraint clearance (min 1.5mm)))

脚本

脚本允许您使用 Python 语言自动执行 KiCad 中的任务。可以通过 Python “操作插件” 向 KiCad 添加功能,这些插件可以添加到顶部工具栏。也可以编写与 KiCad 文件交互的独立脚本,例如,从电路板文件自动生成制造输出。

本手册涵盖了一般脚本编写概念。希望编写或修改脚本的用户还应使用 https://docs.kicad.org/doxygen-python/namespaces.html 上的 Doxygen 文档。

KiCad 6 或更新版本需要 Python 3 来支持脚本。Python 2 已不再被支持。

Python 脚本位置

PCB 编辑器的插件脚本可以通过插件和内容管理器(PCM)自动安装,也可以通过手动将插件复制到一个文件夹中。 每个插件都应该在 plugins 文件夹内有自己的文件夹。 plugins 文件夹的位置默认为:

平台路径

Linx

~/.local/share/kicad/6.0/scripting/plugins

macOS

~/Documents/KiCad/6.0/scripting/plugins

Windows

%HOME%\Documents\KiCad\6.0\scripting\plugins

操作插件

TODO:编写本部分 (如何安装新的操作插件)

封装向导

封装向导是可以从封装编辑器访问的 Python 脚本的集合。 如果调用封装对话框,则选择一个给定的向导,该向导允许您查看渲染的封装,并且您可以编辑一些参数。

如果插件未正确分发到您的系统软件包,您可以在 KiCad 源代码树中的链接中找到最新版本:https://gitlab.com/kicad/code/kicad/tree/master/pcbnew/python/plugins\[gitlab\]。

使用脚本控制台

Pcbnew 附带一个内置的 Python 控制台,可用于检查电路板并与其交互。要启动控制台,请使用顶部工具栏中的 py script 图标。Pcbnew Python API 不会自动加载,需要在控制台输入 import pcbnew 即可加载。然后,命令 pcbnew.GetBoard() 将返回对 Pcbnew 中当前加载的电路板的引用,可以通过控制台查看和修改该电路板。

TODO:记录其他有用的 PyAlaMode 函数

编写外部脚本

TODO:写下这一节

编写操作插件

TODO:写下这一节