坚持合成RAM块 - >作为无源信号发出警告

时间:2015-12-30 08:31:30

标签: verilog ram

下面是RAM模块,我希望读取系数值。

x="JH QS KC 10D AC 3H 10S"
import re
print [i for i in x.split() if re.findall(r"(?<!\d)10(?!\d)",i)]

发出警告并坚持到这一点 - &gt;

警告:Xst:653 - 信号&lt; mem&gt;使用但从未分配。此无源信号将自动连接到值0000000000000000。

请指导我如何解决此问题。

1 个答案:

答案 0 :(得分:1)

你永远不会在RAM上写任何新内容,因此symthesis工具会对此发出警告并将此RAM视为ROM。

这部分代码:

always @(posedge clk) begin
  if (we) 
     data_out <= mem[address];
end

当我们为1时读取当前内存地址。我假设你想在1时写入内存,所以它应该是这样的:

always @(posedge clk) begin
  if (we) 
     mem[address] <= data_in;
  data_out <= mem[address];
end

data_in输入端口包含要写入内存的数据。注意写操作后的时钟周期,data_out仍将具有旧的存储器内容。要在执行写入时更新data_out,请执行以下操作:

always @(posedge clk) begin
  if (we) begin
     mem[address] <= data_in;
     data_out <= data_in;
  end
  else
    data_out <= mem[address];
end

您的模块当前没有data_in端口,因此它描述了ROM而不是RAM,并且在ROM中,此警告是无害的。