我可以在always块中使用数组'arr [x] [y]'吗?它是可合成的吗?

时间:2015-12-12 07:04:12

标签: system-verilog synthesis

always@(posedge clk)
begin
r00<=r01;
r01<=r02;
r02<=arr[x][y];
//code
end

这可以在生成块中合成吗?另外'arr'是二维的。

1 个答案:

答案 0 :(得分:0)

要详细说明上面的注释,您的综合工具应该推断这是内存,但根据您的声明和用法,有几种情况。

  1. 由于访问模式导致的read-during-write和其他内存接口错误,您的代码会出现不可合成或错误

  2. 您的记忆实际上将被推断为寄存器,这可能会使您的设计因大小而无法合成。

  3. 一切都会很好。

  4. 许多工具(例如Quartus)都带有内置功能,可以为代码添加内存(即Megafunction工具)。