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
    +关注

    关注

    1656

    文章

    22299

    浏览量

    630589
  • Xilinx
    +关注

    关注

    73

    文章

    2192

    浏览量

    130019
  • 时序
    +关注

    关注

    5

    文章

    403

    浏览量

    38632
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    轴承锈蚀的主要原因分析

    轴承锈蚀的主要原因分析 环境因素 湿度:空气中湿度的大小对轴承的锈蚀速度有很大的影响。在临界湿度下,金属锈蚀的速度很慢,一旦湿度超过临界湿度,金属锈蚀的速度会突然上升。钢铁的临界湿度在65%左右
    的头像 发表于 11-22 10:50 1722次阅读

    TFT液晶屏开机时开机闪屏的原因解决方法

    启动后再给屏幕上电。 总结 主要原因 导致现象 优先解决方法 背光开启过早 一片无结构的白光/杂光 延迟背光开启或使用PWM软启动 电源时序混乱 杂色、乱码闪烁 优化电源排序,确保信号稳定后再供电
    发表于 10-18 11:49

    FPGA测试DDR带宽跑不满的常见原因及分析方法

    FPGA 中测试 DDR 带宽时,带宽无法跑满是常见问题。下面我将从架构、时序、访问模式、工具限制等多个维度,系统梳理导致 DDR 带宽跑不满的常见原因及分析方法
    的头像 发表于 10-15 10:17 599次阅读

    403 Forbidden是什么意思?最佳解决方法有哪些?

    请求的资源或操作受到了访问控制列表(ACL)的限制,或者请求的用户没有足够的权限,服务器就会拒绝授权执行此请求。下面 华纳云 整理的关于403 Forbidden产生原因解决方法内容希望对大家有所帮助! 403 Forbidden产生的
    的头像 发表于 06-25 16:33 1.4w次阅读

    sys_sem_free()传入的参数变成了NULL,引起这个现象的主要原因有哪些?

    ).sem); 此时该传入的参数在莫名的情况下变成了NULL,该问题发生在频繁建立和断开TCP连接的测试案例中。 请教一下引起这个现象的主要原因有哪些?
    发表于 04-30 07:35

    电机常见故障分析及解决方法

    电机在运行过程中可能会出现多种故障,以下是一些常见故障的分析及解决方法: 一、机械故障 1. 轴承损坏或磨损    ● 故障表现:电机运转不平稳,产生异响,严重时甚至停转。    ● 原因分析:通常
    的头像 发表于 04-25 15:20 4087次阅读
    电机常见故障分析及<b class='flag-5'>解决方法</b>

    变频器低电压跳闸原因解决方法和案例分析

    ,还可能对设备造成损害。因此,深入探讨变频器低电压跳闸的原因解决方法,对于提高生产效率和保障设备安全具有重要意义。 一、变频器低电压跳闸的原因分析 变频器低电压跳闸的原因多种多样,
    的头像 发表于 04-17 15:57 1634次阅读
    变频器低电压跳闸<b class='flag-5'>原因</b>及<b class='flag-5'>解决方法</b>和案例分析

    变频器对PLC和步进电机干扰的主要原因和解决办法

    、信号输入和输出工作失常,同时也可能使步进电机产生震动和运行失步。以下是对变频器干扰PLC和步进电机的主要原因及解决办法的详细分析: 一、主要原因 1. 变频器性能:性能较差的变频器可能产生更大的干扰。 2. 谐波干扰:变频器在整流
    的头像 发表于 04-10 07:34 1228次阅读
    变频器对PLC和步进电机干扰的<b class='flag-5'>主要原因</b>和解决办法

    CAN丢帧很常见,你知道有哪些主要原因吗?(下)

    CAN总线在汽车和工业领域广泛应用,但通信问题可能影响其稳定性。本文探讨总线速率错误、电源不稳定和线程处理不当三大常见问题,分析原因并提供解决方法,助力优化通信可靠性。总线速率设置错误当总线速率设置
    的头像 发表于 02-25 11:33 1271次阅读
    CAN丢帧很常见,你知道有哪些<b class='flag-5'>主要原因</b>吗?(下)

    变频器无法进行调速的原因解决方法

    ,还可能对设备造成损害。本文将从多个角度探讨变频器无法进行调速的原因,并提供相应的解决方法,以帮助技术人员快速定位问题并恢复变频器的正常工作。       首先,变频器无法进行调速的一个常见原因是其输出的最大扭矩小于负载
    的头像 发表于 02-07 15:50 2678次阅读
    变频器无法进行调速的<b class='flag-5'>原因</b>和<b class='flag-5'>解决方法</b>

    变频器无法进行快速逆转原因解决方法

    逆转的情况时有发生,这不仅影响了生产线的灵活性,还可能对设备和工作人员构成安全隐患。本文将从变频器无法进行快速逆转的原因入手,探讨相应的解决方法,旨在为工程师和技术人员提供实用的参考。       变频器无法进行快速
    的头像 发表于 02-07 09:27 1320次阅读

    无线收发器有杂音滋滋滋的原因解决方法

    本文将深入探讨无线收发器产生杂音的原因,并提供相应的解决方法
    的头像 发表于 01-29 15:35 3638次阅读

    无功补偿故障原因解决方法

    无功补偿故障可能由多种原因引起,以下是一些常见的故障原因及其解决方法
    的头像 发表于 01-29 14:25 2648次阅读

    电子焊接的常见问题及解决方法

    问题及解决方法: 焊点虚焊 原因分析 :虚焊是指焊点表面看似焊接良好,但实际上焊料与焊件之间没有形成良好的冶金结合。虚焊的原因可能是焊接时间过短、焊接温度过低、焊料质量差等. 解决方法
    的头像 发表于 01-09 10:28 1933次阅读

    探究传感器故障的主要原因

    的正常运行,还可能带来安全隐患和经济损失。本文旨在深入探讨传感器故障的主要原因,以便我们更好地预防和应对。
    的头像 发表于 12-25 14:03 1867次阅读