需求来源
一直以来用KiCAD都是使用软件自带的功能,包括PCB布线的约束,也是有什么就用什么,偶尔遇到有高级功能的需求,板子很简单也就是手工修改下凑合过去了。
这几天画块HDMI切换的小板子,发现要严格按阻抗来走线,器件连接和连接器的引脚的间距和走线宽度是没法同时满足的,尤其是差分对,电源,I2C几类线的线宽和间距以及铺铜间距都有不小的冲突,默认设置的线宽和间距约束在芯片上走线直接提示违规不让拉线。
自定义约束
不得不开始用自定义约束了,百度查了一下,居然有好心人把kicad的中文文档给搬回来了。
https://www.bookstack.cn/read/kicad-6.0-zh/spilt.8.382948efb0edfed0.md
其实自定义约束比较简单也比较好理解,最简单的如下
(version 1)
(rule "BGA neckdown"
(constraint track_width (min 10mil) (opt 10mil))
(constraint clearance (min 8mil) (opt 8mil))
(condition "A.insideCourtyard('U3')")
)
首先必须要有个version 1版本定义。
其次就是规则名称,约束条件,以及约束对象的指定。
详细的可以参考上面提到的文档。
踩的坑
上面的约束是因为我U3的引脚间距无论对默认规则还是其他网络规则来说,引脚太密都违规了,导致无法布线,于是正好抄了文档里的例子,但实际测试的时候发现无论如何都不生效,最后发现,规则用于电阻就生效,U3上不行,对比发现电阻有外框,kicad的PCB布线有层叫F.Courtyard,B.Courtyard,我用的这个封装根本没画这个外框,添加上F.Courtyard再应用这个规则就生效了。
就是下面这个紫色外框。
![](https://i-blog.csdnimg.cn/blog_migrate/7e689d191004a21d3fa998497deb4f25.png)