在ModelSim Altera版本10.4中的Verilog初始构建不起作用

时间:2016-01-18 08:29:44

标签: verilog system-verilog modelsim intel-fpga quartus

从版本10.4开始,初始块出现问题。像这样:

reg [31:0] init_ram[15:0];

initial begin
   init_ram[0] = 32'h1234_5678;
   init_ram[1] = 32'h8765_4321;
   ...
end

always_ff @(posedge clk)
   init_ram[addr] <= data;

或者

module test(
   input clk,
   ...
   output reg a
);

initial a = 1'b1;

always @(posedge clk)
   a <= ...;

ModelSim 10.4错误:

  

错误(可抑制):( vlog-7061){path}变量&#39; init_ram&#39;开车进去   always_ff块可能不会被任何其他进程驱动

在旧版本中,一切运作良好。

您不知道我应该更改哪个ModelSim参数来修复它?

2 个答案:

答案 0 :(得分:2)

always_ffalways_comb结构的一个问题是它们应该在模拟过程中检查可合成性,除了没有可合成的标准。如果意图是initial块仅用于模拟,则您需要将always_ff更改为always或更改initial块以使用{{1}而不是。

答案 1 :(得分:0)

解决问题的一个想法是添加reset 信号并用它来初始化寄存器的值。

好吧,可能是这个 这将是一个为你的触发器提供初始值的好方法。

这应该是这样的:

reg [31:0] init_ram[15:0];
input reset;

always_ff @(posedge clk) begin
   if (reset) begin
      init_ram[0] <= 32'h1234_5678;
      init_ram[1] <= 32'h8765_4321;
   end
   else begin
      init_ram[addr] <= data;

或者这个:

module test(
   input clk,
   input reset,
   ...
   output reg a
);

always @(posedge clk) begin
   if (reset) begin
      a <= 1'b1;
   end
   else begin
      a <= ...;
相关问题