怎样去解决FPGA由于拥塞导致布线失败的问题呢

时间:2025-09-12  作者:Diven  阅读:0

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

怎样去解决FPGA由于拥塞导致布线失败的问题呢

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

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

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

FPGA布线拥塞怎么办?

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

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

拥塞类型

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

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

拥塞类型

**2.**生成设计拥塞报告

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

report_design_analysis -congestion -name cong

分析拥塞时,工具报告的等级可按下表所示方式进行分类。拥塞等级为 5 或更高时,通常会影响 QoR 并且必然会导致布线器运行时间延长。为帮助识别拥塞,Report Design Analysis命令支持生成拥塞报告以显示器件的拥塞区域,以及这些区域内存在的设计模块的名称。此报告中的拥塞表会显示布局器和布线器算法发现的拥塞区域。下图显示了拥塞表示例。拥塞表

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

生成设计复杂性报告

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

report_design_analysis -complexity -name comp

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

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

Rent 指数的典型范围“平均扇出”典型范围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_ ” 策略缓解拥塞。如下图所示。实现时解决拥塞策略

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

你在FPGA布局布线过程中,遇到哪些问题呢?欢迎分享或留言。

审核编辑:刘清

猜您喜欢


贴片电阻上的「5R10」表示其阻值为5.1欧姆。其中,「R」代表小数点。前面的数字「5」表示整数部分,后面的数字「10」表示小数部分。所以连起来就是5.10欧姆...
2024-11-26 11:29:45

瓷片电容是电路中常见的元件。的作用非常重要。很多人对了解不多。本文将详细介绍瓷片电容的功能。储存电能瓷片电容能储存电能。可以在电路中暂时存储电荷。这样,电流可以...
2025-03-19 19:01:06

光电传感器是将光信号转换为电信号的设备,应用于自动化、安防、工业控制等领域。利用光电效应原理,通过发射和接收光线来检测物体的存在、位置或距离。光电传感器通常由发...
2009-08-18 00:00:00

电子元件品牌琳琅满目,其中宏达电子排阻很好的性能和可靠的质量赢得了赞誉。那么,宏达电子排阻究竟属于哪个国家的品牌呢?本文将详细解析这一问题,并探讨宏达电子排阻品...
2014-01-03 12:14:30

电容是电子元件中重要的一部分。的尺寸和大小,直接影响电路的性能。许多人对电容的选择有疑问,尤其是在尺寸方面。本文将为你解答电容尺寸的区别。电容的基本概念电容是储...
2025-03-27 09:31:39

现代电子产品设计中,封装技术的选择对电路性能和成本控制起着非常重要的作用。HSOP8_4.9X3.9MM_EP作为常见的封装形式,因其优越的性能和适用性,受到关...
2025-04-26 23:31:40

旋具头是现代工具中不可少的组成部分,应用于各种机械和电子设备的维护与修理。设计旨在提供高效的扭力传递,使得操作更加轻松。旋具头通常采用高强度合金钢材料,耐磨损、...
2011-08-09 00:00:00

电阻器作为基础且关键的元件,有着着调节电流、分压和信号处理等多种功能。随着技术的发展,合金电阻因其优异的性能逐渐成为电子设计中的重要选择。紫泰荆合金电阻作为行业...
2024-09-18 06:41:24

发光二极管(LED)是应用于照明、显示和信号传输等领域的重要电子元件。由于其高效能、长寿命和低能耗,LED在现代技术中是越来越重要的配件。本文将深入探讨发光二极...
2025-03-30 19:01:07