Task|Task And Function

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在很多地方上与Task类似,但它们之间有一些区别,比如Function不能驱动多个output并且不能包含 timing delay等。
  • 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块。
【Task|Task And Function】参考资料:http://www.asic-world.com/verilog/task_func1.html

    推荐阅读