Task
在SystemVerilog中,Task(任务)常被认为是程序块或过程块,其具有以下特点:
- Task在被使用的模块中被调用。可以在单独的文件中定义task块,使用`include语句包含定义task块的文件来调用task块。
- Task块中可以使用 timing delay。例如:posedge,negedge,# delay and wait。
- Task块可以有多个inputs and outputs。
- Task块中定义的变量只存在于Task块中。
- 当Task块内部没有本地变量时,Task块可以使用,驱动,回溯全局变量 。当Task块内部有本地变量时,输出赋值基本在Task块执行完毕后完成。
- Task块可以调用其他Task块或者Function。
- Task块可以用于组合逻辑建模以及时序逻辑建模。
- Task块必须使用专门的语句来调用,它不能像函数一样用于表达式。
- Function在被使用的模块中被调用。可以在单独的文件中定义Function,使用`include语句包含定义Function的文件来调用Function。
- Function中不允许包含timing delays。 例如:posedge, negedge, # delay, 这意味着Function的执行是"zero" time delay的。
- Function可以有多个inputs但只能有 一个output。
- Function中定义的变量只存在于Function中。
- 当Function内部没有本地变量时,Function可以使用,驱动,回溯全局变量 。当Function内部有本地变量时,输出赋值基本在Function执行完毕后完成。
- Function只可用于组合逻辑建模。
- Function可以调用其他Function,但不能调用Task块。