前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你的FPGA设计有这些缺陷吗

你的FPGA设计有这些缺陷吗

作者头像
Lauren的FPGA
发布2019-12-17 16:30:40
2.8K0
发布2019-12-17 16:30:40
举报
文章被收录于专栏:Lauren的FPGALauren的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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档