如果你动手写过自动布线器,大概会先画一张方格纸。横平竖直,坐标好算,邻居好找——上下左右四个方向,简单直接。但有人偏偏不走这条路,他把方格换成了六边形。
这个人叫 James Bowman,他在自己的 PCB 布局程序 CuFlow 里写了一个自动布线器。程序一开始用的也是方方正正的网格,后来他换成了六边形网格,理由是:六边形更好用。
![]()
四个邻居和六个邻居,差在哪
先看方格网格。一个格子有四个邻居,距离相等,都是相邻边。如果你把斜对角也算作邻居,那就变成八个,但斜对角的距离和上下左右不一样,规则就不统一了。
六边形网格不一样。每个格子有六个邻居,而且六个邻居到它的距离完全相等。没有"正门"和"斜门"的区别,所有方向一视同仁。
这个差别听起来很小,落到布线密度上却很实在。邻居多,路径的选择就多;路径选择多,同样的空间里就能塞下更多走线。
为什么六边形更像圆
还有一个更直观的原因:六边形比正方形更接近圆形。
布线时有最小间距的规则,线不能挨得太近。用正方形网格,格子得留出足够大的尺寸来满足这个规则;换成六边形,因为形状本身更接近圆,同样的最小距离规则下,格子可以做得更小。
格子小了,单位面积里能容纳的格子就多了,自动布线器也就能在同样的板子上布下更多走线。这就是 James Bowman 说的"更密集的布线"。
他的布线器是怎么跑的
CuFlow 里的这个自动布线器,思路并不复杂。它把整块板子表示成一张由格子组成的网格,然后用 Lee 算法 在相连的格子之间寻找最短路径。
Lee 算法本身是成熟的寻路方法,难点不在算法,而在网格怎么设计。James Bowman 的调整就发生在这一步:把方格换成六边形,让每个格子的邻居从四个变成六个,且距离相等。
他没有推翻原来的框架,只是换了一种铺格子的方式,布线密度就上去了。
自己写布线器,门槛比想象中低
PCB 自动布线器的可靠性一直被人质疑,这一点没什么好回避的。但反过来看,它有一个对个人开发者友好的地方:不需要海量的训练数据。
这意味着一个下定决心的人,是有可能自己动手实现一个的。James Bowman 就是现成的例子——他在自己的布局程序里把它做了出来。
不过也要说清楚边界。如果开始涉及高速 PCB 布线,自己写自动布线器的难度会明显上升。日常的、不那么极端的场景,和高速场景,完全是两回事。
所以这个六边形网格的故事,价值不在于"六边形一定比正方形好",而在于一个具体的取舍:当你决定自己动手做一件事,很多默认选项其实是可以重新想的。方格不是天经地义,它只是最顺手的那一个。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.