赛灵思
直播中

王莉淳

7年用户 260经验值
私信 关注
[问答]

为什么BRAM无法在最新的ISE 14.7中初始化文件但在ISE 12.2中工作正常?

我有一个针对spartan-6(LX45)的项目,该项目在ISE 12.2中没有出现任何问题。
最近升级到ISE 14.7项目不再正确构建。
问题是BRAM没有正确初始化。
此项目中BRAM使用的方法是通过参数化宽度并使用.mif文件作为初始值来推断它。
随附的是重现问题的项目。
此zip文件必须解压缩到C: FPGA_Design,或者您可以手动重建和重新引用这些文件。一个项目用于ISE 12.2,另一个用于ISE 14.7,完全相同的代码,但每个项目应该从其各自的ISE运行
版。
使用两个版本的行为模拟正确匹配。
事情出错的第一个迹象是翻译后模拟。
12.2版本有效,而14.7没有。
它从那里螺旋下来。
我试图通过仿真使这个可以重现,但是对于模拟设置没有任何顾虑,它在构建在tartet上时显示相同的东西。
有趣的是,BROM(只读BRAM)似乎很好。
它只是BRAM(读/写)没有。
任何帮助或类似问题表示赞赏。
我不认为这与众所周知的9K Block RAM Initialization问题有关。
FPGA_Design.zip 239 KB

以上来自于谷歌翻译


以下为原文

I have a project targeting the spartan-6 (LX45) that has been working with no problems being built in ISE 12.2. Recently upgrading to ISE 14.7 the project no longer builds correctly. The issue is that the BRAM is not initialized correctly. The method for BRAM usage in this project is to infer it by parameterizing the widths and using a .mif file for initial values.

Attached are projects that reproduce the problem. This zip file must be unzipped to C:FPGA_Design, or you can manually rebuild and re-referrence the files.
One project is for ISE 12.2 and the other for ISE 14.7, exact same code but each project should be run from its respective ISE version. The behavioral simulation using both versions matches correctly. The first sign of things going wrong is in the post-translate simulation. The 12.2 version works while the 14.7 does not. It spirals down from there. I tried to make this reproduceable from simulation, but just so there are no concerns about simulation setup it shows the same things when built on a tartet.
Interestingly enough BROM (Read only BRAM) seems to initalize fine. Its just the BRAM (read/write) that does not.

Any help or similar issues is appreciated. I don't think this is related to the well known 9K Block RAM Initialization problems.
            FPGA_Design.zip ‏239 KB

回帖(1)

李珏

2019-7-12 15:20:42
发现问题或解决问题。
推断的BRAM是DPM,一侧只写,一侧只读。
更改代码以删除单独的读取地址(单个端口)或推断完整的DPM明确适用于两个版本的ISE。
出于某种原因,ISE 12.2能够正确地将双地址输入映射到双端口存储器并在14.7混淆时正确初始化它。
它现在使用显式DMP verliog代码。

以上来自于谷歌翻译


以下为原文

Found the issue or work around. The BRAM being inferred is DPM with one side write only and one side read only. Changing the code to either drop the seperate read address (Single Port) or inferring full DPM explicitely works in both versions of ISE. For some reason ISE 12.2 was able to properly map the dual address input to a dual port memory and initialize it properly while 14.7 was confused. It is working now with the explicit DMP verliog code.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分