前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如果移位寄存器这么写

如果移位寄存器这么写

作者头像
Lauren的FPGA
发布2019-10-30 22:08:59
7750
发布2019-10-30 22:08:59
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

有两种代码风格可用来描述移位寄存器。第一种风格如图1所示,第二种风格如图2所示。相比而言,第一种风格易于参数化,且将移位深度设置为参数可实现设计复用。同时,这种风格还可方便地使用综合属性SRL_STYLE,从而达到控制综合结果的目的。第二种风格是无法使用SRL_STYLE的。SRL_STYLE的具体使用方法可参考这里Vivado综合属性:SRL_STYLE

图1
图1
图2
图2

图1和图2所示代码移位深度为6,以此代码为例,在综合设置选项为默认值的情形下(-shreg_min_size为3),综合后的电路形式为FF->SRL->FF,如图3所示。

图3
图3

从时序收敛的角度而言,图3所示的电路是易于达到收敛的目的的,但在实践中,我们发现,有时第一级的触发器与后续的SRL距离较远,导致布线延迟太大。一个可能的解决方法是能否从该SRL中“拽出”一个触发器,也就是将SRL变为FF+SRL,此时的SRL深度为原始SRL深度减1。这时可利用属性SRL_STAGES_TO_REG_INPUT。具体使用方法如图4所示。这里get_cells命令的对象为图3中的SRL。

图4
图4

该属性在opt_design阶段生效,因此如果其作为约束,相应的约束文件应作为Hook Script显示在tcl.pre里,如图5所示。

图5
图5

最终布局布线后的电路就变为如图6所示情形。

图6
图6

此外,如果希望从SRL中“拽出”一个触发器与最后一级触发器相连,可利用属性SRL_STAGES_TO_REG_OUTPUT。

结论

SRL_STAGES_TO_REG_INPUT可从SRL中向其输入方向“拽出”一个触发器

SRL_STAGES_TO_REG_OUTPUT可从SRL中向其输出方向“拽出”一个触发器

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

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

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

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

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