0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA布线拥塞主要原因及解决方法

微云疏影 来源:FPGA算法工程师 作者:FPGA算法工程师 2022-12-07 10:22 次阅读

FPGA开发设计中,我们可能会经历由于资源占用过高的情况,例如BRAM、LUT和URAM等关键资源利用率达到或超过80%,此时出现时序违例是常有的事,甚至由于拥塞导致布线失败,整个FPGA工程面临无法生成bit文件的危险。

那么,有没有办法来解决这类问题呢?

此类问题是FPGA设计实现中比较棘手的问题,Xilinx针对7系列及以后的UltraScale/UltraScale+等,提出了UltraFast设计方法论,用于指导该系列器件的成功设计和实现,完成复杂系统设计。

时序收敛是指设计满足所有的时序要求。针对综合采用正确的 HDL 和约束条件就能更易于实现时序收敛。通过选择更合适的 HDL、约束和综合选项,经过多个综合阶段进行迭代同样至关重要,如下图所示。

poYBAGOP-PmAGzyEAAEnrEwmNOQ542.jpg

Xilinx提出的实现快速收敛的设计方法论

FPGA布线拥塞怎么办?

如果关键路径在拥塞区域内或者紧邻拥塞区域,或者是资源利用率较高,都会导致时序收敛困难。在很多情况下,拥塞会消耗大量的布线时间,甚至布线失败。如果布线延迟显著大于预期值,那么我们就得考虑降低设计的拥塞程度。

在确保时序约束和物理约束正确的情况下,我们可以通过以下方法解决拥塞问题。

1.拥塞类型

Xilinx FPGA布线结构包括东、南、西、北共4个方向不同长度的互联资源。拥塞区域以最小的正方形体现,这个正方形覆盖了相邻的互联资源或CLB单元。

pYYBAGOP-PqAbOnOAANBm99fwnM627.jpg

“Device”视图中的拥塞等级和拥塞区域

拥塞包括3种类型:全局拥塞、短线拥塞和长线拥塞。

拥塞类型

poYBAGOP-PuAEbSgAABBkfsFtKA792.png

2.生成设计拥塞报告

为了检查拥塞程度,我们可以基于布局之后生成的DCP,通过以下Tcl命令生成设计拥塞报告。

report_design_analysis -congestion -name cong

分析拥塞时,工具报告的等级可按下表所示方式进行分类。拥塞等级为 5 或更高时,通常会影响 QoR 并且必然会导致布线器运行时间延长。

pYYBAGOP-PuAXLBGAABeLVl4tp4898.png

为帮助识别拥塞,Report Design Analysis命令支持生成拥塞报告以显示器件的拥塞区域,以及这些区域内存在的设计模块的名称。此报告中的拥塞表会显示布局器和布线器算法发现的拥塞区域。下图显示了拥塞表示例。

poYBAGOP-PyACFMuAAC48PTtcgw932.jpg

拥塞表

“Placed Maximum”、“Initial Estimated Router Congestion”和“Router Maximum”拥塞表可提供有关东西南北四个方向上拥塞最严重的区域的信息。选中该表中的窗口时,在“Device”窗口中会突出显示对应的拥塞区域。

3.生成设计复杂性报告

我们也可以通过设计复杂性报告来预判是否出现拥塞。我们可以对布局生成的DCP,通过以下Tcl命令生成设计复杂度报告。

report_design_analysis -complexity -name comp

复杂性报告 (Complexity Report) 可按顶层设计和/或层级单元的叶节点单元的类型显示 Rent 指数 (Rent Exponent)、平均扇出 (Average Fanout) 和分布方式。Rent 指数是指在使用min-cut算法以递归形式对设计进行分区时,网表分区的端口数量和单元数量之间的关系。其计算方法与在全局布局期间布局器所使用的算法类似。因此,它可准确表明布局器所面临的困难,当设计的层级与在全局布局期间所发现的物理分区匹配良好时尤其如此。

Rent 指数较高的设计表示此类设计中包含逻辑紧密相连的分组,并且这些分组与其它分组同样连接紧密。这通常可理解为全局布线资源利用率较高并且布线复杂性也更高。此报告中提供的 Rent 指数是根据未布局和未布线的网表来计算的。完成布局后,相同设计的 Rent 指数可能改变,因为它基于物理分区而不是逻辑分区。

pYYBAGOP-PyAP2v4AAFi7kACK90397.jpg

复杂性报告

Rent 指数的典型范围

poYBAGOP-P2AHD4TAACDP18NotA966.jpg

“平均扇出”典型范围

pYYBAGOP-P2ABLXhAACwBtaZ9XE247.jpg

4.解决拥塞问题

根据前文所述造成拥塞的原因,我们可以采用以下办法解决布线拥塞问题。

拥塞原因1:过多的MUXF(将MUXF转化为LUT)

方法1:利用模块化综合技术,对特定模式设置MUXF_REMAPPING:

set_property BLOCK_SYNTH.MUXF_MAPPING 1 [get_cells top/instance]

方法2:在opt_design阶段使用-remap选项:

opt_design -mux_remap -remap

方法3:针对特定MUXF设置MUXF_REMAP属性为ture

set_property MUXF_REMAP 1 [get_cells -hier-filter {NAME=~ cpu*&& REF_NAME=~MUXF*}]

拥塞原因2:过长的进位链(将进位链转化为LUT)

方法1:在opt_design阶段使用-remap选项:

opt_design -carry_remap -remap

方法2:针对特定MUXF设置CARRY_REMAP属性

set_property CARRY_REMAP 2 [get_cells -hier-filter { REF_NAME==CARRY8}]

拥塞原因3:过多的控制集(合并控制集)

方法1:利用模块化综合技术,对特定模式设置CONTROL_SET_THRESHOLD:

set_property BLOCK_SYNTH. CONTROL_SET_THRESHOLD 10 [get_cells top/instance]

方法2:在opt_design阶段,使用-control_set_merge合并等效控制集

opt_design -control_set_merge

方法3:在opt_design阶段,使用merge_equivalent_drivers合并等效控制集,包括非控制逻辑

opt_design -merge_equivalent_drivers

拥塞原因4:过多的LUT整合(阻止LUT整合)

方法1:利用模块化综合技术,对特定模式设置LUT_COMBINING:

set_property BLOCK_SYNTH. LUT_COMBINING 0 [get_cells top/instance]

方法2:设定LUT的LUTNM属性为空:

set_property LUTNM “”[get_cells hier-filter {REF_NAME =~LUT*&& NAME=~inst}]

在综合阶段,除了使用以上的方法外,对于IP,我们最好采用OOC的综合方式。

在实现阶段,可以选择适当的实现策略来缓解拥塞。对于UltraScale系列芯片,可尝试采用“Congestion_*”策略缓解拥塞;对于UltraScale+系列芯片,可尝试采用“performance_NetDelay_*” 策略缓解拥塞。如下图所示。

poYBAGOP-P6AFb9UAAGGfcq2PUg197.jpg

实现时解决拥塞策略

当然,我们也尝试采用“performance_ExtraTimingOpt” 策略进行时序优化,但可能无法解决拥塞问题。

FPGA算法工程师

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21307

    浏览量

    593113
  • Xilinx
    +关注

    关注

    70

    文章

    2119

    浏览量

    119364
  • 时序
    +关注

    关注

    5

    文章

    356

    浏览量

    36955
收藏 人收藏

    评论

    相关推荐

    谐波引起电缆损坏的主要原因

    谐波是指在电力系统中出现的频率为整数倍于基波频率的波动现象。在电缆中传输的电能中,谐波存在的情况是很常见的。然而,谐波也是导致电缆损坏的主要原因之一。
    的头像 发表于 03-14 14:20 148次阅读
    谐波引起电缆损坏的<b class='flag-5'>主要原因</b>

    放大电路中产生零点漂移的主要原因是什么

    放大电路中产生零点漂移的主要原因是什么  放大电路是电子设备中常用的一种电路,用于放大信号的幅度。然而,放大电路中常常会出现零点漂移的问题,即输出信号在没有输入信号时并不为零,而是存在一个偏移
    的头像 发表于 02-06 15:23 579次阅读

    三相电缺相的原因解决方法 三相电电压不稳怎么解决

    三相电缺相的原因解决方法 三相电缺相是指三相电路中某一相电流缺失的现象,通常会导致电机运行不正常、设备损坏等问题。下面将详细介绍三相电缺相的原因解决方法
    的头像 发表于 02-06 10:04 3196次阅读

    PCB焊盘脱落的原因解决方法

    PCB焊盘脱落的原因解决方法? PCB(印刷电路板)焊盘的脱落是一个常见的问题,它会导致电子设备无法正常工作。本文将详细介绍焊盘脱落的原因以及解决方法。 一、焊盘脱落的
    的头像 发表于 01-18 11:21 1401次阅读

    辊压机轴承位磨损主要原因

    电子发烧友网站提供《辊压机轴承位磨损主要原因.docx》资料免费下载
    发表于 01-10 14:10 0次下载

    励磁涌流产生的原因解决方法

    解决方法。 首先,我们来看看励磁涌流产生的原因。励磁涌流的主要原因有以下几点: 变压器的饱和特性:变压器的铁芯具有饱和特性,当磁通密度超过一定值时,铁芯的磁导率会降低。在励磁电流从零开始上升时,磁通密度逐渐增加,
    的头像 发表于 12-19 10:40 1779次阅读

    三相电缺相的原因解决方法

    三相电缺相的原因解决方法 三相电缺相是指三相供电系统中某一相或多相出现故障或中断的情况。常见的缺相原因包括线路故障、设备故障、接线错误、过载等,解决方法则包括检查和修复故障线路或设备
    的头像 发表于 12-11 17:16 7645次阅读

    7种光缆故障的主要原因

    7种光缆故障的主要原因  光缆故障是指光缆在传输信息过程中出现的问题,影响着光信号的传输质量和速度。这些故障可能由多种原因引起,下面将详细介绍7种光缆故障的主要原因。 1. 光缆折断 光缆折断是最常
    的头像 发表于 12-07 09:40 1098次阅读

    为什么共模电流是EMI的主要原因

    为什么共模电流是EMI的主要原因
    的头像 发表于 12-05 15:56 200次阅读
    为什么共模电流是EMI的<b class='flag-5'>主要原因</b>

    在PCB设计中,使用多层PCB板的主要原因

    一站式PCBA智造厂家今天为大家讲讲PCB设计为什么要采用多层PCB结构进行?使用多层PCB板的主要原因。随着芯片集成度的提高,芯片封装的I/O引脚数目也在飞跃性地增加,特别是BGA封装的出现,仅靠单面、双面导体层布线已经无法将BGA内圈的引脚的走线引出。
    的头像 发表于 11-24 09:16 349次阅读
    在PCB设计中,使用多层PCB板的<b class='flag-5'>主要原因</b>

    铅酸蓄电池短路的主要原因

    电子发烧友网站提供《铅酸蓄电池短路的主要原因.doc》资料免费下载
    发表于 11-15 09:07 2次下载
    铅酸蓄电池短路的<b class='flag-5'>主要原因</b>

    晶振停振的原因解决方法

    晶振停振的原因解决方法 晶振是主频组成器的核心元件之一,它能够提供一个固定的、稳定的振荡频率信号,是电子元件中一种非常重要的信号源。然而,在使用过程中,晶振有时会出现停振的情况,导致整个电路的正常
    的头像 发表于 10-31 10:42 1024次阅读

    变频器过热的故障原因解决方法

    变频器过热的故障原因解决方法
    的头像 发表于 10-24 10:09 1908次阅读

    电感啸叫的常见原因以及解决方法

    电子发烧友网站提供《电感啸叫的常见原因以及解决方法.docx》资料免费下载
    发表于 10-15 11:03 2次下载

    斩波电路电流能够连续的主要原因是什么?

    斩波电路电流能够连续的主要原因是什么?
    发表于 05-11 17:08