1. function
特点:
- 缺省的数据类型是logic输入;
- 可以作为形式参数传递;* function可以返回或不返回结果,返回时需要关键词return,不返回在声明时要用 void function();
- 只有数据变量可以在形式参数列表中被声明为ref类型,而线网类型不能被声明为ref;
- function不能调用task(v中规定),sv中可以在特定的fork…join_none中调用task;
- function中参数列表中参数如果不标明方向,默认是输入信号input;
2. task
- 可以在参数列表中指定input output inout ref(引用参数);
- 可以返回值或者不返回(void),但是是通过output、inout或ref来指定返回值的,不能使用return返回;
- 缺省类型为logic输入;
特点:
- task无法通过return返回结果,只能通过输出(output inout)或者ref的参数来返回。
- task内可以置入耗时语句,而function不行。常见的耗时语句@event 、wait event 、 #delay
【注意】
- 要调用function,则使用function task均可;
- 要调用task,只能用task调用。
总结表格
function | task |
---|---|
function能调用 function函数,但不能调用task | task可以调用function 和 task |
函数中不能有耗时语句,在仿真0时刻就执行 | 任务中可以置入耗时语句,可在非零时刻执行 |
函数至少有一个或多个输入变量 | 任务可以没有,也可以有多个输入、输出和双向变量 |
函数只能返回一个值,不能有输出或者双向变量 | 任务不返回任何值,可以通过输出或者双向变量传递多个值 |