在设计中能够进行器件引脚互换(pin swap),会对布线挑战的复杂度产生巨大影响,并有助于降低PCB的层数(从而降低成本)。遗憾的是,布局工程师可能并不掌握足够的信息来智能地设置引脚互换参数,因为他们并不总能假设自己了解设计者的完整意图。理想情况下,负责原理图/设计录入的人也应参与设置引脚互换数据,以确保设计意图与约束被准确捕获。
与 Altium Designer 的交互式布线和 BGA 扇出布线能力协同工作的,是引脚、差分对以及器件分部(part)互换系统。该功能提供了传统引脚互换系统的全部优势,同时利用了 Altium Designer 对设计中网络分配的深度理解。在执行引脚互换操作时,Altium Designer 会分析分配给所选引脚的网络,并动态地重新分配该引脚及其连接铜皮上的网络。
这种级别的功能意味着:已部分布线的网络,以及复杂 BGA 器件中预先布好的多层扇出走线,都可以进行互换。差分对也可以互换,并可利用对 FPGA 上差分引脚对的认知。
在 PCB 层面,该系统包含一个强大的自动优化器,会利用这些信息动态重新分配网络以提升可布线性。例如,系统可以对多个器件执行重新连接(reconnect),这些器件可能已在多层上完成扇出布线。它会基于扇出走线层的匹配、最短曼哈顿布线距离,以及每层最少的交叉(crossover)数量来进行分配。
部分已布线网络互换功能与自动优化器的加入,使你能够采用分层且迭代的布线策略:先对器件进行扇出布线,然后布线到某个区域的边缘,最终再将这些区域连接起来。在任何时候,都可以重新运行自动互换器,基于部分已布线网络提供的最新信息进行再优化。
互换分为三类:
-
引脚互换
-
差分对互换
-
子分部(Sub-part)互换。
配置互换组
对于每一类互换,swap groups 用于规定在器件内部哪些可以互换、哪些不可以互换。以引脚互换为例,同一器件内共享相同 pin group 的引脚可以彼此互换。类似地,对于差分对互换和分部互换,决定差分对或子分部是否可互换的分别是 pair group 和 part group 的取值。器件的互换组在 Configure Pin Swapping 对话框中配置,如下图所示。可通过以下方式访问:
-
在 PCB 文档中,右键单击器件,然后选择 Component Actions » Configure Pin/Part Swapping。
-
在原理图文档中,右键单击器件,然后选择 Part Actions » Configure Pin Swapping。
-
在原理图文档中,单击 Configure Swapping Information In Components dialog (Tools » Configure Pin Swapping)底部的 Configure Component 按钮。
-
在 PCB 文档中,单击 Configure Swapping Information In Components dialog (Tools » Pin/Part Swapping » Configure)底部的 Configure Component 按钮。
-
在 Configure Swapping Information In Components 对话框中双击任意器件。
Options and Controls of the Configure Pin Swapping Dialog
引脚互换选项卡

Pin Swapping 选项卡
当器件引脚属于同一个 pin group. 时,该器件引脚即可与同一器件内的另一引脚互换。使用此对话框的该选项卡来查看并组织器件的引脚组。
-
Pin Status - 列出每个引脚的 Designator、Pin Name、 Net、Bus、Type 以及 Part No.。你可以将列标题拖放到 Drag a column header here to group by that column 区域,以按个人偏好或项目需求对数据进行分组。也可以通过拖动列标题来调整其水平顺序。
-
Swap Data - 列出每个待互换引脚的 Pin Group 信息。双击 Pin Group 列即可重命名该组。
右键菜单
-
Show/Hide Columns - 用于配置哪些列可见。
-
Assign Pin-Swap Groups By - 可通过 Designator、Pin Name、 Net、Bus、Type、Part No.、Part Mode、or Pin Group 自动分配引脚互换组。右键前先选择多个引脚,可同时为它们分配组。
-
Add To Pin-Swap Group - 用于创建新的或添加到现有的引脚互换组。新的引脚互换组会自动以数字命名(例如 1、2、3 等)。右键前先选择多个引脚,可一次添加多个引脚。
-
Remove From Pin-Swap Group - 用于将所选引脚从引脚互换组中移除。右键前先选择多个引脚,可一次移除多个引脚。
差分对互换选项卡

Differential Pair Swapping 选项卡
差分对的互换由差分对的 pair group 值控制。使用此对话框的该选项卡来查看并组织器件的差分对组。
-
Pin Status - 列出每个引脚的 Designator、Pin Name、 Net 以及 Type。你可以将列标题拖放到 Drag a column header here to group by that column 区域,以按个人偏好或项目需求对数据进行分组。也可以通过拖动列标题来调整其水平顺序。
-
Swap Data - 列出每个待互换差分对的 Pair Group 信息。双击 Pair Group 列即可重命名该组。
右键菜单
-
Show/Hide Columns - 用于配置哪些列可见。
-
Add To Pair-Swap Group - 用于创建新的或添加到现有的差分对互换组。新的差分对互换组会自动以数字命名(例如 1、2、3 等)。右键前先选择多个差分对,可一次添加多个差分对。
-
Remove From Pair-Swap Group - 用于将所选差分对从差分对互换组中移除。右键前先选择多个差分对,可一次移除多个差分对。
分部互换选项卡

Part Swapping 选项卡
器件的分部互换通过 part group 和 sequence ID 属性进行配置。sequence ID 属性用于确定可互换子分部之间引脚的等效关系。使用此对话框的该选项卡来查看并组织器件的分部组。
右键菜单
-
Add To Part-Swap Group - 用于创建新的或添加到现有的分部互换组。新的分部互换组会自动以数字命名(例如 1、2、3 等)。右键前先选择多个分部,可一次添加多个分部。
-
Remove From Part-Swap Group - 用于将所选分部从分部互换组中移除。右键前先选择多个分部,可一次移除多个分部。
-
Show/Hide Columns - 用于确定该对话框 Pin Swapping 选项卡中哪些列可见。
-
Assign/Remove Part Sequence Number - sequence ID 属性用于确定可互换子分部之间引脚的等效关系。创建新的或添加到现有的 sequence ID 组。右键前先选择多个分部,可同时向某个 sequence ID 添加/移除多个分部。新组会自动以数字命名(例如 1、2、3 等)。双击 Sequence ID 列即可重命名该组。
引脚组
当器件引脚属于同一个 pin group(具有相同的 pin group 值)时,该器件引脚即可与同一器件内的另一引脚互换。pin group 是器件中每个引脚的一个属性,其取值可以是任意字母数字字符串。整个器件的 pin groups 在 Configure Pin Swapping dialog 中设置。
包含一个双路 5 输入正 NOR 门器件的原理图。任一子分部的各输入引脚在逻辑上等效,是进行引脚互换的理想情况。
请看上图所示的原理图,其中包含 SNJ54S260 器件的两个 5 输入 NOR 门。由于 NOR 门的特性,INA0 到 INA4 的各网络可以彼此互换。同样,INB0 到 INB4 的各网络也可以互换,但 INAx 网络不能与 INBx 网络互换。
NOR 门的互换约束在 Configure Pin Swapping 对话框中定义。将 INAx 网络设置为互换组 1,将 INBx 网络设置为互换组 2,可确保系统只会以符合器件逻辑的方式执行互换。若某个引脚的 Pin Group 值留空,则表示该引脚不可用于互换。
分部组与序列 ID
元件由多个功能等效的子部件组成是很常见的。部件互换(Part swapping)允许将这些等效子部件的网络进行互换。再次考虑上图所示的元件。两个 NOR 门提供完全相同的功能,因此网络(INA0、INA1、INA2、INA3、INA4、OUTA)可以与网络(INB0、INB1、INB2、INB3、INB4、OUTB)互换。
元件的部件互换通过 part group 和 sequence ID 属性进行配置。这两个都是文本属性,可在 Configure Pin Swapping dialog 的 Part Swapping 选项卡中访问,如下所示。下图还显示了与上图所示元件对应的 part group 和 sequence ID 设置。part group 用于指示哪些子部件可以彼此互换。两个子部件可以互换,因此在下图中,它们的 part groups 被赋予相同的值 1。
sequence ID 属性用于确定可互换子部件之间引脚的等效关系。在 NOR 门示例中,重要的是在发生部件互换时,输入引脚不能与输出引脚互换。下图显示 sequence ID 的设置方式,使 OUTA 与 OUTB 互换、INA0 与 INB0 互换、INA1 与 INB1 互换,依此类推。
在 Configure Pin Swapping dialog 中为双路 5 输入 NOR 门元件设置部件互换组。
请注意,部件互换仅适用于按子部件方式设计的元件,因为它基于在两个子部件之间交换所有网络。
对组(Pair Groups)
差分对的互换由差分对的 pair group 值控制。pair group 属性可在 Configure Pin Swapping dialog 的 Differential Pair Swapping 选项卡中访问。Differential Pair Swapping 选项卡中有三种模式,可通过左下角的下拉菜单进行设置。
在 Configure Pin Swapping dialog 中设置对互换组(Pair Swap groups)。
控制在原理图上如何执行互换
在 PCB 编辑器中,引脚、差分对和部件互换是通过在元件焊盘及其对应铜箔上交换网络来完成的。当这些更改合并回原理图时,引脚互换有两种处理方式:要么在元件符号上交换引脚,要么交换连接到引脚的导线上的网络标号。每种方法都有其优缺点。
交换引脚在原理图上始终可行,但可能导致该元件符号实例不再与库中定义的符号一致。在这种情况下,该符号无法从库中更新,同时也意味着本设计中同一元件的其他实例将具有不同的引脚排列。因此,这种方法适用于简单元件,例如电阻阵列。
通过交换网络标号在原理图上执行互换,只有在连通性是通过网络标号建立、且引脚之间没有被硬连在一起时才可行。这种方法的优点是元件符号不会改变,并且之后仍可从库中更新。对于复杂元件(例如 FPGA),这是最佳选择,因为在符号上物理移动两个引脚可能会导致基于 I/O bank 的符号呈现不正确。
你可以在 Project Options - Options 对话框的 Allow Pin Swapping Using these Methods 区域中选择 Adding / Removing Net-Labels 或 Changing Schematic Pins 选项来决定如何执行互换,如下所示。
这些项目选项用于控制在原理图文档中如何更新引脚互换。
在 PCB 上启用引脚、差分对和部件互换
在 PCB 设计中是否允许互换引脚由 Pin Swapping 选项控制。该选项会在你执行交互式布线时可用。要检查并切换该选项,请选择 Route » Interactive Routing 命令,然后按 Tab 键暂停布线并打开 Properties 面板,在其中切换 Pin Swapping 选项(
)的状态。
在元件层级,某个 PCB 元件的互换选项在 Properties panel 中配置;当在设计空间中选中该元件时,该面板会显示其属性。相关选项可在 General 选项卡的 Swapping Options 区域中找到。
PCB 元件的互换选项也可以通过 Configure Swapping Information in Components 对话框来定义,该对话框会列出设计(或库)中使用的所有元件及其当前互换设置。从 PCB 编辑器打开时,该对话框会额外包含一列,用于启用/禁用板上每个元件的互换,称为 Enable in PCB。
Configure Swapping Information in Components 对话框可从原理图编辑器、原理图库编辑器和 PCB 编辑器中访问,方式如下:
-
Schematic Editor/Schematic Library Editor - 通过主菜单选择 Tools » Configure Pin Swapping 命令。
-
PCB Editor - 通过主菜单选择 Tools » Pin/Part Swapping » Configure 命令。
在元件内部设置引脚、差分对和部件互换所需的 swap group 属性存储在原理图元件中。不过,这些信息会在 PCB 编辑器中使用,并且每个 PCB 元件都有一个选项用于允许其引脚进行互换。因此,从 PCB 编辑器使用该对话框通常更方便。
使用 Configure Swapping Information in Components 对话框可以快速在多个元件之间定义互换。该对话框包含强大的右键菜单,可非常方便地将一个元件的设置快速复制到另一个元件,或一键启用/禁用多个元件。
Configure Swapping Information In Components 对话框。
Options and Controls of the Configure Swapping Information in Components Dialog
-
Component Information - 显示所列元件的所有相关信息:Designator、Comment、Footprint、Library Reference、Pins 和 Parts。
-
Configure in Schematic
-
Enable in PCB
-
Configure Component - 点击以打开 Configure Pin Swapping dialog,为板上每个元件的引脚和子部件配置互换设置。
-
Only Show Components with Swap Information - 勾选后仅显示已配置为启用引脚和/或部件互换的元件。
执行引脚、差分对和部件互换
交互式引脚、差分对和部件互换
交互式互换允许在 PCB 编辑器中一次交换一个引脚、一个差分对或一个子部件。交互式互换命令位于 Tools » Pin/Part Swapping 子菜单中(Interactive Pin/Net Swapping、Interactive Differential-Pair Swapping 和 Interactive Part Swapping 命令)。从菜单选择命令后,PCB 设计空间中的所有对象都会被遮罩(淡化),只有可互换的实体会保持高亮。请留意 Status Bar,它会提示你下一步操作。执行互换所需的步骤会显示在状态栏上:
-
第一步是选择一个高亮的引脚,它将作为引脚互换的源。在差分对互换或部件互换的情况下,该引脚所属的差分对或子部件随后将被互换。
-
第二步是选择互换的目标引脚。对于差分对互换或部件互换,该引脚将代表一个差分对或一个子部件。
下面两张图片展示了对“双 5 输入 NOR 门”器件进行交互式器件分部(part)交换的各个阶段。有两个可交换的子部件(subpart),这意味着它们各自的 5 个引脚都可以被选中,如上图所示。选择了引脚 8,对应子部件 U2B。随后系统会高亮显示子部件 U2A 中可交换的引脚。
第一张图,步骤 1 - 选择要交换的引脚,可用引脚将高亮显示。第二张图,步骤 2 - 选择目标引脚。
自动引脚/网络优化器
自动引脚/网络优化器是一个两阶段工具。从 PCB 编辑器菜单中选择 Tools » Pin/Part Swapping » Automatic Pin/Net Optimizer 以执行自动优化。
自动引脚/网络优化器首先运行一次快速的单遍优化器,尝试最小化交叉(cross overs)和连接长度,但也可能反而增加它们。完成后,系统会询问你是否要运行迭代优化器。迭代优化器会执行多次迭代,以尝试减少交叉数量和连接长度。
将更改传回原理图
当你在 Configure Pin Swapping dialog 中配置 swap groups 时,你所做的编辑会立即应用到原理图器件上,而不管启动该命令时处于哪个编辑器中。不过,你在 PCB 编辑器中执行引脚、差分对或子部件交换所导致的设计更改,会通过标准的 Design Update 流程回传到原理图。
从 PCB 推送更改到原理图
引脚、差分对和器件交换会以与其他设计更改相同的方式传回原理图——通过在菜单中选择 Design » Update。根据 Project Options - Options dialog 中 Allow Pin-Swapping 选项的配置方式,引脚交换将以以下形式执行:
-
更改引脚名称(Change Pin Names)- 此更改会在符号上移动引脚。引脚并不会在符号上真正“移动”,但从视觉上会明显看到两个引脚互换了位置。
-
将引脚移动到不同网络(Move Pins to Different Nets)- 此更改会交换所连接导线上的网络标号(net labels)。
-
更改子部件 ID(Change Sub-Part ID)- 当执行器件交换时,此更改会修改子部件索引。
第一张图显示在原理图中通过交换引脚来解决引脚交换。第二张图显示通过移动网络标号来解决交换。
如果原理图未更新以显示已交换的引脚或器件,请按 End 键刷新显示。
在 FPGA 设计中利用新的引脚/器件交换系统
除了智能引脚、差分对和器件交换带来的显而易见的优势之外,能够交换“部分已布线”的子网络(sub-nets)为交换带来了新的维度,非常适合用于大容量 FPGA。动态网络重新分配使你能够采用多阶段设计流程,逐步细化引脚/网络分配。
初始 I/O 分配
在此阶段,FPGA 及其他器件引脚的网络分配会以原理图层面最容易的方式来设置。通常,这意味着只需按数字总线顺序将网络标号添加到 FPGA 的引脚上。原理图编辑器中的 Smart Paste 功能非常适合完成此操作。
初始连接优化
设计可以传输到 PCB 布局中;由于原理图层面的随机分配,会出现大量连接交叉。运行 Tools » Pin/Part Swapping » Automatic Net/Pin Optimizer 命令(该命令使用引脚与网络信息动态重新分配网络并提升可布线性)将快速大幅减少交叉数量。例如,系统可以重新连接多个在 PCB 文档多层上已完成扇出(escape)布线的 BGA 器件。此时结果不必已经最理想,因为它主要用于让 PCB 层面的连接在视觉上更易管理。
启动该命令后,将运行自动引脚/网络优化器。这是一个两阶段工具:首先运行快速的单遍优化器,尝试最小化交叉和连接长度,但也可能反而增加它们。完成后,系统会询问你是否要运行迭代优化器。迭代优化器会执行多次迭代,以尝试减少交叉数量和连接长度。优化器运行完成后会显示优化结果。
逃逸布线(Escape Routing)
现在可以在 PCB 上对大型器件执行扇出与逃逸布线(在器件上右键,可选择性地执行扇出/逃逸布线)。这可能会使之前优化过的分配变差,但在此阶段并不重要。
已逃逸连接优化
再次运行自动优化器。这一次,它会利用扇出/逃逸布线中已预先布线的部分。
手动布线
现在你可以将逃逸布线的末端视为要布线到达的“目标”。忽略实际的连接线,因为你可以从网络的另一端朝 PCB 上最近的已逃逸 I/O 走线(按空间位置与层来判断)进行布线,而不是朝同一网络上的那一条。这样连接将不会对齐。相反,你会在 FPGA I/O 引脚的逃逸布线与来自 PCB 其他部分的布线之间形成一系列小间隙。下图展示了一个简单示例。
最终优化
再次运行自动优化器,它会将已布线的子网络分配给尽可能最近的已逃逸 I/O 引脚。这样你只需完成一组非常短的连接即可。在这种情况下,自动优化器具有专门的例程来生成良好结果。随后这些连接可以交互式或自动布线完成。
手动引脚交换
使用交互式交换器执行你需要的任何特定引脚交换更改。
将更改回传到原理图
当你准备将这些引脚分配回传到原理图时,建议禁用原理图符号上的引脚更改。这是因为 FPGA 通常以多分部器件的形式呈现,每个引脚 Bank 作为一个独立的原理图分部。将引脚从一个分部移动到另一个分部会导致这些符号在逻辑上不正确,因为某个 Bank 符号会包含不属于该 Bank 的引脚。在这种情况下,通过更改网络标号来执行引脚交换才是正确的方法。
按需重复
该流程可在设计过程中按需重复运行,次数不限,且可在任何时间执行。