VHDL设计的储存模块用QuartusII验证出现Error: Cannot synthesize initialized RAM logic "RAM1"怎么办

2025-03-07 00:31:55
推荐回答(2个)
回答1:

Quartus不支持对这种初始化方式的代码进行综合
可以用$readmemb或$readmemh完成ram的初始化(9.0以上版本支持这种方式的综合)
例如
module ram_with_init(
output reg [7:0] q,
input [7:0] d,
input [4:0] write_address, read_address,
input we, clk
);
reg [7:0] mem [0:31];

integer i;

initial begin
for (i = 0; i < 32; i = i + 1)
mem[i] = i[7:0];
end

always @ (posedge clk)
begin
if (we)
mem[write_address] <= d;
q <= mem[read_address];
end
endmodule

初始值也可以通过文件指定
initial
begin
$readmemb("ram.txt", mem);
end

回答2:

兄弟你知道为什么不行了吗? 我也遇到这个问题了,但是在resgiter file里我用的相同的方法那就可以跑