Xilinx ISE块ram推断的鲁棒性

JCL*_*CLL 2 fpga vhdl xilinx

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

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

type   ram_type is array(2**ADDR_WIDTH-1 downto 0) of std_logic_vector(DATA_WIDTH-1 downto 0);
Run Code Online (Sandbox Code Playgroud)

我的问题是:你能不能告诉我ISE是否能推断出正确的滑块

signed(DATA_WIDTH-1 downto 0)` instead of `std_logic_vector(DATA_WIDTH-1 downto 0)
Run Code Online (Sandbox Code Playgroud)

甚至更多(在一个包中):

subtype signed8 is signed(7 downto 0)
Run Code Online (Sandbox Code Playgroud)

然后

type   ram_type is array(2**ADDR_WIDTH-1 downto 0) of signed8;
Run Code Online (Sandbox Code Playgroud)

我知道合成器有时候很敏感......

Jos*_*osh 5

我自己没有测试过,但是"signed"类型是从std_logic类型派生的,所以我不明白为什么这不起作用.

假设您正在使用XST进行综合,XST用户指南是一个很好的开始,看看Xilinx正式声明XST将识别块公羊推理的内容.XST用户指南12.4(pdf)


Saa*_*mer 5

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