原创 Block ram or Distributed ram

2020-8-26 13:49 2435 17 17 分类: FPGA/CPLD
声明一个reg数组,编译器是生成distributed ram还是生成block ram?如果我想让编译器综合成block ram,该如何做?
下面总结一下xilinx 与 altera两家的方法。
1.Altera
对于altera来说,综合时编译器会根据你所定义的数组的大小,选择生成distributed ram 还是block ram,如果数组较大,会生成block ram,数组较小会用lut实现。
altera是在声明前添加属性的方式:
(* ramstyle = "M9K" *) reg   [DATA_WIDTH:0]   ram   [DATA_DEPTH:0]   ;
手动编写一段代码,进行验证,资源报告如下:

再将综合属性去掉,重新编译,生成报告如下:

可以看到,block memory bit 与 registers的变化。

(* ramstyle = "LOGIC" *) 使用lut实现

2.Xilinx

xilinx的方法也类似,分别为:

(* RAM_STYLE="block" *) reg   [DATA_WIDTH-1:0]      ram [DATA_DEPTH-1:0];

(* RAM_STYLE="distributed" *) reg   [DATA_WIDTH-1:0]      ram [DATA_DEPTH-1:0];


作者: 洋仔, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1854387.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

给作者打赏,鼓励TA抓紧创作!

赞赏支持
点赞 17
赞赏0

文章评论0条评论)

登录后参与讨论
相关推荐阅读
洋仔 2022-01-12 11:15
基于vcs+uvm+xilinx ip的仿真平台的半自动化搭建
1. 总体概述1.1软件环境   系         统:ubuntu 18.04&nbs...
洋仔 2021-12-24 09:35
Vivado仿真UVM
1.修改仿真配置在Settings->Simulation->1.1Target simulator为默认配置Vivado Simulator1.2在以下位置修改配置Compliation->xsim...
洋仔 2021-12-23 17:30
Vivado调用VCS仿真
1.编译仿真库Tools->Compile Simulation Libraries在Simulator executable path中添加vcs 仿真器可执行文件的位置2.修改仿真配置在Setti...
洋仔 2021-07-06 15:40
Vivado的一些tcl命令记录(待补充)
1.Report Clock Networks  report_clock_networks -name {network_1}2.分析设计中逻辑级数的分布  report_des...
洋仔 2020-07-09 10:23
DFI Update的原理与实现(转)
DDR3 SDRAM物理层(PHY)的控制器(PUB)内置了DDL VT补偿与I/O阻抗校准功能,这两个功能可在DFI Update请求中由控制器触发完成,或者是PHY触发完成。DFI Update接...
我要评论
0
17
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条