前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vivado综合设置选项分析:-shreg_min_size和-no_srlextract

Vivado综合设置选项分析:-shreg_min_size和-no_srlextract

作者头像
Lauren的FPGA
发布2019-10-31 00:40:16
2.3K0
发布2019-10-31 00:40:16
举报
文章被收录于专栏:Lauren的FPGALauren的FPGALauren的FPGA

Xilinx FPGA SliceM中的LUT可以配置为移位寄存器(ShiftRegister)。以UltraScale芯片为例,SliceM中的8个LUT可级联构成深度为256的移位寄存器而不会消耗额外的触发器。移位寄存器的工作原理如下图所示(此图只是工作原理并非真实架构)。通过adddr的控制可实现移位深度的动态切换。

采用LUT实现移位寄存器有两种方式,一种是通过原语SRL16E或SRLC32E(具体可参考ug974);另一种是手工RTL代码描述。对于第一种方式,SRL16E和SRLC32E的区别在于深度不同,同时后者提供了级联端口Q31,如下图所示。端口A0~A3功能与上图中的addr等效。当addr为0时,移位深度为1。

对于手工描述的方式,相应的RTL代码如下图所示(VHDL和Verilog代码是等效的,选择自己喜欢的阅读即可),注意:这里并没有复位信号。

-shreg_min_size的定义是Minimumlength for chain of registers to be mapped onto SRL,可以看出它就是用来管理移位寄存器是否映射为LUT,默认值为3。通过实验可以得到如下结论:

可见,当移位寄存器深度小于等于-shreg_min_size时,最终实现方式为触发器级联的形式;而当其深度大于-shreg_min_size时,实现方式则为FF + LUT + FF的形式。

-no_srlextract则是阻止工具将移位寄存器映射为LUT,其优先级高于-shreg_min_size。例如,当移位寄存器深度为4,-shreg_min_size为3,-no_srlextract被勾选,那么最终实现形式是4个触发器级联的形式,而非FF + LUT + FF的形式。

在SystemGenerator中,有两个模块Delay和Register,如下图所示。这两个模块是不同的。对于Delay延迟深度可设定,对于Register延迟深度就是1。

进一步,对于Delay的描述如下图所示:A delay line is a chain, each link of whichis an SRL16 followed by a flip-flop。可见Delay最终的实现形式是LUT+ FF。Register则直接对应Slice中的FF。

-shreg_min_size是全局选项,对所有模块均生效。为了更精确地控制,可采用模块化综合技术选项SHREG_MIN_SIZE,取值范围为3~32。此外,综合属性SRL_STYLE也可管理移位寄存器的实现方式。

移位寄存器采用LUT + FF或者FF + LUT + FF的好处在于节省了FF,尤其是对于较大深度的延迟;同时Slice中的FF其Tco(时钟到输出延迟)小于LUT的Tco,对时序收敛是有好处的。

结论

-移位寄存器的实现方式可通过-shreg_min_size进行全局管理,

-也可通过模块化综合技术选项SHREG_MIN_SIZE进行细粒度管理

-还可通过综合属性SRL_STYLE进行控制

-综合选项-no_srlextract优先级高于-shreg_min_size

-移位寄存器采用LUT实现时不支持复位

-SysGen中Delay和Register是不同的

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档