发表于 2025-2-8 11:08:00

KiCad 9 探秘(六):如何用"器件类"玩转多通道设计与自定义DRC规则

“ 老版本的 KiCad 只有网络类(Net Class),但没有器件类(Component Class),在 KiCad 9 中器件类终于亮相了。结合规则区域,器件类可以在多通道设计及自定义规则中发挥重要的作用。 ”




什么是器件类(Component Class)?器件类本质上是元器件的分组工具。当您在原理图中为符号指定某个器件类后,对应 PCB 中的封装也会自动继承该分类。这种双向绑定特性让它成为:
[*]多通道设计的黄金搭档:快速建立信号通道模板
[*]自定义 DRC 规则的好帮手:批量设置间距/布线规则
[*]元器件管理工具:可视化分类管理复杂设计
如何分配器件类?有两种方法为器件指定“器件类”:
方法1:在符号内添加“器件类”字段
在原理图符号属性中添加"Component Class"字段,输入类名即可完成绑定。

如上图所示,为选中的符号中添加了一个“resistor”器件类。可以为更多的符号添加“Component Class”字段,只有数值相同,这些符号都被认为属于同一“器件类”。就像给元器件贴上电子标签,后续在PCB布局时,相关封装自动归类。
方法2:规则区域+指令标签KiCad 9 在原理图中增加了规则区域(rule area)以及指令标签(Directives)的支持。可以在放置菜单中找到以下命令:

首先点击“绘制规则区域”,绘制一个封闭的图形,将需要设置规则的对象包含在内。如下图所示,绘制了一个矩形的规则区域,将7805电路的所有对象包含在内。

点击“放置指令标签”,可以在弹出的对话框中设置标签的字段,可以是网络类,也可以是器件类。这里我们设置为“器件类”,并赋值为“Power”:

把指令标签放置于规则区域的边缘:

完成后区域中的所有器件都会成为“Power”器件类的成员。使用这种方式可以更方便高效地管理器件类,且更直观。
当从原理图同步到 PCB 时,所有这些器件的 Component Class 自动同步:

“器件类”在多通道设计中的应用除了可以对子图(Sheet)进行多通道设计,KiCad 9 新增的规则区域和 Component Class 还可以对原理图局部的内容进行多通道设计。这个方式比 AD 更灵活,更好用。我们来看下怎么实现。
我们随意在原理图中复制几个器件,当成 3 个通道:

点击 放置->规则区域:

为三个通道分别绘制三个规则区域:

点击 “放置指令标签”:

在 Component Class 这里给规则区域内的器件加一个类:

分别摆放到规则区域边缘:

现在可以同步到 PCB 了:


点击 工具->多通道->生成布置规则区,这次选择元件类:

确定后可以看到规则区域已经生成(红色细线):

打开规则区域的属性,是这个样子的:

随意的找个通道连几根线,在规则区域内增加一个圆形:

选中参考区域,点击 工具->多通道->复刻布局:

勾选目标规则区域后确认,效果如下图所示:
123/qakv1tjb2c464017406811.png
更多关于多通道设计的应用请参考:KiCad 9 探秘(二):多通道设计工具
“器件类”自定义 DRC 规则
增加了 Component Class 之后,自定义 DRC 规则增加了以下内容:[*]Footprint 封装属性增加了“Component_Class”:
[*]Component_Class 属性只属于封装本体,子对象(如焊盘)不继承该属性[*]若需判断某子对象(如焊盘、走线)是否属于特定组件类的封装,请使用:memberOfFootprint('${Class:x}') 函数(将x替换为目标器件类名,例如memberOfFootprint('Power'))[*]示例表达式:(condition "A.ComponentClass == 'CLASS_1,CLASS_2'")[*]表达式函数增加了“hasComponentClass('x')”:[*]当目标对象(仅限封装)的组件类集合中包含指定类名x时,返回true。仅封装对象拥有组件类属性,其他对象(如焊盘、走线等)调用此函数将始终返回false
若需检测非封装对象(如焊盘、走线、过孔等)是否属于某个特定组件类的封装,请使用memberOfFootprint()表达式函数。
示例表达式:(condition "A.hasComponentClass('CLASS_1')")
Component Class 可以在以下函数中使用('x'为器件类的值):
[*]insideCourtyard('x')
[*]insideFrontCourtyard('x')
[*]insideBackCourtyard('x')
[*]intersectsCourtyard('x')
[*]intersectsFrontCourtyard('x')
[*]intersectsBackCourtyard('x')
memberOfFootprint('x')
结束语
结合规则区域,器件类可以在多通道设计及自定义规则中发挥重要的作用。最后一个tip,在 KiCad 中,同一个器件可以属于不同的器件类,可以在规则区域中摆放多个指令标签的方式实现。

注意:如果想第一时间收到 KiCad 内容推送,请点击下方的名片,按关注,再设为星标。
常用合集汇总:
[*]和 Dr Peter 一起学 KiCad
KiCad 8 探秘合集
KiCad 使用经验分享KiCad 设计项目(Made with KiCad)常见问题与解决方法KiCad 开发笔记插件应用
发布记录
页: [1]
查看完整版本: KiCad 9 探秘(六):如何用"器件类"玩转多通道设计与自定义DRC规则