欢迎光临散文网 会员登陆 & 注册

task区别 function

2023-07-10 19:19 作者:业精于勤而荒于嬉哦  | 我要投稿

Task和function分别用来定义任务和函数,利用task和function可以把一个很大的程序模块分解为许多较小的task和function便于理解和调试,即增强了代码的可读性和可维护性。

Function和task说明语句的不同点:

(1)function只能和主模块共用同一个仿真时间单位,而task可以自己定义自己的仿真时间单位。

(2)function不能启动task,但是task可以能启动其他task和function。

(3)function至少要有一个输入变量,而task可以没有或者有多个任何类型的变量。

(4)function返回一个值,而task则不返回值。

(5) task可以有任意多个输入、输入输出inout、输出变量;在task中可以使用延迟、事件和时序控制结构,在task中可以调用其他的task和function。

(6) 可重入task使用关键字automatic进行定义,它的每一次调用都对不同的地址空间进行操作。因此在被多次并发调用时,它仍然可以获得正确的结果。

(7) function只能有一个返回值,并且至少要有一个输入变量;在function中不能使用延迟、事件和时序控制结构,但可以调用其他function,不能调用task。

(8) 当声明function时,Verilog仿真器都会隐含地声明一个同名的寄存器变量,function返回值通过这个寄存器传递回调用处。

(9) 递归function使用关键字automatic进行定义,递归function的每一次调用都拥有不同的地址空间。因此对这种function的递归调用和并发调用可以得到正确的结果。

(10) task和function都包含在设计层次之中,可以通过层次名对它们进行调用。

 

注意:

在Verilog中function不能调用task,但在SystemVerilog对这条限制稍有放宽,允许function调用task,但只能在由 fork…join_none语句生成的线程中调用。

————————————————

版权声明:本文为CSDN博主「IC媛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_38374491/article/details/118152915


task区别 function的评论 (共 条)

分享到微博请遵守国家法律