在静态任务函数声明中引用参数是非法的是什么意思?

时间:2015-06-24 06:11:48

标签: system-verilog

Resource

program main(); 
int a; 

initial 
begin 
#10 a = 10; 
#10 a = 20; 
#10 a = 30; 
#10 $finish; 
end 

task pass_by_val(int i); 
forever 
@i $display("pass_by_val: I is %0d",i); 
endtask 


task pass_by_ref(ref int i); 
forever 
@i $display("pass_by_ref: I is %0d",i); 
endtask 

initial 
pass_by_val(a); 

initial 
pass_by_ref(a);

我在网站上面引用并运行但是我有一些错误信息。

  

引用参数在静态任务函数声明中是非法的。

1 个答案:

答案 0 :(得分:4)

一般来说,模块/程序中的任务/函数默认是静态的,按照第13.5.2节“IEEE 1800 - 2012

的参考文献”
  

使用通过引用传递的参数是非法的   生命周期为静态的子程序。

要解决仅使用引用' ref'自动任务/功能

task automatic pass_by_ref(ref int i); 
forever 
@i $display("pass_by_ref: I is %0d",i); 
endtask