在合成Verilog代码时如何摆脱敏感度列表警告?

时间:2010-04-21 23:14:08

标签: verilog synthesis

我收到警告:

  

缺少一个或多个信号   始终阻止的敏感性列表。

always@(Address)begin
  ReadData = instructMem[Address];
end

如何摆脱此警告?

4 个答案:

答案 0 :(得分:6)

Verilog在灵敏度列表中不需要信号名称。使用@*语法表示只要任何输入信号发生变化,就应触发always块:

always @* begin 
    ReadData = instructMem[Address]; 
end 

答案 1 :(得分:1)

将InstructMem添加到敏感度列表中。

答案 2 :(得分:0)

ReadData声明为导线而不是reg,然后使用assign替换always块。

assign ReadData = instructMem[Address];

答案 3 :(得分:0)

我不确定instructMem的声明是什么样的。无论如何,ReadData = instructMem [address]将产生一个多路复用器,其地址被视为选择逻辑,并使用典型的综合工具instructMem作为多路复用器的数据线。你需要在灵敏度列表中输入instructMem,因为每当这个改变时,ReadData。

我试过Ica​​rus,你无论如何都不能像@(instructMem或地址)这样的东西,其中instructMem有一个声明,如reg [7:0] instructMem [255:0] - >暗示记忆。

注意:不要尝试以这种方式合成Verilog内存,通常你应该实例化内存IP并连接到它们的端口。供应商为此目的提供内存模型。