0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何运用Retiming优化Block RAM的使用

FPGA技术驿站 来源:Copyright @ FPGA技术驿站 2024-04-18 10:05 次阅读

对于逻辑级数较大的路径,常用的时序收敛的方法之一就是采用Retiming(中文翻译为重定时)。Retiming到底是怎么回事呢?我们可以通过下图理解。图中通过搬移触发器的位置减小了关键路径的逻辑级数。无论是把触发器向前搬移还是向后搬移,搬移后整个路径的Latency和搬移前的Latency保持一致。可以看到Retiming的前提是相邻路径有可供搬移的触发器,换言之,相邻路径的时序裕量较为“富余”,从这些“富余”中拿出一部分给时序较为紧张的路径。这样,时序紧张的路径其逻辑级数降低了,而相邻的时序“富余”的路径逻辑级数增加了,达到整体逻辑级数的平衡。

045b40bc-fd24-11ee-a297-92fbcf53809c.jpg

Vivado提供了多种方法实现Retiming。在综合选项设置界面提供了-retiming,如下图所示。在这里,它是一个全局选项,作用于设计中的所有模块。除此之外,Vivado还提供了模块级综合技术,可针对关键模块使用Retiming,此时需要借助属性BLOCK_SYNTH.RETIMING实现。显然,这个综合属性是针对指定模块的,所以这是一种更精细的设置方法。实践证明往往全局选项-retiming加上模块级Retiming能获得更好的效果。

04f17f82-fd24-11ee-a297-92fbcf53809c.jpg

上述两种方法人工干预度都较低,如果用户能够判定哪些路径上的触发器可搬移以改善相邻路径的时序,那么就可以使用Vivado提供的综合属性RETIMING_BACKWARD或RETIMING_FORWARD,直接将其作用于指定的触发器。另外,在PSIP阶段还可以使用属性PSIP_RETIMING_BACKWARD或PSIP_RETIMING_FORWARD实现Retiming。对用户而言,这一过程还是有一定难度的,好在Vivado提供了另外一种方式就是QoR建议,有时该报告就会包含Retiming的相关设置,如下图所示。这样用户只需将该建议添加到工程中直接使用即可。

04ff8dfc-fd24-11ee-a297-92fbcf53809c.jpg

0511fe4c-fd24-11ee-a297-92fbcf53809c.jpg

此外,phys_opt_design还提供了-directive AddRetime,既可在布局之后执行也可在布线之后执行。本质是是因为phys_opt_design提供了选项-retime。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RAM
    RAM
    +关注

    关注

    7

    文章

    1322

    浏览量

    113718
  • 触发器
    +关注

    关注

    14

    文章

    1694

    浏览量

    60424
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65127

原文标题:如何对Block RAM使用Retiming(1)

文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FIFOPrimitive在Block RAM上有什么优势?

    我今天正在实现FIFO,我想知道FIFOPrimitive和Block RAM实现之间的区别是什么。根据我的理解,它们使用相同的底层RAM原语,但FIFOPrimitive不能有不同的R / W方面
    发表于 02-27 14:16

    Block RAM的功耗始终为0mW

    大家好。我设计并模拟了简单的RTL with Block RAMin Kintex 7。在合成和实现之后,vivado用于功率估计。当我使用分布式RAM时,会正确报告每个RAM的功耗。但是
    发表于 03-13 14:21

    请帮助我解决Block RAM问题?

    ,维克多Rdp_fifo3.v 3 KB以上来自于谷歌翻译以下为原文I am trying to use the block ram on Xilinx Spartan 3AN (XC3S400AN
    发表于 06-04 09:08

    创建Block RAM IP不起作用

    DCM_SP为spartan 3E创建50Mhz DCM时钟的IP,并且它可以工作。我不确定为什么当我尝试创建Block RAM IP时它不起作用。我真的很感激一些帮助。欢迎来到Xilinx CORE
    发表于 06-05 13:39

    请问9K Block RAM设计中那些2 9K Block RAM在哪里?

    嗨,我想为我的设计使用比特流加密,我遇到了一个关于9K Block RAM的问题,在答案记录39999中描述了r然后我决定在我的设计中删除所有9k Block RAM并将它们更改为16
    发表于 06-06 07:23

    SPARTAN-3AN怎么使用标准JTAG命令读取Block RAM内容

    嗨,为了调试系统,我需要在系统运行时动态读取Block-RAM内容....我只有JTAG线,我不能在FPGA中制作一个特定的块用于读取内容并通过JTAG等发送它们。我可以使用ISMP 13.2作为
    发表于 06-11 07:36

    用INIT_XX初始化Block RAM的方法有哪些?

    嗨,我正在使用“RAMB16_S36”原始实现一个512内存宽度的Block Ram。我通读了XAPP463用户指南,但我显然不了解初始化属性。INIT_00是否对应于[255:0] Block
    发表于 07-22 08:10

    为什么Spartan 6 block ram有2个时钟延迟?

    我正在运行Spartan 6 block ram的模拟。时钟速度为100Mhz。块ram的写作运作良好。我可以在内存中看到数据。但是当我读取数据时,输出有2个时钟的延迟。在块ram用户
    发表于 07-25 08:15

    请问分布式RAMBlock RAM的芯片中有menexternalmemory或内存吗?

    嗨!我有一个关于分布式RAMBlock RAM的问题。芯片中有menexternalmemory或内存吗?请详细告诉我。谢谢!
    发表于 11-07 09:07

    怎么使用virtex 5上的Block RAM来实现延迟线?

    我正在尝试使用virtex 5上的Block RAM来实现延迟线。延迟线需要将数据延迟一个时钟周期。这可能使用Block RAM吗?我尝试使用简单的双端口
    发表于 06-18 15:40

    如何使用Block RAM及利用其功能和性能优势

    了解新的Block RAM级联功能,如何使用它,以及如何利用其功能和性能优势。
    的头像 发表于 11-23 06:56 4534次阅读

    xilinx 7系列FPGA里面的Block RAM

    些大材小用,因此xilinx公司在其FPGA内部专门集成了很多存储器模块,称作Block RAM,其犹如slice海洋当中的一颗颗明珠,专门实现数据暂存功能,且每个时钟区域都布置了若干个Block
    的头像 发表于 11-23 14:08 7469次阅读
    xilinx 7系列FPGA里面的<b class='flag-5'>Block</b> <b class='flag-5'>RAM</b>

    关于Block RAM的寄存器输出

    关于Block RAM的寄存器输出,我们在《通过RTL改善时序的技巧之Block RAM的输出》中介绍过。如果我们在时序报告中关键路径上看到这样一条信息: 在第一级的C2Q delay
    的头像 发表于 03-26 15:50 1617次阅读
    关于<b class='flag-5'>Block</b> <b class='flag-5'>RAM</b>的寄存器输出

    FPGA中block ram的特殊用法列举

    在FPGA中block ram是很常见的硬核资源,合理的利用这些硬件资源一定程度上可以优化整个设计,节约资源利用率,充分开发FPGA芯片中的潜在价值,本文结合安路科技FPGA做简单总结,说明基本原理。
    的头像 发表于 12-24 14:28 959次阅读

    超高数据流通量FPGA新品类中的Block RAM级联架构

    本文主要讲述了Speedster7t FPGA的片上SRAM,也就是Block RAM针对传统的结构所做出的一些优化
    的头像 发表于 07-13 17:24 351次阅读
    超高数据流通量FPGA新品类中的<b class='flag-5'>Block</b> <b class='flag-5'>RAM</b>级联架构