在设计中交换引脚、差分对和器件
概览
- 了解引脚交换、差分对交换和子部件交换之间的区别,以及各自的适用场景。
- 了解交换组、引脚组、部件组、差分对组和序列 ID 如何控制设计中允许的交换操作。
- 了解 Altium Designer 如何利用网络感知和优化功能来支持交换,即使面对已完成部分布线的网络和复杂的扇出布线也能应对。
能够对设计中的元件进行引脚交换,可以大幅降低布局的复杂程度,并有助于减少 PCB 的层数(从而降低成本)。遗憾的是,布局工程师可能并不具备合理配置引脚交换设置所需的全部信息,因为他们未必能完全了解设计者的意图。理想情况下,完成原理图设计的人员也应参与引脚交换数据的设置,以确保准确体现设计意图和约束。
引脚、差分对和子部件交换系统可与 Altium Designer 的交互式布线和 BGA 扇出布线功能协同工作。该功能不仅具备传统引脚交换系统的所有优势,还充分利用了 Altium Designer 对设计中网络分配的深入了解。在引脚交换操作期间,Altium Designer 会分析分配给所选引脚的网络,并动态重新分配该引脚及其连接铜箔上的网络。
借助这一功能,可以交换已部分布线的网络,以及复杂 BGA 器件中已预先完成多层扇出布线的网络。系统还可以利用 FPGA 差分引脚对的信息来交换差分对。
在 PCB 层面,该系统包含一个强大的自动优化器,可利用这些信息动态重新分配网络,以提高可布通性。例如,系统可以对已在多个层上完成扇出布线的多个器件重新建立连接。它会根据扇出布线层的匹配情况、最短曼哈顿布线距离以及各层最少交叉数来进行分配。
部分布线网络交换功能与自动优化器相结合,使您能够采用分层、迭代式布线策略:先对器件进行扇出布线,再布线至指定区域的边缘,最后将这些部分连接起来。您可以随时重新运行自动交换器,根据部分布线网络提供的最新信息再次进行优化。
交换分为三类:
- 引脚交换
- 差分对交换
- 子部件交换。
配置交换组
对于每一类交换,swap groups 决定了元件内哪些对象可以交换,哪些不能交换。对于引脚交换,元件中具有相同 pin group 的引脚可以相互交换。同样,对于差分对交换和子部件交换,分别由 pair group 和 part group 的值决定某个差分对或子部件是否可以交换。元件的交换组在下图所示的 Configure Pin Swapping 对话框中配置。可通过以下方式访问该对话框:
- 在 PCB 文档中,右键单击元件,然后选择 Component Actions » Configure Pin/Part Swapping。
- 在原理图文档中,右键单击元件,然后选择 Part Actions » Configure Pin Swapping。
- 在原理图文档中,单击 配置元件交换信息对话框 (Tools » Configure Pin Swapping)底部的 Configure Component 按钮。
- 在 PCB 文档中,单击 Configure Swapping Information In Components 对话框 (Tools » Pin/Part Swapping » Configure)底部的 Configure Component 按钮。
- 双击 Configure Swapping Information In Components 对话框中的任一元件。
配置引脚交换对话框的选项和控件
引脚交换选项卡
当元件中的某个引脚与另一引脚属于同一 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 group 和 sequence ID 属性配置。sequence ID 属性决定可交换子部件之间引脚的等效性。使用此选项卡可查看和整理元件的子部件组。
-
Left region - 列出 Sub Part 及关联的 Swap Data。
-
Right region - 列出 Pin Status 信息 及关联的 Swap Data。
- Pin Status - 列出 Designator、Pin Name、 Net、Bus 和 Type 针对每个引脚。
- Swap Data - 列出每个引脚的 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 在 配置引脚交换对话框中设置。
包含双路 5 输入正逻辑或非门元件的原理图。每个子部件的各输入引脚在逻辑上均等效,非常适合进行引脚交换。
以上图所示的原理图为例,其中包含 SNJ54S260 元件的两个 5 输入或非门。由于或非门的逻辑特性,INA0 至 INA4 各网络之间可相互交换。同样,INB0 至 INB4 各网络之间也可相互交换,但 INAx 网络不能与 INBx 网络交换。
或非门的交换约束在 Configure Pin Swapping 对话框中定义。将 INAx 网络分配到交换组 1,将 INBx 网络分配到交换组 2,可确保系统仅执行符合元件逻辑的交换。若某个引脚的引脚组值为空,则表示该引脚不可交换。
子部件组和序列 ID
一个元件通常包含多个功能等效的子部件。子部件交换允许交换这些等效子部件的网络。再次以上图中的元件为例,两个或非门具有完全相同的功能,因此网络(INA0、INA1、INA2、INA3、INA4、OUTA)可以与网络(INB0、INB1、INB2、INB3、INB4、OUTB)交换。
元件的子部件交换通过 part group 和 sequence ID 属性进行配置。这两个属性均为文本属性,可在 配置引脚交换对话框的 Part Swapping 选项卡中访问,如下图所示。下图还显示了与上图元件对应的 part group 和 sequence ID 设置。part group 表示哪些子部件能够相互交换。这两个子部件可以交换,因此在下图中,它们的 part groups 均设置为相同的值 1。
sequence ID 属性用于确定可交换子部件之间引脚的等效关系。在或非门示例中,必须确保在进行子部件交换时,输入引脚不会与输出引脚互换。下图中的 sequence ID 设置确保 OUTA 与 OUTB 交换、INA0 与 INB0 交换、INA1 与 INB1 交换,依此类推。
在配置引脚交换对话框中,为双路 5 输入或非门元件设置子部件交换组。
请注意,子部件交换仅适用于设计为包含多个子部件的元件,因为此操作基于交换两个子部件之间的所有网络。
差分对组
差分对的交换由其 pair group 的值决定。可在 配置引脚交换对话框的 Differential Pair Swapping 选项卡中访问 pair group 属性。Differential Pair Swapping 选项卡提供三种模式,可通过左下角的下拉菜单进行设置。
-
Show All Pins – 系统将显示元件的所有引脚。
-
Show Pairs From Directives – 系统将使用原理图上放置的差分对指令,将差分对填入表格。
控制原理图中的交换方式
在 PCB 编辑器中,引脚、差分对和子部件交换通过交换元件焊盘及相应铜箔上的网络来实现。将更改合并到原理图时,可以采用两种方式处理引脚交换:交换元件符号上的引脚,或交换连接到引脚的导线上的网络标签。两种方式各有优缺点。
交换引脚的方式在原理图中始终有效,但可能导致该元件符号实例与库中的定义不再一致。这意味着该符号无法从库中更新,同时设计中同一元件的其他实例也会具有不同的引脚排列。因此,这种方式非常适合电阻阵列等简单元件。
通过交换网络标签在原理图上执行交换,仅适用于通过网络标签建立连接且引脚之间未直接用导线相连的情况。这种方式的优点是元件符号不会改变,后续仍可从库中更新。对于 FPGA 等复杂元件,这种方式是最佳选择,因为实际移动符号上的两个引脚可能导致按 I/O Bank 划分的符号显示不正确。
您可以在 项目选项 - 选项对话框的 Allow Pin Swapping Using these Methods 区域中,选择 Adding / Removing Net-Labels 或 Changing Schematic Pins 选项来确定交换的执行方式,如下图所示。
这些项目选项决定了如何在原理图文档中更新引脚交换。
在 PCB 上启用引脚、差分对和子部件交换
在元件级别,指定 PCB 元件的交换选项在 属性面板中配置。在设计空间中选中该元件时,此面板会显示其属性。这些选项位于 General 选项卡的 Swapping Options 区域中。
PCB 元件的交换选项也可以通过 Configure Swapping Information in Components 对话框定义,该对话框列出了设计(或库)中使用的所有元件及其当前交换设置。从 PCB 编辑器访问时,此对话框还包含一个名为 Enable in PCB 的附加列,用于启用或禁用电路板上各个元件的交换功能。
可通过以下方式从原理图编辑器、原理图库编辑器和 PCB 编辑器访问 Configure Swapping Information in Components 对话框:
- Schematic Editor/Schematic Library Editor - 从主菜单中选择 Tools » Configure Pin Swapping 命令。
- PCB Editor - 从主菜单中选择 Tools » Pin/Part Swapping » Configure 命令。
使用 Configure Swapping Information in Components 对话框可快速定义各个元件的交换设置。该对话框包含功能强大的右键菜单,可轻松地将一个元件的设置快速复制到另一个元件,或通过一次单击启用或禁用多个元件的交换功能。
Configure Swapping Information In Components 对话框。
配置元件交换信息对话框的选项和控件
- Component Information - 显示所列元件的所有相关信息:Designator、Comment、Footprint、Library Reference、Pins 和 Parts。
-
Configure in Schematic
-
Pin Swap Data - 显示元件中有多少个引脚已加入引脚交换组。例如,[3/2] 表示 3 个引脚中有 2 个已加入引脚交换组。当元件经过修改,将引脚加入引脚交换组时,会显示
图标。当元件经过修改,将引脚从引脚交换组中移除时,会显示
图标。
-
Part Swap Data - 显示元件中有多少个子部件已加入子部件交换组。例如,[3/2] 表示 3 个子部件中有 2 个已加入子部件交换组。当元件经过修改,将子部件加入子部件交换组时,会显示
图标。当元件经过修改,将子部件从子部件交换组中移除时,会显示
图标。
-
-
Enable in PCB
-
Pin Swap - 通过勾选或取消勾选复选框,启用或禁用各个元件的引脚交换功能。单击 OK 并退出对话框后,交换设置才会生效。
- Part Swap - 通过勾选或取消勾选复选框,启用或禁用各个元件的子部件交换功能。单击 OK 并退出对话框后,交换设置才会生效。
-
- Configure Component - 单击以打开 配置引脚交换对话框,配置电路板上各个元件的引脚和子部件交换设置。
- 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,它会提示下一步操作。执行交换所需的步骤会显示在状态栏中:
-
第一步是选择一个高亮显示的引脚,作为引脚交换的源。对于差分对或子部件交换,随后将交换该引脚所属的差分对或子部件。
-
第二步是选择交换的目标引脚。对于差分对或子部件交换,此引脚代表一个差分对或子部件。
下方两张图展示了对双路五输入或非门元件进行交互式子部件交换的各个阶段。该元件有两个可交换的子部件,因此可以选择各自五个引脚中的任意一个,如上图所示。选中的引脚 8 对应子部件 U2B。随后,系统会高亮显示子部件 U2A 中可交换的引脚。
第一张图,步骤 1 - 选择要交换的引脚,可用引脚会高亮显示。第二张图,步骤 2 - 选择目标引脚。
自动引脚/网络优化器
自动引脚/网络优化器是一个分两阶段运行的工具。从 PCB 编辑器菜单中选择 Tools » Pin/Part Swapping » Automatic Pin/Net Optimizer,即可执行自动优化。
自动引脚/网络优化器首先运行快速的单次优化,尝试尽量减少连接交叉并缩短连接长度,但实际上也可能使交叉增多、连接变长。完成后,系统会询问您是否要运行迭代优化器。迭代优化器会执行多轮优化,尝试减少连接交叉数量并缩短连接长度。
将更改回传到原理图
在配置引脚交换对话框中配置 swap groups 时,所做的修改会立即应用到原理图元件,无论启动命令时哪个编辑器处于活动状态。但是,在 PCB 编辑器中执行引脚、差分对或子部件交换所产生的设计更改,需要通过标准的 Design Update流程回传到原理图。
将 PCB 中的更改推送到原理图
引脚、差分对和部件交换回传到原理图的方式与其他设计更改相同,即从菜单中选择 Design » Update。根据 Project Options - Options dialog 中允许引脚交换选项的配置,引脚交换将通过以下方式执行:
- 更改引脚名称——此更改会使符号上的引脚位置发生变化。引脚本身并未在符号上实际移动,但从视觉上看,两个引脚已移动或交换了位置。
- 将引脚移至不同网络——此更改会交换连接导线上的网络标签。
- 更改子部件 ID——执行部件交换时,此更改会更改子部件索引。
第一张图展示了通过交换引脚在原理图中实现引脚交换的结果。第二张图展示了通过移动网络标签实现交换的结果。
如果原理图未更新以显示交换后的引脚或部件,请按 End 键刷新显示。
在 FPGA 设计中充分利用新的引脚/部件交换系统
除了智能引脚、差分对和部件交换带来的明显优势外,交换部分已布线子网络的能力还为交换功能带来了新的应用方式,非常适合大容量 FPGA 设计。动态网络重新分配功能支持采用多阶段设计流程,逐步优化引脚/网络分配。
初始 I/O 分配
在此阶段,以原理图层面最方便的方式为 FPGA 和其他器件的引脚分配网络。通常,只需按总线编号顺序为 FPGA 引脚添加网络标签。原理图编辑器中的智能粘贴功能非常适合完成此操作。
初始连接优化
设计可以传输到 PCB 布局中,但由于原理图层面的分配较为随机,会出现大量连接交叉。运行 Tools » Pin/Part Swapping » Automatic Net/Pin Optimizer 命令,可利用引脚和网络信息动态重新分配网络并改善可布线性,从而快速大幅减少交叉数量。例如,系统可以重新连接多个 BGA 器件,这些器件已在 PCB 文档的多个层上完成逃逸布线。此时结果不必十分理想,因为这一步主要是让 PCB 层面的连接在视觉上更易于处理。
启动命令后,将运行自动引脚/网络优化器。这是一个分为两个阶段的工具,首先执行快速的单次优化,尝试尽量减少连接交叉并缩短连接长度,但实际上也可能使交叉增多、连接变长。完成后,系统会询问您是否要运行迭代优化器。迭代优化器会执行多轮优化,尝试减少连接交叉数量并缩短连接长度。优化器运行完成后,会显示优化结果。
逃逸布线
现在可以对 PCB 上的大型器件执行扇出和逃逸布线(右键单击元件,可选择性地执行扇出/逃逸布线)。这可能会使先前优化过的分配结果变差,但在此阶段并无影响。
逃逸布线后的连接优化
再次运行自动优化器。这一次,它将利用扇出/逃逸布线中已完成的布线段进行优化。
手动布线
现在可以将逃逸走线的末端作为布线的“目标”。可以忽略实际的连接线,从网络的另一端朝 PCB 上距离最近的逃逸 I/O 走线(综合考虑空间位置和层)进行布线,而不必朝同一网络上的逃逸走线布线。此时连接不会一一对应,而是会在 FPGA I/O 引脚的逃逸走线与来自 PCB 其他部件的走线之间留下一系列小间隙。下图展示了一个简单示例。
最终优化
再次运行自动优化器,它会将已布线的子网络分配给尽可能近的逃逸 I/O 引脚。这样,只需完成一组非常短的连接即可。自动优化器具有专门的算法,可在这种情况下获得良好的结果。随后可以通过交互式或自动布线完成这些连接。
手动引脚交换
使用交互式交换工具,执行所需的特定引脚交换。
将更改回传到原理图
准备将这些引脚分配回传到原理图时,建议禁用原理图符号上的引脚更改。这是因为 FPGA 通常以多部件元件的形式表示,每个引脚组对应一个独立的原理图部件。将引脚从一个部件移到另一个部件,会导致这些符号在逻辑上不正确,因为引脚组符号中会包含不属于该组的引脚。在这种情况下,通过更改网络标签来实现引脚交换才是正确的方法。
根据需要重复执行
在设计过程中的任何时候,都可以根据需要多次执行此流程。



)。



