Vhdl Xilinx-ISE块ram推理的鲁棒性

Vhdl Xilinx-ISE块ram推理的鲁棒性,vhdl,fpga,xilinx,Vhdl,Fpga,Xilinx,我有一个关于Xilinx ISE块ram推断的健壮性的问题 我没有在我的机器上安装xilinx ise(今天),但我通常使用专用编码完美推断块RAM,基本上依赖于: type ram_type is array(2**ADDR_WIDTH-1 downto 0) of std_logic_vector(DATA_WIDTH-1 downto 0); 我的问题是:你能告诉我ISE是否能推断出一个正确的内存块吗 signed(DATA_WIDTH-1 downto 0)` instead of

我有一个关于Xilinx ISE块ram推断的健壮性的问题

我没有在我的机器上安装xilinx ise(今天),但我通常使用专用编码完美推断块RAM,基本上依赖于:

type   ram_type is array(2**ADDR_WIDTH-1 downto 0) of std_logic_vector(DATA_WIDTH-1 downto 0);
我的问题是:你能告诉我ISE是否能推断出一个正确的内存块吗

signed(DATA_WIDTH-1 downto 0)` instead of `std_logic_vector(DATA_WIDTH-1 downto 0)
甚至更多(包装中):

然后

type   ram_type is array(2**ADDR_WIDTH-1 downto 0) of signed8;

我知道合成器有时很敏感…

我自己没有测试过,但是“有符号”类型是从std_逻辑类型派生出来的,所以我不明白为什么这不起作用


假设您使用XST进行合成,《XST用户指南》是一个很好的起点,可以从中了解Xilinx官方声明XST将识别哪些块ram推断

除了Josh建议的链接(该链接详细介绍了XST的RAM实现),下面是Xilinx网站上的另一篇文档,解释了不同的RAM实现及其权衡(第76页):


作为旁注,我使用了“数组”方法,对于小的块RAM大小非常有效。但是,我不得不说,我试图用它来生成一个内存模块,它的大小远远大于我的Spartan-6中的1块RAM,但它无法推断(XST试图将其实现为分布式RAM)。我通过直接实例化Xilinx提供的块内存宏,并通过创建适当的内存解码模块来选择/写入/读取内存模块中适当的单个块内存,从而解决了这个问题。

这是一个一般性评论,不是针对您的问题。试图假设二次猜测一个合成工具不是很有效。结果可能因工具版本和您的设计和实现环境(不同的开关、优化目标、目标体系结构等)而异。ISE/XST是免费的。。。下载它并尝试你的代码。然后你可以更有意义地问这个问题。。。“为什么XST版本X.Y在这些条件下不推断块RAM?”然后我们还可以讨论XST是否具有正确和预期的行为

type   ram_type is array(2**ADDR_WIDTH-1 downto 0) of signed8;