为什么变量的外部初始化在 for 循环中不可接受?

问题描述 投票:0回答:1

for
循环之外初始化变量会导致错误,因为
i
不是任务。但是,如果我在
for
循环中初始化它,它就会完美运行。

为什么下面的代码会给出错误,因为

i
不是任务?

module tb;
  int array[5];
  int i= 0;
  
  initial begin
    for (i; i<5;i=i+1) begin
      array[i] = i;
      $display("The values of array is array[%d] =  %d",i,array[i]);
    end 
  end
endmodule

下面的代码有效

module tb;
  int array[5];
  int i;
  
  initial begin
    for (i = 0; i<5;i=i+1) begin
      array[i] = i;
      $display("The values of array is %d",array[i]);
    end 
  end
endmodule
for-loop verilog system-verilog
1个回答
0
投票

在 for 循环之外初始化变量是不可接受的,因为 IEEE Std 是这样定义它的。如果 for_initialization 出现在

for
循环中,则它必须采用以下形式:

variable = expression

没有表达式的变量是非法的。

请参阅 IEEE Std 1800-2017,第 12.7 节循环语句,了解完整的语法定义。

请注意,for_initialization是可选的。例如,这是合法的语法:

module tb;
  int array[5];
  int i= 0;
  
  initial begin
    for (; i<5;i=i+1) begin
      array[i] = i;
      $display("The values of array is array[%d] =  %d",i,array[i]);
    end 
  end
endmodule
© www.soinside.com 2019 - 2024. All rights reserved.