数组索引过宽,超出了数组的范围。

4
我在访问VHDL数组时遇到了以下问题:
假设我有一个大小不是2^n的数组,例如大小为6。 然后,如果我想使用3位宽度的索引(=ceil(log2(6)))访问此数组,很明显这个索引可以达到两个位置,7和8,超出了我正在访问的数组的大小。 Xilinx ISE在这种情况下会给我一个警告。
我该怎么办? 我的可能解决方案如下:
1.) 忽略警告。 希望综合器很聪明。
2.) 只使用大小为2^n的数组。 希望未使用的部分将被优化掉。
1个回答

3

我建议在这种情况下忽略警告。综合工具可以处理这个问题。

综合工具也可以轻松优化未使用的内容,但人为地增加数组大小似乎有些过头了。


4
一个想法:你可以只使用“整数范围0到5”,而不是3位向量。这可能会使模拟器更加稳定,并为综合工具提供优化的明确提示。 - Philippe
@Philippe 对于这两种情况,模拟器在运行时错误方面会感到同样的高兴或不高兴。但是,约束整数确实是一种更直接表达意图的方式。 - Jan Decaluwe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接