专栏首页Lauren的FPGA你的FPGA设计有这些缺陷吗

你的FPGA设计有这些缺陷吗

上期内容:

UltraScale系列FPGA与7系列FPGA时钟资源有哪些不同

本文关注点:

缺陷1:过高的逻辑级数

缺陷2:过重的流水

缺陷3:直接实例化F7MUX、F8MUX或F9MUX

缺陷4:用LUT实现大位宽数据存储

FPGA设计,尤其是高速设计即主时钟频率超过300MHz,都会或多或少出现时序违例。而时序违例并不是单一的问题,它可能设计中的多个缺陷导致的。本文关注常见的以下几个设计缺陷。

缺陷1:过高的逻辑级数

所谓逻辑级数(Logic Level)是指时序路径起点和终点之间的组合逻辑单元的个数,这些逻辑单元可能是查找表(LUT)、进位链(Carry Chain)、数据选择器(F7MUX/F8MUX/F9MUX)等。如下图所示路径,其逻辑级数为4。

逻辑级数会清晰地显示在时序报告中,对于上图所示时序路径,其时序报告如下图所示。图中红色方框标记的部分即为逻辑级数,同时也显示了逻辑级数的构成单元。

逻辑级数过高带来的后果是组合逻辑延迟很大。如下图所示的报告,可以看到该时序路径逻辑级数为15,逻辑延迟(Logic Dealy)为1.319,占总延迟的13.427%。逻辑级数过大,很大程度上与RTL代码风格相关,因此,为降低逻辑级数,通常要从优化代码的角度考虑。这种改动通常比较大,建议在设计初期就做好逻辑级数的评估。

缺陷2:过重的流水

对于逻辑级数较高的路径,典型的优化方法是插入流水寄存器,将组合逻辑打断。这往往会给很多初学者一个误导:流水寄存器越多,时序越容易收敛。本质上,这两者并没有必然的关系。只能说,在合理范围内,流水寄存器会对时序收敛带来一定的好处。过多的流水寄存器,一方面造成输入到输出的Latency增大,另一方面也增加了触发器的利用率。触发器利用率的增加意味着其控制集(时钟、使能、复位/置位)很有可能增大,从而可能导致布线拥塞。

缺陷3:直接实例化F7MUX、F8MUX或F9MUX

无论是7系列FPGA还是UltraScale系列FPGA,其SLICE中都包含F7MUX和F8MUX,UltraScale系列FPGA中的SLICE还包含F9MUX。这些MUX在如下情况时会被工具自动推断而被使用:

一个8:1MUX需要2个LUT和1个F7MUX;

一个16:1MUX需要4个LUT、2个F7MUX和1个F8MUX,其中F8MUX的输入分别来自于这两个F7MUX的输出;

一个32:1MUX需要8个LUT、4个F7MUX、2个F8MUX和1个F9MUX,其中F8MUX的输入分别来自于这两个F7MUX的输出;F9MUX的输入分别来自于这两个F8MUX的输出。

F7MUX、F8MUX、F9MUX都是2:1的MUX,有些工程师觉得没用这些资源挺可惜,于是就直接通过原语(Primitive)的方式使用,这实际上会造成SLICE端口密度增大,尤其是使用量比较大的时候,最终导致的后果就是布线拥塞。

缺陷4:用LUT实现大位宽数据存储

SLICEM中的LUT可以用做RAM或ROM,例如,可以存储滤波器系数、FFT的旋转因子等。作为一种轻量级的存储资源,其在速度和功耗上都有一定的优势。但如果是存储大位宽的数据,例如位宽为256或1024等,即使深度只有16或32,在高速设计中,仍然建议使用BlockRAM,而不是LUTRAM。毕竟每个LUT只提供1bit输出,256的位宽意味着至少需要256个LUT,而这些LUT必然分布在不同列的SLICEM中,无论对布线还是时序都会带来负面影响。

文 | Lauren 图 | Laur

Copyright @ Lauren的FPGA

转载事宜请私信 | 获得授权后方可转载

本文分享自微信公众号 - Lauren的FPGA(Lauren_FPGA),作者:LaurenGao

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 解决时序违例就看这篇文档

    针对时序收敛,Xilinx提供了一套完备的方法学,也就是基线设计流程,这使得时序收敛变得有章可循,而不再是盲目尝试。同时,借助Vivado强大的分析处理能力、可...

    Lauren的FPGA
  • 资源利用率报告中的LUT和LUTRAM有什么区别

    通过Report Utilization查看资源利用率报告时,会生成如下图所示的一个表格。在这个表格中Resource对应的列会有LUT和LUTRAM,那么两者...

    Lauren的FPGA
  • AXI-4 Lite与AXI-4 Memory Mapped接口协议有什么区别?

    AXI-4 Lite可以看作是AXI-4 Memory Mapped的子集,从下面的示例图中就可见一斑。最直接的体现是AXI-4 Lite的突发长度是固定值1。

    Lauren的FPGA
  • 自然语言处理工具hanlp定制用户词条

    关于hanlp的文章已经分享过很多,似乎好像大部分以理论性的居多。最近有在整理一些hanlp应用项目中的文章,待整理完成后会陆续分享出来。本篇分享的依然是由ba...

    IT小白龙
  • 长短时记忆网络LSTM(基本理论)

    参考: Understanding LSTM Networks The Unreasonable Effectiveness of Recurrent Neu...

    用户1332428
  • 时序数据库InfluxDB-v1.6.0安装和简单使用小结

    InfluxDB是一个时序性数据库,因为工作需求,安装后使用测试下是否支持大数据下的业务场景

    一灰灰blog
  • java基础学习_面向对象(上)01_day07总结

    ============================================================================= ==...

    黑泽君
  • 教你怎么用ajax传数组(也可以是转为json)

    我之前写过一个关于ajax的详解,那个是标准的ajax,今天介绍的是怎么用ajax传递数组这样的数据类型呢?很多的时候我们需要给后端的数据不是几个单独的数据,一...

    何处锦绣不灰堆
  • 2019年图灵奖公布!从阿凡达到图灵奖,皮克斯元老的动画梦

    斯坦福大学计算机图形学实验室教授Patrick Hanrahan和计算机科学家、皮克斯动画工作室联合创始人Edwin Catmull获得了这一计算机领域最高荣誉...

    新智元
  • Clean up your BizTalk databases

    Here are a few scripts / stored procedures that most of the Biztalk newbies woul...

    阿新

扫码关注云+社区

领取腾讯云代金券