在
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 循环之外初始化变量是不可接受的,因为 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