如何在 Vivado 中查询 LUTRAM 的 BEL 属性和 LOC 属性?

Vivado ECO实操:不重新综合直接修改属性生成bit的完整流程 在FPGA开发中,时序约束和布局布线是决定项目进度的关键环节。当设计已经完成综合及实现,却发现某个IO电平标准、引脚位置或时序路径需要微调时,传统的修改方法往往需要重新跑完整流程,耗时数小时。ECO(工程变更指令)技术允许在完全不改变逻辑功能的情况下,直接修改属性并生成bit文件,大幅缩短迭代周期。本文以Vivado为例,介绍两种典型的ECO实操路径:一是修改XDC约束后仅重跑实现;二是在已布局布线的设计上通过Tcl命令直接set_property并写bit。同时覆盖DRC检查、时序报告对比以及回退机制,帮 阅读详情
关注、星标公众号,精彩内容每日送达
来源:网络素材

几乎所有 AMD 可编程器件都具有 CLB 资源,可以在 LUT 中实现小型存储器。

在网表中,这些资源被称为 LUTRAM 或分布式 RAM。这些 LUTRAM 不像 Vivado 中的其他单元那样遵循典型结构。本文说明了推断或例化的 LUTRAM 的结构。 

在相应架构的《库指南》中列出了可用的各种类型的 LUTRAM 原语。以下提供了一些参考资料。

  • Versal Premium - https://docs.amd.com/r/en-US/ug1485-versal-architecture-premium-series-libraries/RAM128X1D

  • Versal Prime - https://docs.amd.com/r/en-US/ug1344-versal-architecture-libraries/RAM128X1D

  • UltraScale+ 及更低版本 - https://docs.amd.com/r/en-US/ug974-vivado-ultrascale-libraries/RAM128X1D

Vivado 中的网表包含端口、信号线、单元(层级和叶级)。

叶节点单元是将布局在器件物理位置的最低单位级单元。层级单元是一个封装文件,它是叶节点单元的集合。典型的网表由层级单元与叶节点单元混合组成。

下图显示了 Versal 器件的 LUTRAM 原语:

6ab2f707b375149b12eb27519eef8f84.png

下图显示了 7 系列和 UltraScale 器件的 LUTRAM 原语:

b6f0353d36f0c70b65dc00c26071ba81.png

Vivado 中的 LUTRAM 与典型网表的不同之处如下所述:

它由 Versal 器件的 3 个单元组成:

  • 宏单元

  • 层级单元

  • 叶节点单元

对于 UltraScale+ 和 7 系列,它由 2 个单元组成 

  • 宏单元

  • 叶节点单元

宏单元是将由综合工具推断或由用户例化的原语。LUTRAM 宏单元内有一个层级单元,该层级单元包含一个叶节点单元,它是 LUTRAM 的单位级元素。 

LUTRAM 以上述方式建模,因为 Vivado 必须支持器件上的多种存储器配置使用相同 CLB 资源。

注:如上图所示,对于 7 系列和 UltraScale+ 器件中的 LUTRAM 原语,不存在层级单元。

当我们查询这些不同单元的 BEL 和 LOC 属性时,该工具仅返回宏单元和叶节点单元的这类属性。

3b26d0e4a79165f7bcfe6e52dcd7f01e.png

在宏级别,即使以下原语单元分布在多个 SLICE 上,也会返回单一值。

这是默认行为,不应该作为查询 LUTRAM 的首选方式。建议的方式即对叶节点单元运行“get_properties”,如上例所示。

要返回宏,请使用以下命令: 

set macro [get_cells -hierarchical -filter { PRIMITIVE_TYPE =~ CLB.LUTRAM.* && PRIMITIVE_LEVEL == MACRO } *mem_reg_384_447_56_56*]
mem_reg_384_447_56_56

要返回层级单元,请使用以下命令:

set hierarchical [get_cells -filter { !IS_SEQUENTIAL } $macro/*]
mem_reg_384_447_56_56/SP mem_reg_384_447_56_56/VCC

要返回叶节点单元,请使用以下命令:

set leaf [get_cells -filter { IS_SEQUENTIAL } $macro/*/*]
mem_reg_384_447_56_56/SP/RAMS64_INST

60d9ae75434383a1be7d0af713fde6e0.png

文章来源:AMD开发者社区

18bf3093ed3c263212d5b3bdd9a75d9d.jpeg

想要了解FPGA吗?这里有实例分享,ZYNQ设计,关注我们的公众号,探索

关于FPGA中的异步FIFO始终无法用bram而只能用lut ram的问题 关于FPGA中的异步FIFO始终无法用bram而只能用lut ram的问题 ······最近在写异步FIFO,参考别人的代码后,在FPGA中复现时发现总是无法生成期望的bram,而是花费大量的lut来形成lut ram,造成lut的浪费。 ······首先提一下,我们知道对于Xilinx 的FPGA在定义的memory之前,可以使用(参考ug901): (* ram_style="block" *) reg [data_size-1:0] myram [2**addr_size-1:0]; (* ram 阅读详情

相关推荐

FPGA存储资源怎么选?一张图看懂LUTRAM、BRAM和URAM的区别与选型指南

本文深入解析Xilinx Ultrascale系列FPGA中LUTRAM、BRAM和URAM三大存储资源的特性差异与选型策略。通过对比容量、延迟、功耗等关键参数,结合实时信号处理、AI加速等典型应用场景,提供量化选型模型和混合架构设计指南,帮助开发者优化存储资源使用效率。特别针对URAM在大容量低延迟场景中的优势进行重点剖析。

weixin_29212429的博客 266

FPGA资源利用率报告中的LUT和LUTRAM有什么区别

通过Report Utilization查看资源利用率报告时,会生成如下图所示的一个表格。在这个表格中Resource对应的列会有LUT和LUTRAM,那么两者到底有什么区别呢?是包含关系吗?不过,可以断定的是LUTRAM是指将LUT用做分布式RAM/ROM,换句话说是指SLICEM中的LUT被用做了存储单元,那么这里的存储单元是否包含移位寄存器(SRL)呢? 为了验证我们看如下一个设计。这...

坚持 1万+

华东师范大学2020机试题解

1.统计卡牌的值 #include<iostream> #include<string> #include<vector> //#include<algorithm> using namespace std; int main() { int n; cin>>n; int answer=0; for(int i=0;i<n;++i) { string str; ci

qq_42254342的博客 1902

vivado里的LUT、LUTRAM、FF、BRAM、DSP、IO、BUFG、MMCM资源介绍

vivado里的LUT、LUTRAM、FF、BRAM、DSP、IO、BUFG、MMCM资源介绍

m0_66360845的博客 1万+

Unity游戏Mono注入实战:从反编译到功能扩展

本文详细介绍了Unity游戏Mono注入的完整实战流程,从使用dnSpy反编译游戏核心逻辑,到编写自定义C#功能DLL,再到利用SharpMonoInjector进行动态注入。文章深入讲解了如何通过Harmony库拦截修改游戏方法,并介绍了使用MelonLoader框架和UnityExplorer进行高级模组开发与调试,最终通过一个游戏对象透视(ESP)案例演示了功能扩展的实现。

weixin_29018335的博客 459

微信小程序真机HTTPS证书链失效排查与修复指南

HTTPS证书信任链是保障Web通信安全的基础机制,其核心在于客户端能否通过服务器提供的证书及其上级签发者,逐级回溯至自身预置的可信根证书。在微信小程序场景中,由于客户端不复用系统根证书库,而是采用固化、精简且更新滞后的自研CA白名单,导致大量符合浏览器标准的证书(如Let’s Encrypt新版ISRG Root X1、TrustAsia等)在真机环境下触发net::ERR_CERT_AUTHORITY_INVALID错误。该问题本质是证书链断裂或签名算法/密钥长度不合规,而非域名配置或CORS策略异常。

weixin_33935636的博客 680

LUT查找表实现各种RAM及ROM原理精讲

在文章《LUT是如何实现千万种逻辑结构的》里面我们讲过了LUT的原理,实现逻辑函数时,相当于一个ROM将结果预存,然后把通过输入信号当作地址对预存的结果进行寻址。因此同样借助LUT加几个端口,就可以实现RAM。SLICEM里面的LUT就可以用来实现RAM资源。我们接下来讲几个概念。 (1)CLB CLB:可配置逻辑单元(Configurable Logic Block,CLB)在FPGA中最为...

一个早起的程序员 1万+

国密套件ECC-SM2-SM4-CBC-SM3和ECDHE-SM2-WITH-SM4-SM3

双方交换各自的公钥,最后A计算点(x1,y1) = d1Q2,B计算点(x2,y2) = d2Q1,由于椭圆曲线上是可以满足乘法交换和结合律,所以 d1Q2 = d1d2G = d2d1G = d2Q1 ,因此双方的 x 坐标是一样的,所以它是共享密钥,也就是会话密钥。4、客户端和服务端分别使用工作密钥,计算主密钥,客户端随机数,服务端随机数,字符串常量"key expansion",经PRF计算生成工作密钥。工作密钥包括加密密钥和校验密钥,具体密钥长度由选择的密码算法决定。客户端支持的压缩算法列表。

Java学习笔记 3784

从结构上浅谈FPGA实现逻辑的原理

FPGA是啥?你要是在百度上一查,多数会搜到什么 Field Programmable Gate Array,现场可编程门整列嘛,但是这句话对咱们新手理解FPGA起到的作用十分有限,其实不单是新手朋友,就连我这个玩了几个月的FPGAer也不求甚解,我脑海里隐隐约约的印象就是: 这个概念伴随了我很久,知道我看了一本关于FPGA结构的书,虽然是走马观花浏览了一遍,但还是给了我一些启发,今天特写一篇博客记录一下我的一些感悟。

weixin_54358182的博客 3063

Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具

本文内容参考Joseph Perl 的线上会议,视频详情可见于,该视频会议内容主要介绍Topas功能、软件架构、工作流程、参数设定、物理模型、具体案例等,对TOPAS的基本入门使用方法以及使用规定作出阐述。

fy方的博客 7606

【车载以太网】【AVB/TSN】IEEE802.1Qav队列及转发协议

目录 一、概述 二、优先级排队算法 三、基于信用的流量整形算法 一、概述 IEEE 802.1Qav 队列及转发协议(Qav)针对不同数据流选择不同的传输选择算法来保障对时间敏感的 AV 数据流的实时传输。为了避免传统的异步以太网数据流量与 AVB 流量之间对网络资源的竞争,AVB 交换机内使用优先级排队算法和基于信用的流量整形算法实现数据流的调度。 二、优先级排队算法 优先级排队算法主要用于传统以太网数据流(BE, Best Effort)的调度传输,BE 流通过基于优先级...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 4688

LUTram

LUTram本质上是一种特殊的LUT(Look-Up Table,查找表),它除了具有LUT的逻辑函数实现能力外,还增加了可编程存储器功能。这意味着LUTram不仅可以实现各种逻辑函数,如与、或、非、异或等,还可以用于存储数据,类似于RAM的作用。综上所述,LUTram是FPGA中的一种重要存储单元,它结合了查找表和随机访问存储器的特点,既能够实现复杂的逻辑函数又能够存储数据。数据存储:对于需要存储少量数据的应用,如状态机、计数器或简单的数据缓存等,LUTram可以作为一种高效的存储解决方案。

weixin_41230430的博客 734

基于Blender的AI插件——2D图片生成3D模型

只需5分钟即可从图片到可编辑3D模型,支持Blender全版本兼容。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 2576

Vivado综合生成BRAM及与LUTRAM的区别

使用vivado中的BRAM可以通过例化Block Memory Generator这一ip并进行相关的设定。 另外可以通过直接编写符合BRAM规范的代码,借助综合工具直接将其综合为BRAM。这时需要通过(*ram_style="block"*)对array进行修饰。 下面给出一种看似可以综合为BRAM的示例。 module LUTRAM #( parameter ADDR_WIDTH = 32, parameter DATA_WIDTH = 32, ..

cc__cc__的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【FPGA开发】LUTRAM与LUT资源关系详解

LUTRAM不是与LUT完全独立的资源,而是LUT的一种特殊功能配置。当设计需要小型、低延迟的RAM时,综合工具会将部分LUT配置为LUTRAM模式。在进行FPGA设计和资源规划时,理解LUTRAM与LUT的关系非常重要,这有助于做出更合理的架构决策,优化设计的性能和资源利用率。简单来说,LUTRAM是通过将LUT重新配置为RAM模式来实现的小型分布式存储器。用一个形象的比喻:如果将LUT视为"砖头",那么LUTRAM就是用这些"砖头"搭建起来的"小型存储器"。

kanhao100的博客 1731

介绍SLICEM里的LUT如何形成RAM资源

LUT的原理,实现逻辑函数时,相当于一个ROM将结果预存,然后把通过输入信号当作地址对预存的结果进行寻址。因此同样借助LUT加几个端口,就可以实现RAM。SLICEM里面的LUT就可以用来实现RAM资源。 二. 原理介绍 SLICEM里面的LUT跟SLICEL里面的LUT相比多了DI2,WA[6:1],CLK,WE这几个端口。做RAM用的时候,其中DI1,DI2是写数据输入端口,O5,O6同样是数据输出端口,支持一次性两bit或者单bit读写。A[6:1]为读地址,WA[6:1]为写地址,WE为写使用,

yundanfengqing_nuc的专栏 1374

Vivado 中的硬件资源介绍:LUT、LUTRAM、FF、BRAM、DSP、IO、BUFG 和 MMCM

在使用 Xilinx Vivado 进行 FPGA 设计时,理解各种硬件资源的功能和用途是非常重要的。本文将对 Vivado 中的 LUT、LUTRAM、FF、BRAM、DSP、IO、BUFG 和 MMCM 进行详细介绍,并提供相关的代码示例,帮助大家更好地理解这些资源的应用。

小蜗牛的珍贵百宝箱 5247

【GAOPS021】LUTRAM 和 IOBUF

LUTRAM是指将LUT用做分布式RAM/ROM,换句话说是指SLICEM中的LUT被用做了存储单元,那么这里的存储单元是否包含移位寄存器(SRL)呢? 资源利用率中的LUT是指设计中消耗的所有LUT,包括用做逻辑函数发生器的LUT(SLICEL中的LUT),也包括用做存储单元的LUT(SLICEM中的LUT) 资源利用率报告中的LUTRAM是指设计中消耗的SLICEM中的LUT(用做分布式RAM/ROM或移位寄存器) 参考UG474 ...

1615549892 1109

Xilinx FPGA怎么使用LUTRAM

本文介绍了Xilinx FPGA中LUTRAM的使用方法。LUTRAM是一种分布式小容量存储器,由查找表(LUT)配置而成,具有同步写、异步/同步读的特性,适合用于FIFO、小缓冲区等场景。文章详细讲解了三种实现方法:HDL代码推断(推荐)、原语实例化和IP核生成,并提供了Verilog示例代码。使用LUTRAM可以优化资源利用率,降低BlockRAM的占用率。最后建议通过综合报告验证实现效果,并给出LUTRAM与BlockRAM的特性对比,帮助开发者根据实际需求合理选择存储方案。

Js_cold的博客 1336

【FPGA开发】Vivado开发中的LUTRAM占用LUT资源吗

LUTRAM不是一种独立的物理资源,而是LUT(Look-Up Table)的一种特殊使用方式。这两种资源协同工作,构成了FPGA的时钟网络基础设施,对于确保设计的时序性能至关重要。总结来说,LUTRAM是LUT的一种功能配置,在报告中单独列出是为了更清晰地展示资源使用情况,而不是表示它们是完全独立的物理资源。BUFG是Global Clock Buffer(全局时钟缓冲器)的缩写,是FPGA中专用于时钟信号分发的资源。在你的设计中,总共有8个MMCM单元,目前使用了1个(12.5%)。

kanhao100的博客 1525

FPGA——LUT/FDRE/FDCE/FDSE/FDPE

当同步时钟接口为低电平且使能接口为高电平时,时钟的上升沿触发寄存器装载数据接口的数据。FDS:D Flip-Flop with Synchronous Set 带同步置位的D触发器 当置为端为低电平时,在时钟的上升沿触发数据保存在触发器中,当置位端为低电平时,在一个时钟的上升沿触发导致触发器清0。“logic cells”代表的是一个没有其他任何功能的4输入LUT,在老一些的Xilinx的FPGA中,他们使用LUT的数目乘以1.2来计算LC的数目,因为一个LUT中还有一个进位链和MUX。

u011995183的博客 2339

数字电路设计中的临时存储详解 FF、LUT、LATCH、BARM、URAM

在数字电路设计中,临时存储元件是实现数据保存、处理和传输的关键组件。FF(触发器)、LUT(查找表)、LATCH(锁存器)、REGISTER(寄存器)、BRAM(块RAM)、URAM(超级RAM)和DRAM(动态随机存取存储器)等都是常见的存储元件,它们各自具有不同的特性和应用场景。理解这些存储元件的本质和区别对于高效的数字系统设计至关重要。

kanhao100的博客 2392

vivado LOC

vivado LOC

cckkppll的博客 974

vivado资源利用率分析

通过命令可查看设计的资源利用率报告

weixin_47589752的博客 4130

vivado中如何查看各个模块的资源利用率

本文分析了FPGA设计中各模块的资源利用率情况,重点介绍了LUT与LUTRAM的区别,并详细说明了12种关键资源的功能特性。资源报告显示,顶层模块整体利用率较低,其中hdmi_color_bar模块为主要资源消耗者。文章特别解释了BlockRAM出现小数计数的原因,并区分了LUT作为逻辑和存储时的不同应用场景。随后系统性地阐述了包括SliceLUTs、SliceRegisters、BlockRAM、DSPs等在内的12种FPGA核心资源的功能定义和芯片总容量,为FPGA设计提供了全面的资源参考指南。

FPGA/MATLAB学习教程/源码/项目合作开发 1732
上一篇: FPGA频率测量的三种方法
下一篇: 数字锁相环:二阶环的FPGA实现
Hack电子
博客等级 码龄5年 1498粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值