使用软核 SLR 布局规划约束 - 2023.2 简体中文

适用于 FPGA 和 SoC 的 UltraFast 设计方法指南 (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 简体中文

对于大型设计,大部分主要块的逻辑都可按期望方式填充到 1 个 SLR 内,并在数次设计迭代后实现时序收敛。但根据总体设计布局,有少量逻辑(尤其是主块之间的连接和 SLR 之间的连接)会受到 QoR 变化的影响。在此类情况下,布局器和物理最优化算法需要更高的灵活性,才能将部分逻辑复制或迁移到其他 SLR,以解决布局难题并实现时序收敛。

您可使用 USER_SLR_ASSIGNMENT 属性向 SLR 分配大型设计块来完成设计布局规划。将该属性设置为字符串值,该字符串值将应用于层级单元,但不应用于叶节点单元。您为该属性设置的值会对逻辑分区产生如下影响:

SLR 名称
为层级的单元分配 SLR(SLR0、SLR1、SLR2 等)名称时,布局器会尝试将整个单元布局在指定 SLR 内。
字符串值
为层级单元分配任意字符串值时,布局器会选择 SLR。这将阻止将单元分区到多个 SLR 内。
注释: 如有多个单元具有相同的 USER_SLR_ASSIGNMENT 值,那么布局器会尝试将这些单元分组到同一个 SLR 中。

USER_SLR_ASSIGNMENT 属性可作为 SLR 分区期间的软核约束,而 Pblock 则始终作为 SLR 分区与全局布局期间的硬核约束。不同于 Pblock,布局器查找设计的有效 SLR 分区时可忽略 USER_SLR_ASSIGNMENT。USER_SLR_ASSIGNMENT 和 Pblock 都支持通过详细的布局器和物理最优化来对 SLR 边界附近的叶节点单元布局进行微调以改进时序。这些调整操作包括跨 SLR 边界迁移流水线寄存器,前提是迁移有助于改进时序。不允许跨 Pblock 边界迁移这些寄存器。

在以下示例中包含 3 个时序关键型层级块,单元名称分别为 IP1、IP2 和 IP3,目标为双 SLR 器件。为了拆分这 2 个块以便将 IP1 和 IP2 一起保留在 SLR1 内,而将 IP3 布局在 SLR0 内,请应用以下 XDC 约束:

set_property USER_SLR_ASSIGNMENT SLR1 [get_cells {IP1 IP2}]
set_property USER_SLR_ASSIGNMENT SLR0 [get_cells IP3]

下图显示了由此生成的布局。为了提高性能,您可整合额外的流水线阶段以遍历器件内的距离。这在期望的 SLR 交汇处(在本例中即 IP2 与 IP3 之间)尤为实用。在执行详细布局和 phys_opt_design 期间,来自 IP2 和 IP3 的流水线寄存器可以自动跨 SLR 边界迁移,前提是迁移可改进时序。

图 1. USER_SLR_ASSIGNMENT 属性的布局示例

如果无法设置 USER_SLR_ASSIGNMENT 或者如果布局器将布局困难的路径布局在跨 SLR 位置导致出现路径分割,那么可使用 USER_CROSSING_SLR 属性来指示 SLR 交汇应出现的位置和不应出现的位置。通常,该属性可应用于符合以下条件的信号线或叶管脚:其中管脚与信号线驱动程序布局在相同 SLR 内,或者对寄存器链应用 SLR 交汇。请将该属性设置为布尔值,并将该值应用于信号线和管脚以约束各 SLR 交汇:

TRUE
表示目标信号线对象应跨 SLR 或者目标管脚对象应跨 SLR 连接。TRUE 值只能应用于寄存器间连接,并且寄存器间仅含单扇出。
注释: TRUE 值不得用于随机逻辑。该选项可用于确保在尝试多种实现策略时,寄存器链始终跨特定寄存器上的 SLR 边界。
FALSE
表示目标信号线对象不应跨 SLR 或者目标管脚对象不应跨 SLR 连接。FALSE 值可应用于任意信号线或管脚。
注释: 管脚不得位于宏原语内部,因为这些管脚为内部管脚,不得对其加以约束。

在以下示例中,流水线寄存器链两次跨同一个 SLR,导致出现意外的低效率曲折路径。

注释: 在接下来的 2 个图中,每个点都表示 1 个寄存器阶段。
图 2. 设置 USER_CROSSING_SLR 属性前的次优 SLR 交汇

为了实现最优化布局(其中仅有 net_B 跨 SLR),应用以下 XDC 约束:

set_property USER_CROSSING_SLR FALSE [get_pins -leaf -of [get_nets net_A]]
set_property USER_CROSSING_SLR TRUE [get_pins -leaf -of [get_nets net_B]]

生成的布局仅在 net_B 上包含单个 SLR 交汇,如下图所示。

图 3. 设置 USER_CROSSING_SLR 属性后的最优化 SLR 交汇