请教verilog中TASK可以不带输入输出吗
时间:10-02
整理:3721RD
点击:
比如以下一段代码:
module test;
reg i,j,k;
reg[1:0] sum;
initial
begin
i=1;j=1;k=1;sum=0;
#1 add;
#1 $display("Sum= %b",sum);
end
task add;
sum=i+j+k;
endtask
endmodule
像以上这样 task封装定义中本身没有input和output,而是直接使用该task所在模块已经定义的变量i,j,k和reg,那么执行到display的时候,sum是显示0还是显示3呢?也就是说,task能直接对模块数据进行操作而不必实参-形参传递吗? 还有当实参是wire型时,形参能使用阻塞赋值吗?
module test;
reg i,j,k;
reg[1:0] sum;
initial
begin
i=1;j=1;k=1;sum=0;
#1 add;
#1 $display("Sum= %b",sum);
end
task add;
sum=i+j+k;
endtask
endmodule
像以上这样 task封装定义中本身没有input和output,而是直接使用该task所在模块已经定义的变量i,j,k和reg,那么执行到display的时候,sum是显示0还是显示3呢?也就是说,task能直接对模块数据进行操作而不必实参-形参传递吗? 还有当实参是wire型时,形参能使用阻塞赋值吗?
自己顶!
基于语法的定义,是不可以的。
其实,就上面的例子,实际跑一下仿真就知道了。
我跑了之后 发现没有错误 难道真的可以不带input、output端口而直接引用当前模块的变量?
恩,可以
不太了解,仿真试下吧
