各种类型的Memory在FPGA设计中被广泛使用,例如单端口RAM、简单双端口RAM、真双端口RAM、单端口ROM以及双端口ROM。这些RAM或ROM都可通过coe文件的形式定义其初始值。那么可能在实际应用中会出现这样一种情形:设计的其他部分未做任何改动,只是更新RAM初始值。那么该如何操作更为方便呢?
如果采用传统方式,先定义好coe文件,然后重新生成IP,这样就必须重新执行整个设计流程包括综合、布局布线,编译时间可想而知。但换个角度,细细分析一下,只是初始值改动,那么能否通过ECO(Engineering Change Order)的方式实现呢,就像更改触发器初始值或者查找表的真值表内容一样?答案是肯定的。这样做好处也是显而易见的:无需重新布局布线,只需更改RAM相关属性,然后再次生成.dcp(这个不是必须的),最后生成.bit或.bin文件,这样最大程度地继承了原有设计,也最大程度地缩短了编译时间。采用此方法的前提是RAM的规格要保持不变,这里的规格包括数据位宽和RAM深度。
这里我们以Block RAM为例,先看看有哪些属性与初始值密切相关,如下图所示。基本上凡是以INIT打头的属性都与初始值相关。更新初始值本质上就是重新设定这些初始值。这些初始值是在IP生成阶段根据coe内容被设定的。
第一步,根据更新后的coe文件生成一个同规格的IP,并对该IP执行OOC综合。
第二步,打开第一步生成的.dcp文件,找到相应的Block RAM,获取上文提到的这些属性对应的属性值。
原文标题:ECO方式更新RAM/ROM初始值
文章出处:【微信公众号:Lauren的FPGA】欢迎添加关注!文章转载请注明出处。
责任编辑:haq
-
FPGA
+关注
关注
1610文章
21390浏览量
595435 -
ROM
+关注
关注
4文章
527浏览量
85139 -
RAM
+关注
关注
8文章
1332浏览量
113937
原文标题:ECO方式更新RAM/ROM初始值
文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
ram和rom的作用和区别是什么
RAM和ROM的区别,哪个与CPU连接
rom与ram的主要区别 rom断电后数据会丢失吗
MCU内部SRAM的ECC初始化竟可由ROM完成
LTC2943在初始化的时候要如何确定Qlsb的初始值呢?
C语言编程时,各种类型的变量该如何初始化?
jvm配置堆内存初始值参数
全局变量的初始值,是在哪里赋值的?
![全局变量的<b class='flag-5'>初始值</b>,是在哪里赋值的?](https://file1.elecfans.com/web2/M00/AC/5B/wKgZomU7HreAVBbjAAAcFpl5Gq4107.png)
评论