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

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

3天内不再提示

如何让级联URAM获得最佳时序性能

CHANBAEK 来源:FpgaHome 作者:太阳井的小鱼儿 2023-09-26 11:34 次阅读

1. 前言

在上一篇文章里《如何使用UltraScale+芯片中UltraRam资源》,我们向大家介绍了在RTL设计中使用URAM的方法。其中,我们推荐大家使用Xilinx参数化宏(XPM)的方法来调用URAM。通过XPM调用的URAM的方法如下:

在模板中选择“Verilog”->“Xilinx Parameterized Macros (XPM)”->“XPM”->“XPM_MEMORY” ->“Simple Dual Port Ram”

图片

用户必须在MEMORY_PRIMITIVE类属上指定值 ”ultra”,以明确指示vivado 综合使用 UltraRam。

那么问题来了,还有个参数“READ_LATENCY_A/B”该设多少?这个参数影响URAM的读操作需要滞后多少时钟周期才能将读数据输出。

图片

2. 级联URAM须知

单个URAM器件的数据位宽为72bit,地址深度为4096,存储容量为288Kb。因此,当用户需要大于288Kb存储容量空间时,需要级联多个URAM器件。在Kintex UltraScale+和Zynq UltraScale+器件中,级联得到的RAM阵列可高达36Mb,在Virtex UltraScale+系列中,所有UltraRAM列都可通过光纤路由连接在一起,在最大器件中可构成容量达360Mb的存储器阵列。

下图展示了一个4 x 4的URAM阵列级联结构,在纵向的一列中,每个URAM使用内置级联电路进行级联。在横向多列之间,URAM通过外部级联电路进行互连,即水平级联电路。

图片

但是,URAM和Bram (block ram)不太一样。在工作时钟频率不变情况下,深度级联URAM阵列会使得数据输出延迟越来越大,因为需要在级联的URAM模块中插入多级流水线,以保证模块能时序收敛。

同样,想保证输出延迟固定,级联越多的URAM会导致整个级联的URAM可工作的时钟频率越低。

因此,我们需要谨慎的设置“READ_LATENCY_A/B”参数,来保证级联的URAM模块能按自己的需求时序收敛并正常地工作。

注意: 如果使用XPM来调用URAM模块,则URAM内部可用的流水线阶数是设定的LATENCY值减去2。例如,如果“READ_LATENCY_A/B”参数设为10,则允许8个寄存器阶段用于流水线操作。

3. URAM性能估计

从上文,我们知道,LATENCY值的设置取决于URAM级联的深度、工作频率。下表以4x4的URAM矩阵为例,总结了流水线级数与可实现的最大工作频率之间的关系。

注: 实际的延迟仍取决于设计中最终的布局布线结果。

注: 下表是基于Virtex UltraScale+ speed -2器件为基础给的结果。

注: 该级联的URAM阵列最大只支持8级流水线**。**

注: LATENCY取值为表中流水级数值加2。

图片

4. 检查设计是否达到最优时序

第3节中的表只是一个参考,让大家大致了解级联的流水线级数、输出延迟、工作频率之间的关系。如果我已经完成了设计,指定好了“READ_LATENCY_A/B”参数的值,如何确定该延迟值是否设置的最优呢?

Vivado工具是提供了相应的综合报告来告知工程师级联的URAM模块是否能到达最优时序。工程师在Vivado的GUI里,选中“Messages”一栏,查找有关URAM的提示。

图片

一般提示如下,对应的解决方法附在其后:

图片

相信经过这两篇文章总结,大家在如何使用URAM问题上应该不会有太多的疑惑。

5.总结

本文向大家介绍了如何通过XPM调用URAM,并让级联URAM获得最佳时序性能,如果觉得我们原创或引用的文章写的还不错,帮忙点赞和推荐吧,谢谢您的关注。

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

    关注

    452

    文章

    50185

    浏览量

    420689
  • Xilinx
    +关注

    关注

    71

    文章

    2155

    浏览量

    120837
  • RTL
    RTL
    +关注

    关注

    1

    文章

    385

    浏览量

    59657
  • 时序
    +关注

    关注

    5

    文章

    384

    浏览量

    37246
  • UltraScale
    +关注

    关注

    0

    文章

    116

    浏览量

    31437
收藏 人收藏

    评论

    相关推荐

    使用流水线寄存器实现最佳时序性能方案

    本篇博文描述的是通过将 URAM 矩阵配置为使用流水线寄存器来实现最佳时序性能的方法
    的头像 发表于 07-26 16:01 6329次阅读
    使用流水线寄存器实现<b class='flag-5'>最佳</b><b class='flag-5'>时序</b><b class='flag-5'>性能</b>方案

    应该使用哪种策略来获得最佳时序收敛?

    您好,如果我想为我的设计获得最佳时序收敛,我应该使用什么实施策略?例如,如果我想改善设置和保持的松弛度,我应该选择哪种最佳策略?以上来自于谷歌翻译以下为原文Hello,If i wan
    发表于 11-05 11:40

    URAM和BRAM的区别是什么

    URAM 目前只支持原语、XPM_MEMORY 和 RTL 代码的方式。相比而言,XPM_MEMORY 的方式更为快捷,也是Xilinx建议的方式。  级联方式  BRAM和URAM都可级联
    发表于 12-23 16:57

    URAM和BRAM的区别是什么

    URAM和BRAM有什么区别
    发表于 02-23 07:52

    如何才能获得上佳的噪声性能

    如何才能获得上佳的噪声性能?如何选择最佳的运算放大器?
    发表于 04-12 06:54

    什么是调整电路板以获得最佳性能最佳方式?

    ,并且 (2) 感觉我正在修补一个潜在的问题而不是修复它. 所以,问题是,什么是调整电路板以获得最佳性能最佳方式?天线向上、向下、侧向?(是的,我已经阅读了有关方形弯头天线的耦合线程
    发表于 04-12 06:16

    级联码,什么是级联

    级联码,什么是级联级联码:要想进一步提高编码的性能,必须加长编码。对于线性分组码就是加长n,对卷积码就是加长K。但很快
    发表于 04-03 12:11 3153次阅读

    FPGA时序收敛你的产品达到最佳性能

    FPGA时序收敛你的产品达到最佳性能
    发表于 04-10 11:38 18次下载
    FPGA<b class='flag-5'>时序</b>收敛<b class='flag-5'>让</b>你的产品达到<b class='flag-5'>最佳</b><b class='flag-5'>性能</b>!

    使用Intel图形性能分析器从游戏开发中获得最佳性能

    使用英特尔®图形性能分析器,从游戏开发中获得最佳性能
    的头像 发表于 11-08 06:49 2579次阅读

    BRAM和URAM重要的片上存储资源,两者有显著的区别

    BRAM和URAM都可级联,只是级联方式不同。在使用BRAM时,我们只需要设定宽度和深度,并根据时钟频率合理选择Latency,也就是选择是否需要使用BRAM自带的输出寄存器或Slice中的寄存器
    的头像 发表于 03-06 15:44 2.8w次阅读
    BRAM和<b class='flag-5'>URAM</b>重要的片上存储资源,两者有显著的区别

    基于URAM原语创建容量更大的RAM

    UltraRAM 原语(也称为 URAM)可在 Xilinx UltraScale +™ 架构中使用,而且可用来高效地实现大容量深存储器。
    发表于 07-13 11:08 7321次阅读
    基于<b class='flag-5'>URAM</b>原语创建容量更大的RAM

    如何调整MLX75308的参数以获得最佳性能的系统

    如何调整MLX75308的参数以获得最佳性能的系统 MLX75308雨光传感器接口芯片是一种非常灵活的芯片,具有许多要调整的寄存器。通过所有这些寄存器进行调整,可能很难找到正确的设置来获得
    的头像 发表于 05-06 13:56 3082次阅读
    如何调整MLX75308的参数以<b class='flag-5'>获得</b><b class='flag-5'>最佳</b><b class='flag-5'>性能</b>的系统

    URAM和BRAM有哪些区别

    无论是7系列FPGA、UltraScale还是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就是我们所说的URAM。BRAM和URAM都是重要的片上存储资源,但两者还是有些显著
    的头像 发表于 07-25 17:54 5650次阅读
    <b class='flag-5'>URAM</b>和BRAM有哪些区别

    URAM和BRAM有什么区别

    无论是7系列FPGA、UltraScale还是UltraScale Plus系列FPGA,都包含Block RAM(BRAM),但只有UltraScale Plus芯片有UltraRAM也就是我们所说的URAM。BRAM和URAM都是重要的片上存储资源,但两者还是有些显著
    发表于 01-27 06:55 12次下载
    <b class='flag-5'>URAM</b>和BRAM有什么区别

    如何通过Vivado Synthesis中的URAM矩阵自动流水线化来实现最佳时序性能

    UltraRAM 原语(也称为 URAM)可在 Xilinx UltraScale + 架构中使用,而且可用来高效地实现大容量深存储器。由于大小和性能方面的要求,通常这类存储器不适合使用其他存储器
    的头像 发表于 05-08 15:15 1584次阅读
    如何通过Vivado Synthesis中的<b class='flag-5'>URAM</b>矩阵自动流水线化来实现<b class='flag-5'>最佳</b><b class='flag-5'>时序</b><b class='flag-5'>性能</b>