使用 Situs Topological Autorouter 实现电路板自动布局

在印制电路板(PCB)上布设连接是一项复杂且耗时的工作。 在大型或高密度的板子上,布线过程可能会占用设计人员大量时间,而自动布线器可以在这方面提供帮助。

Altium Designer 的 Situs™ 自动布线器采用拓扑分析技术来映射板上空间;与几何或基于形状的映射不同,拓扑映射不依赖于障碍物的形状或坐标。拓扑映射在确定走线路径时提供更高的灵活性,并且布线方向不受限制。

Situs 这一名称源自 Situs Analysis,它是数学的一个分支,研究几何图形或实体在尺寸或形状变化时通常不受影响的性质,如今通常称为拓扑学。

自动布线电路板

Situs 拓扑布线器为自动布线挑战带来了一种新方法。它首先使用先进的拓扑映射来定义布线路径,然后调用多种经过验证的布线算法,将这种“类人”的路径转换为高质量的走线。作为 PCB Editor 的组成部分,它会遵循 PCB 的电气规则与布线规则定义。

板级设置

虽然 Situs 的设置与运行都很直接,但要获得最佳布线效果,你需要注意以下几点。

元件摆放

归根结底,元件摆放对布线性能影响最大。Altium Designer 的 PCB Editor 包含多种工具(例如动态优化的连接线),可帮助你微调元件位置。理想的元件摆放状态是连接线尽可能短、且尽可能不“缠绕”。

其他良好的设计实践还包括:将元件放置为其焊盘位于规则网格上(以最大化焊盘之间可用于布线的空闲空间);在双面板上将尺寸相近的贴片元件在正反两面精确对置;以及参考器件厂商数据手册中的去耦电容摆放指南。这并非摆放注意事项的完整清单,只是一些建议。

禁布区(Keepout)

布线器需要一个由已放置的禁布对象构成的闭合边界。通常该边界沿着板边界。已放置的对象会遵循适用的间距规则,确保与该边界保持合适距离,以满足设计可能存在的机械或电气间隙要求。布线器也会遵循该外边界内的禁布区,以及特定层的禁布区。

你可以使用 Line/Arc Primitives from Board Shape dialog 创建一个沿板外形边缘的闭合边界。有关禁布区的更多信息,请参见 Object Specific Keepouts

多边形覆铜(Polygon Pours)

多边形(或铜皮)覆铜可以是实心的(由一个或多个铜区域填充),也可以是网格的(由走线与圆弧构成)。中到大型的网格覆铜会包含大量走线与圆弧。虽然布线器可以对包含此类覆铜的板子进行布线,但它们引入的对象数量巨大,会增加布线过程的复杂度。

通常只有在确有需要时才应在布线前放置覆铜,例如用于构建形状特殊的预布线区域,可能是市电输入走线或关键接地区域。否则,更推荐在布线完成后再将覆铜加入设计中。

是否可布线?

自动布线器是人类尝试理解并建模布线过程,然后将该过程自动化复现的结果。如果板上存在手工也无法布通的区域,那么自动布线同样无法完成。如果布线器在某个元件或某段区域持续失败,你应尝试交互式布线。可能存在摆放或规则配置问题,使得该处根本无法布线。

预布线

对关键网络先进行预布线;如果必须确保它们不被后续布线过程更改,请在 Situs Routing Strategies dialog 中启用 Lock All Pre-routes 选项将其锁定。但要避免不必要的锁定;大量锁定对象会使布线问题变得更困难。

差分对网络必须在使用自动布线器之前手动布线并锁定。如果不这样做,布线很可能会被更改,从而影响差分对的信号完整性。

配置设计规则

术语 default rule 用于描述查询范围为 All 的规则。

如果某条规则包含 Minimum、Preferred 和 Maximum 值,自动布线器将使用 Preferred 值。

请确保布线设计规则与所采用的板级工艺相匹配。定位不当或不合适的设计规则会导致自动布线性能很差。注意:布线器会遵循所有电气与布线设计规则,但不包括 Routing Corners 规则。

规则在 PCB Rules and Constraints Editor dialogDesign » Rules)中定义,可直接从 Situs Routing Strategies dialog 访问。

如果某条规则包含 Minimum、Preferred 和 Maximum 值,自动布线器将使用 Preferred 值。

Altium Designer 的规则系统是分层的。其思路是:先为所有对象建立一条默认规则,然后再添加额外规则,有选择地针对具有不同需求的对象。例如,你应为走线宽度建立一条覆盖板上最常用线宽的默认规则,然后再添加后续规则,有选择地针对其他网络、网络类等。

要检查规则是否命中了正确对象,可将该规则的 Query 复制到 PCB Filter panelApply 它。只有被该规则命中的对象才会通过过滤并保持全强度显示。或者,使用 PCB Rules And Violations panel 快速查看当前板上任意已定义规则的应用情况。

最重要的规则是 WidthClearance 规则。这些布线工艺设置决定了走线能被“压缩”到多紧。选择它们需要权衡——走线越宽、间距越大,板子越容易制造;走线越窄、间距越小,板子越容易布通。建议与你的制造商沟通,确定其在线宽与间距方面的“价格点”:低于这些值会导致更低的制造良率与更高的 PCB 成本。除满足设计的电气要求外,布线工艺也应与元件工艺相匹配,以确保每个引脚都能布通。

布线工艺中的第三条规则是 Routing Via Style。它也应与所用线宽与间距相匹配,同时考虑所选孔径与环宽(annular ring)带来的制造成本。

还应避免过多或不必要的规则——规则越多,处理时间越长,布线越慢。若自动布线不需要某些规则,可将其禁用。

走线宽度(Routing Width)

确保存在一条 Query 为 AllWidth rule(默认规则),并且 Preferred 设置适用于你最常用的走线宽度。确保该线宽与相应的间距规则组合后,能够让所有焊盘都可以被布线连接到。为需要更宽或更窄走线的网络配置额外的走线宽度规则。

如果存在细间距器件,其引脚所在网络需要更宽的走线宽度(例如电源网络),请从电源引脚试着引出走线,并同时引出其两侧相邻引脚的走线,以确认在物理上确实可布通这些引脚。

间距约束(Clearance Constraint)

检查是否存在特殊间距需求,例如细间距器件的焊盘间距小于板子的标准间距。可通过设置合适作用范围并具有更高优先级的设计规则来满足这些需求。注意:虽然你可以定义一条规则来命中某个封装(footprint),但它不会命中连接到该封装的走线。正如在“走线宽度”部分提到的,请通过试布线来确认器件引脚可布通。

过孔样式(Routing Via Style)

确保存在一条 Query 为 AllRouting Via Style rule,并且 preferred 设置合适。对于需要与默认规则不同过孔样式的网络,添加更高优先级的规则。

Altium Designer 支持盲孔与埋孔;是否使用由 Layer Stack ManagerDesign » Layer Stack Manager)中定义的 Via Types 所允许的层切换决定。与交互式布线类似,当自动布线器在两层之间切换时,会检查当前的 Via Type 定义——如果这两层被定义为盲/埋孔层对,则放置的过孔将以这两层作为起始层与终止层。理解使用盲/埋孔的限制非常重要;应仅在与制造商协商后使用。除了由叠层制造工艺带来的限制外,还需要考虑可靠性与测试可达性。有些设计人员认为,与其使用盲/埋孔,不如增加更多布线层。

布线层(Routing Layers)

确保存在一条 Query 为 AllRouting Layers rule。所有已启用的信号层(在层叠中定义)都会列出。按需启用允许布线的层。对于希望仅在特定层上布线的网络,添加更高优先级的规则。

如果你希望将某个网络(或某个网络类)排除在自动布线之外,请定义一条命中该网络或网络类的 Routing Layer 规则,并在该规则的 Constraints 区域中,确保对每个已启用的信号层都禁用 Allow Routing 选项。该规则的优先级必须高于默认规则(Query 为 All 的那条)。

层方向(Layer Directions)

首选布线方向在 Layer Directions 对话框中指定,该对话框可从 Situs Routing Strategies dialog 访问。所有已启用的信号层(在层叠中定义)都会列出。

请选择与连接线走向相匹配的层方向。Situs 使用拓扑映射来定义布线路径,因此并不受限于只能水平和垂直布线。通常,最佳做法是将外层设置为水平与垂直方向。不过,如果你有一块多层板,且存在大量以“2 点钟方向”角度走向的连接,那么可以将一个或多个内层设置为该角度作为首选布线方向。尤其是 Layer Patterns 这一轮(pass)会利用这些信息,选择正确的方向会在时间和质量两方面显著影响布线性能。注意:当你使用带角度的层时,不需要再配一个与该层成 90 度的“伙伴层”,因为路由器在带角度层上需要绕开障碍时,通常会改为水平或垂直布线。

避免使用 Any 方向——路由器选择在哪一层上为某条连接布线,是基于该连接与层方向的对齐程度,因此该层会变成“最后手段”的层。Any 方向通常只用于单面板。

Layer Directions 对话框
Layer Directions 对话框

布线优先级

使用 Routing Priority rules 为难布的网络,或你希望走线最干净的网络设置更高优先级。

SMD 扇出控制

查询系统包含专门针对不同贴片封装的关键字,包括 IsLCC(Leadless Chip Carrier)、IsSOIC(Small Outline IC)和 IsBGA(Ball Grid Array)。系统会为最常见的封装自动创建默认规则,并且由于扇出相关的 pass 会在自动布线流程早期运行,因此保留一些不适用于任何器件的规则几乎没有代价。如果板上有贴片器件,你应至少设置一条 SMD 扇出控制设计规则——一个面向所有贴片器件的单条规则的合适查询可以是 IsSMTComponent。要了解每个查询关键字如何识别器件封装,请打开 Query Helper,输入所需关键字并按 F1

扇出规则包含用于控制焊盘是向内扇入、向外扇出,或两者混合的设置。为了帮助熟悉 Fanout Control 规则属性的行为,可以对任何未分配网络的贴片器件运行 Route » Fanout » Component 命令。除了用它检查在当前板上所定义的布线工艺下器件扇出效果如何,你还可以用它将某个器件扇出后,作为“预扇出”的封装保存在库中。器件在 PCB 工作区扇出完成后,将器件以及扇出走线和过孔复制并粘贴到库中即可。

规则优先级

规则的先后顺序(优先级)由设计者定义。规则优先级用于在某个对象同时被多条规则覆盖时,决定应用哪一条规则。如果优先级设置不正确,你可能会发现某条规则根本没有被应用。

例如,如果查询为 InNet('VCC') 的规则优先级低于查询为 All 的规则,那么 All 规则将应用到 VCC 网络。使用 PCB Rules and Constraints Editor dialog 中的 Priorities 按钮进入 Edit Rule Priorities dialog,即可按需细化优先级。注意:当两条规则的作用范围不重叠(不针对同一对象)时,优先级并不重要。例如,下列两条规则范围谁的优先级更高都无所谓——InNet('VCC')InNet('GND')

黄金法则

最重要的一步是在启动自动布线器之前执行设计规则检查(DRC)。当使用 Route » Auto Route » SetupRoute » Auto Route » All 命令时,Situs 会进行自身的预布线分析,并在 Situs Routing Strategies dialog 中以报告形式呈现结果。 在该对话框中,你可以检查设计报告并选择布线时要使用的策略。布线策略是路由器的“智能”,用于定义在何时使用哪些布线算法,从而将拓扑图中识别出的“虚拟”布线路径转化为板上高质量、高效率的真实走线。

在启动自动布线器之前,务必确保 Routing Setup Report 干净无误。在启动自动布线器之前,务必确保 Routing Setup Report 干净无误。

报告提供的信息包括:

  • 当前为该设计定义、且自动布线器将遵循的设计规则(以及每条规则影响的设计对象数量——网络、器件、焊盘)
  • 为所有信号布线层定义的布线方向
  • 钻孔层对(drill layer pair)定义

报告会列出可能影响路由器性能的潜在问题。在可能的情况下,还会提供提示,以便建议如何更好地为自动布线准备设计。在继续布线之前,应仔细检查列出的任何错误/警告/提示,并在需要时调整相应的布线规则。

检查所有错误、警告和提示,以了解自动布线器将面临的潜在问题。检查所有错误、警告和提示,以了解自动布线器将面临的潜在问题。

在启动自动布线器之前,必须解决所有与布线相关的规则违例。违例不仅会阻止在违例位置布线,还会因为路由器不断尝试对不可布线区域进行布线而显著拖慢速度。

运行 Situs AutoRouter 的注意事项

  • Autorouter 命令位于 Route » Auto Route 子菜单中。
  • Route » Auto Route » AllRoute » Auto Route » Setup 两个命令都会打开 Situs Routing Strategies dialog,区别在于当你选择 All 时,对话框中会包含一个 Route All 按钮。
  • 不要害怕尝试。如果结果不可接受,就做一些改变来调整路由器的处理方式:添加中间的清理与拉直 pass、在密集区域周围腾出更多空间,或更改层方向。
  • 在你尝试路由器的过程中——创建自己的策略以控制各个 pass 的顺序、通过 Via control 改变过孔数量、改变布线层方向、将路由器限制为仅正交走线等——请记录你尝试过的组合。这样你就能识别并复用最适合你设计的配置。
  • 先单独运行扇出相关的 pass 并评估质量。你可能需要对问题区域进行手动扇出。
  • 使用 Route » Auto Route 子菜单中的以下命令执行特定的自动布线操作:

    • Net - 为指定网络中的所有连接布线。启动命令后,自动布线器将初始化,光标会变为十字准星。将光标放在你希望布线的该网络中的任意连接线(或焊盘)上,然后单击或按 Enter。自动布线器将使用 Main 布线策略尝试对该网络中的所有连接进行自动布线。
    • Net Class - 为指定网络类(net class)中的所有连接布线。启动命令后,将打开 Choose Net Classes to Route 对话框。选择一个或多个你希望使用自动布线器布线的网络类,然后单击 OK——自动布线器将使用 Main 布线策略尝试对所选网络类中所有网络的全部连接进行自动布线。

      Choose Net Class to Route 对话框
      Choose Net Class to Route 对话框

    • Connection - 在当前设计中对某一条特定的焊盘到焊盘连接进行布线。
    • Area - 为完全包含在指定区域内(起点和终点都在区域内)的所有连接布线。启动命令后,自动布线器将初始化,光标会变为十字准星。定位光标后单击以锚定布线区域的第一个角点。移动光标以调整布线区域大小,然后单击以锚定第二个角点。自动布线器将使用 Main 布线策略尝试对在该指定区域内起止的所有连接进行自动布线。
    • Room - 为完全位于所选 room 边界内的所有连接布线。启动命令后,自动布线器将初始化,光标会变为十字准星。将光标放在你希望布线的 room 上,然后单击或按 Enter。自动布线器将使用 Main 布线策略尝试对完全位于该 room 边界内的所有连接进行自动布线。

      要对光标所在房间边界内完全包含的所有连接进行布线,可以在房间上单击右键,并从快捷菜单中选择 Room Actions » Autoroute Room  命令。启动该命令后,自动布线器将尝试使用 Main 布线策略,对完全位于房间边界内的所有连接进行自动布线。

    • Component - 对指定元件焊盘引出的所有连接进行布线。启动该命令后,自动布线器将初始化,光标将变为十字准星。将光标移到要布线的元件上,然后单击或按下 Enter。自动布线器将尝试使用 Main 布线策略,对所选元件焊盘引出的所有连接进行自动布线,并在每条连接上布到遇到的下一个焊盘为止。

      要对光标所在元件焊盘引出的所有连接进行布线,可以在该元件上单击右键,并从快捷菜单中选择 Component Actions » Autoroute Component  命令。

    • Component Class - 对指定元件类(一个或多个)中元件焊盘引出的所有连接进行布线。启动该命令后,将打开 Choose Component Classes to Route 对话框。选择一个或多个希望使用自动布线器进行布线的元件类,指定 Connections Routing Mode ,然后单击 OK ——自动布线器将尝试使用 Main 布线策略,对所选元件类中所有元件焊盘引出的全部连接进行自动布线。

      Choose Component Class to Route 对话框
      Choose Component Class to Route 对话框

    • Connections On Selected Components - 对设计空间中当前选中元件的焊盘引出的所有连接进行布线。启动该命令后,自动布线器将尝试使用 Main 布线策略,对所选元件焊盘引出的所有连接进行自动布线,并在每条连接上布到遇到的下一个焊盘为止。
    • Connections Between Selected Components - 对设计空间中当前选中元件之间的所有连接进行布线。启动该命令后,自动布线器将尝试使用 Main 布线策略,对所选元件焊盘之间的所有连接进行自动布线。
  • 使用 Route » Auto Route 子菜单中的以下命令来控制自动布线过程:
    • Stop - 在当前布线轮次完成后终止自动布线过程。自动布线器将停止,且不会再继续对电路板进行布线。板上已完成布线的连接将保持已布线状态。
    • Reset - 重置自动布线器——在自动布线器尝试布线之前初始化其所需的内存。它允许你在对整板布线时动态地有效修改现有布线策略,或切换到不同的布线策略。启动该命令后,将打开 Situs Routing Strategies 对话框。使用该对话框对当前布线策略(如可用)进行更改,或切换到另一种策略,然后单击 Route All 按钮。自动布线器将基于修改后的/不同的策略进行布线初始化。
    • Pause - 暂停当前自动布线操作。启动该命令后,自动布线器的进度将被临时停止。要继续运行,再次执行该命令(此时该命令将显示为 Route » Auto Route » Resume  命令)。

布线轮次与布线策略摘要

当前已定义的布线策略列在 Situs Routing Strategies 对话框的下方区域。单击 Add 按钮可访问 Situs Strategy Editor 对话框,在其中可以指定要包含在新策略中的布线轮次。或者,使用 Duplicate 按钮复制现有策略,然后按需编辑。不同布线轮次的包含与使用顺序构成了自动布线器的“智能”。这些轮次用于将拓扑图中识别出的虚拟布线路径转换为电路板上的高质量走线。

已定义的布线策略及其包含的各个布线轮次,仅在对整板布线时才会应用。

编辑复制策略的示例。
编辑复制策略的示例。

用户自定义策略可随时编辑,但默认策略——CleanupDefault 2 Layer BoardDefault 2 Layer With Edge ConnectorsDefault Multi Layer BoardGeneral OrthogonalVia Miser——不可修改。

以下为可用的布线 pass。这些 pass 可按任意顺序使用;作为参考,可查看现有策略以了解 pass 的顺序。

Pass 功能
Adjacent Memory 连接级布线 pass。用于对相邻的同网络引脚进行扇出布线,采用简单的 U 形模式。
Clean Pad Entries 连接级布线 pass。它会从每个焊盘中心沿焊盘的长轴方向重新引出走线。如果存在焊盘 X 与 Y 尺寸不同的元件,务必在 Memory pass 之后始终加入一个 Clean Pad Entries pass。
Completion 连接级布线 pass。它本质上与 Main pass 相同,但采用不同的代价设置来解决冲突并完成困难连接。代价差异的示例包括:过孔更“便宜”,逆向走线更“昂贵”。
Fan Out Signal 元件级 pass,基于 Fanout Control 中定义的扇出设置。它会检查焊盘的排列模式,考虑间距、布线宽度和过孔样式,然后选择合适的扇出方式(同列、交错等)以满足设计规则中定义的要求。扇出仅到信号层。
Fan out to Plane 元件级 pass,基于 Fanout Control 中定义的扇出设置。它会检查焊盘的排列模式,考虑间距、布线宽度和过孔样式,然后选择合适的扇出方式(同列、交错等)以满足设计规则中定义的要求。扇出仅到内部平面层。
Globally Optimized Main 连接级布线 pass。它提供最优布线。第一次迭代会忽略争用/违规,然后在提高冲突代价的情况下反复重布连接,直到不再有违规为止。此 pass 与启用 Orthogonal 选项配合使用时,可生成较为美观的布线模式。可在策略中添加一个 Recorner pass 以提供斜切拐角。
Hug 连接级布线 pass,会在尽可能小的间距下沿着现有走线重新布每条连接。Hug pass 用于最大化可用的自由布线空间。注意该 pass 非常慢。
Layer Patterns 连接级布线 pass。它只布线与某层走线方向(在一定容差内)匹配的连接。其代价设置倾向于贴近或跟随现有走线,以最大化自由空间。
Main 连接级布线 pass。它使用拓扑图寻找布线路径,然后使用 push and shove router 将建议路径转换为实际走线。一个布线策略中只应指定一个 main 类型的 pass——Main、Multilayer Main 或 Globally Optimized Main 之一。
Memory 连接级布线 pass。它检查同一层上、属于不同元件的两个引脚是否共享 X 或 Y 坐标。
Multilayer Main 连接级布线 pass。它类似于 Main pass,但代价针对多层板进行了优化。
Recorner 连接级布线 pass,用于对已布走线的拐角进行斜切处理。该 pass 在策略启用 Orthogonal 选项时使用——本质上会覆盖该选项并对每条走线的拐角进行斜切。如果所用策略禁用了 Orthogonal 选项,则无需包含 Recorner pass,因为 autorouter 默认会对拐角进行斜切。
Spread 连接级布线 pass,会对每条连接重新布线,尝试分散走线以利用空闲空间,并在走线穿过固定物体(如元件焊盘)之间时实现等间距。注意该 pass 非常慢。
拉直 一种连接级布线遍历,旨在减少拐角数量。其做法是沿着走线前进到某个拐角,然后从该拐角以(水平/垂直/45度向上/45度向下)方式进行探测,搜索该网络上另一个已布线的点。如果找到,则会检查这条新路径是否能缩短布线长度。

另请参阅

AI-LocalizedAI 翻译
如您发现任何问题,请选中相关文本/图片,并按 Ctrl + Enter 键向我们提交反馈。
功能可用性

您可使用的功能取决于您所选择的 Altium 解决方案 —— Altium DevelopAltium Agile(Agile Teams 或 Agile Enterprise 版本),或仍在有效订阅期内的 Altium Designer。

如果您在软件中未找到文中提及的功能,请联系 Altium 销售团队了解更多信息。

旧版文档

Altium Designer 文档不再提供版本区分。如果您需要访问 Altium Designer 旧版本的文档,请前往其他安装程序页面的旧版文档部分。

Content