task 和 function 说明语句分别用来定义任务和函数,利用任务和函数可以把函数模块分成许多小的任务和函数便于理解和调试。任务和函数往往还是大的程序模块在不同地点多次用到的相同的程序段。输入、输出和总线信号的数据可以传入、传出任务和函数。
task 和 function 的不同:
1)函数只能与主模块共用同一个仿真的时间单位,而任务可以自己定义自己的仿真时间单位。
2)函数不能启动任务,但是可以调用其它函数,但是任务可以调用其他函数和任务;
3)函数至少要有一个输入变量,而任务可以没有或者有多个任何类型的变量。
4)函数返回一个值,而任务不返回任何值。
函数的目的值通过一个返回值对输入的信号进行响应。而任务可以支持多种目的,能计算多个结果值,这些值只能通过任务的输出端口或者总线端口输出。
A) task说明语句
如果传给任务的变量和任务完成后接受结果的变量已经定义,就可以用一条语句启动任务,任务完成以后控制就传回启动过程。如果任务内部有定时设置,则启动的时间可以与控制返回的时间不同。
1)任务的定义;
task <任务名>;
<端口及数据类型声明语句>
<语句1>
…
<语句n>
endtask
2)任务的调用以及变量的传递:
任务定义;
task my_task;
input a,b;
inout c;
output d,e;
… //执行任务的相应语句
c=foo1; //对任务的变量赋初始值
b=foo2;
e