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

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

3天内不再提示

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

FPGA之家 来源:FPGA之家 2023-05-08 15:15 次阅读

UltraRAM 原语(也称为 URAM)可在 Xilinx UltraScale + 架构中使用,而且可用来高效地实现大容量深存储器。由于大小和性能方面的要求,通常这类存储器不适合使用其他存储器资源来实现。URAM 原语具有实现高速内存访问所需的可配置流水线属性和专用级联连接。流水线阶段和级联连接是使用原语上的属性来配置的。

本篇博文描述的是通过将 URAM 矩阵配置为使用流水线寄存器来实现最佳时序性能的方法。

流水线需求

通过在矩阵结构中连接多个 URAM,从可用的 URAM 原语实现大容量深存储器。

矩阵由 URAM 的行和列组成。一列中的 URAM 使用内置级联电路级联,且多列 URAM 通过外部级联电路互连,这被称为水平级联电路。

作为示例,图 1 示出了针对 64K 深 x 72 位宽存储器的 4x4 URAM 矩阵的矩阵分解。

0c5d167a-ecd9-11ed-90ce-dac502259ad0.png

4 行 4 列的 URAM 矩阵(可实现 64K 深 72 位宽的存储器)

在没有流水线设计的情况下,深度联结构会导致内存访问出现大的时钟输出延迟。例如,在默认情况下,上述 URAM 矩阵可以达到约 350 MHz。要以更快的速度访问内存,应插入流水线。如果在网表中指定了一定数量的输出时延,Vivado Synthesis 即会自动实现此功能。

指定RTL设计中的流水线

有两种方法可以用来指定 RTL 设计中的流水线的用途,可以通过使用 XPM 流程,也可以通过行为 RTL 来推断内存。

如果 RTL 设计通过 XPM 流程来创建 URAM 内存,则用户可以将对流水线的要求指定为 XPM 实例的参数。参数“READ_LATENCY_A/B”用于捕获内存的时延要求。

可用的流水线阶段数是 LATENCY 值减去 2。例如,如果 Latency 设置为 10,则允许 8 个寄存器阶段用于流水线操作。另外两个寄存器可用来创建 URAM 本身。

0c99ef5a-ecd9-11ed-90ce-dac502259ad0.png

使用 XPM 设置流水线设计

如果用户使用 Vivado 用户指南中提供的模板来编写 RTL,并通过此方法来创建 URAM,那么,他们可以在 URAM 的输出时创建尽可能多的寄存器阶段。唯一的要求是,与数据一起,流水线寄存器的启用也需要流水线化。

图 3 显示数据和流水线的启用。

0cb21bf2-ecd9-11ed-90ce-dac502259ad0.png

URAM 块输出时的数据及流水线启用规范

图 4 示出了 RTL 级 RAM 流水线设计示例。

0cc41d66-ecd9-11ed-90ce-dac502259ad0.jpg

用来指定数据和流水线启用的 verilog 模板

分析日志文件:

Vivado Synthesis 根据上下文环境和场景发布与 URAM 流水线相关的不同消息。下表说明要在 vivado.log 文件中查找的一些消息和要采取的相应操作。

请注意,推荐的流水线阶段基于可实现最高性能(800 MHz+)的完全流水线化的矩阵。此建议不受实际时序约束的限制。

0d0131e2-ecd9-11ed-90ce-dac502259ad0.jpg

时间性能估计:

下表说明流水线寄存器的数量与可实现的最大估计频率之间的关系。

请注意,实际的时间数仍将取决于最终地点和路线结果。

下列数字基于 speedgrade-2 Virtex UltraScale+ 部件以及我们使用 4x4 矩阵实现的 64K x 72 URAM 示例工程。

0d452582-ecd9-11ed-90ce-dac502259ad0.jpg

数据路径延迟具有以下一个或多个组件。

Tco = 1.38 ns, Clk To CascadeOut on URAM

Tco = 0.82 ns, Clk To CascadeOut on URAM with OREG=true

Tco = 0.726 ns, Clk to Dataout on URAM with OREG=true, CASCADE_ORDER = LAST

URAM -> URAM级联延迟= 0.2 ns

URAM -> LUT信号网络延迟= 0.3 ns

LUT传输延迟= 0.125 ns

LUT -> LUT信号网络延迟= 0.2 ns

LUT5 -> FF延迟= 0.05

结 论

URAM 原语是创建容量非常大的 RAM 结构的有效方法。它们被设置为易于级联以便在您的设计中创建容量更大的 RAM。

但是,太多这类结构级联在一起可能会通过 RAM 产生很大的延迟。从长远来看,花时间让您的 RAM 完全流水线化会带来很多好处。

URAM 原语是创建容量非常大的 RAM 结构的有效方法。它们被设置为易于级联以便在您的设计中创建容量更大的 RAM。

但是,太多这类结构级联在一起可能会通过 RAM 产生很大的延迟。从长远来看,花时间让您的 RAM 完全流水线化会带来很多好处。

审核编辑:汤梓红

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

    关注

    38

    文章

    7160

    浏览量

    162137
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119473
  • 流水线
    +关注

    关注

    0

    文章

    110

    浏览量

    25003
  • RTL
    RTL
    +关注

    关注

    1

    文章

    378

    浏览量

    59103
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65257

原文标题:干货 | 如何通过 Vivado Synthesis 中的 URAM 矩阵自动流水线化来实现最佳时序性能

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

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

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

    自动化流水线电子看板系统

    与过去工厂管理模式相比,现代企业更注重品质与效率特别是服务制造业。目前在同行业里普遍推行的理念是智能工厂( Smartfactory),其解决方案主要以智能自动化流水线 电子看板系统 实现
    发表于 10-05 20:03

    FPGA流水线设计

    处理速度)。第二 什么时候用流水线设计使用流水线一般是时序比较紧张,对电路工作频率较高的时候。典型情况如下:1)功能模块之间的流水线,用乒乓 buffer
    发表于 10-26 14:38

    ARM架构系列流水线设计

    什么是ARM流水线流水线(Pipelining)是 RISC(精简指令集)处理器用来执行指令的机制,通过获取指令加速执行,而其他指令同时被解码和执行。这反过来又允许内存系统和处理器连
    发表于 04-11 17:23

    现代RISC流水线技术

    流水线技术是提高系统吞吐率的一项强大的实现技术,并且不需要大量重复设置硬件。20世界60年代早期的一些高端机器第一次采用了流水线技术。第一个采用指令
    发表于 03-01 17:52

    什么是流水线技术

    什么是流水线技术 流水线技术
    发表于 02-04 10:21 3746次阅读

    流水线中的相关培训教程[4]

    流水线中的相关培训教程[4] 下面讨论如何利用编译器技术来减少这种必须的暂停,然后论述如何在流水线实现数据相关检测和定向。
    发表于 04-13 16:09 4378次阅读

    浅谈GPU的渲染流水线实现

    颜色表示了不同阶段的可配置性或可编程性:绿色表示该流水线阶段是完全可编程控制的,黄色表示该流水线阶段可以配置但不是可编程的,蓝色表示该流水线阶段是由GPU固定实现的,开发者没有任何控制
    发表于 05-04 09:16 3654次阅读
    浅谈GPU的渲染<b class='flag-5'>流水线</b><b class='flag-5'>实现</b>

    Verilog基本功之:流水线设计Pipeline Design

    ,并暂存中间数据的方法。 目的是将一个大操作分解成若干的小操作,每一步小操作的时间较小,所以能提高频率,各小操作能并行 执行,所以能提高数据吞吐率(提高处理速度)。 二. 什么时候用流水线设计 使用流水线一般是时序比较紧张
    发表于 09-25 17:12 4568次阅读

    如何利用乐高积木制作成自动流水线

    自动流水线是一个统称,包括组装流水线、皮带流水线、链板线、插件线等等,主要通过自动化系统来操作
    的头像 发表于 05-22 06:06 6425次阅读

    各种流水线特点及常见流水线设计方式

    按照流水线的输送方式大体可以分为:皮带流水装配线、板链线、倍速链、插件线、网带线、悬挂线及滚筒流水线这七类流水线
    的头像 发表于 07-05 11:12 6395次阅读
    各种<b class='flag-5'>流水线</b>特点及常见<b class='flag-5'>流水线</b>设计方式

    嵌入式_流水线

    ,每个子过程由专门的功能部件来实现。• 把多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其他的子过程并行进行。流水线中的每个子过程及其功能部件称为流水线的级或段,
    发表于 10-20 20:51 6次下载
    嵌入式_<b class='flag-5'>流水线</b>

    自动流水线矩阵式键盘的功能说明

    下面为大家介绍自动流水线控制系统矩阵式键盘的使用和功能。 键盘是自动流水线计算机系统中Z常用的输入设备,用户可以
    发表于 04-19 14:33 893次阅读

    CPU流水线的问题

    1989 年推出的 i486 处理器引入了五级流水线。这时,在 CPU 中不再仅运行一条指令,每一级流水线在同一时刻都运行着不同的指令。这个设计使得 i486 比同频率的 386 处理器性能提升了不止一倍。
    的头像 发表于 09-22 10:04 1388次阅读

    什么是流水线 Jenkins的流水线详解

    jenkins 有 2 种流水线分为声明式流水线与脚本化流水线,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkin
    发表于 05-17 16:57 687次阅读