通用印刷电路板全自动布线算法

前言

在电子设计的世界里,布线是一个技术含量极高、又极其耗时的环节。手动布线往往意味着一场与信号完整性、电磁兼容、走线长度和空间利用率之间的博弈。PCB自动布线器(Auto Router)是一种用于在印刷电路板(PCB)设计中自动完成连线的算法系统。它接收已经完成元件布局的PCB设计文件,依据设定的规则与约束,自动为所有网络寻找最优连接路径,从而大幅减少手动布线的工作量。

其背后的核心技术来自于图论 + 搜索算法,其中常见的问题及解决方案如下:

  • 多端网络连通问题:使用最小生成树和Steiner Tree来进行拆解
  • 求布线路径:A*等图搜索算法
  • 不同网络布线的冲突问题:分层布线和拆线重布策略
    此外,还有版图建模、算法效率等问题要进行处理。

各布线工具效果对比

如下图,以一个经过预布局的2层板微型控制器为例,其中包含多种不同的电子器件, 例如电源接口、芯片阵列以及通孔连接器,接近上百个待布线网络。下图是FreeRouting、学术界参考、Electra等布线器的效果对比:

个人工作进展

搜集的PCB数据集

pcb数据集

通用自动布线器(开发中)

  • 通用dsn布线格式的解析器
    负责将布线版图转为json格式和对象树,并进行可视化方便后续算法的调用。
  • 基于Qt的PCB布线器
    qt桌面端
  • 基于Web的PCB布线器
    web端

已有的算法效果

alt text

正在学习的算法

拓扑布线,灵活的交路和弧形布线特点可以实现一些主流布线器无法实现的效果,这里是一些启发图:

总结与反思

当前的工作基于 C++/Qt / Python/web等技术,研发一个支持整板高密度布线的自主布线器,作为课题来支撑硕士毕业,或许工程上暂时不及成熟的布线工具,但也希望从过程中学习或掌握一些不一样的东西,在想法和思路上有一些特别之处。
从各工具布线效果可见自动布线 ≠ 取代人工,尤其是在高速、高密度的板卡设计中,自动布线往往可以先跑一个“粗布”,再由资深工程师精调,这种人机协同的设计方式已经逐渐成为主流。实际应用中,布线器往往将差分线、等长线等功能单独做成模块,而不是寻求理想----整板的自动布线,来解放重复劳动。
未来的研究方向希望能结合人工智能、机器学习等技术实现算法组件的智能优化调度,提升布线效率,降低人工成本。