发布网友 发布时间:2022-04-19 21:32
共1个回答
热心网友 时间:2023-06-28 02:53
function只是草稿纸,task是验证用途的。
verilog中task和function的区别:
mole: 电路;sub-program (task, function): 电路的测试程序(test bench)
mole是物理电路,function只是草稿纸,task是验证用途的。完全没有任何联系。function里实现的功能,必须是电路开始工作之前就能执行运算的功能,task不能写在实际电路中。
任务(task)
任务就是封装在task-endtask之间的一段语句。任务是通过调用来执行的,也只能通过调用来执行,如果定义了任务,但整个过程都没有调用它,它是不会执行的。调用任务时可能需要它来处理某些数据并返回操作结果,所以任务应当有接受数据的输入端和返回数据的输出端。另外,任务可以彼此调用,任务还可以调用函数。
在定义任务时,有下列六点需要注意:
1、在第一行task语句中不能列出端口名称。
2、任务的输入、输出和双向端口数量不受*,甚至可以没有输入、输出和双向端口。
3、在任务定义的描述语句中,可以出现不可综合操作符合语句,但这样会造成任务不可综合。
4、在任务中可以调用其他的任务或函数,也可以调用自身。
5、在任务定义结构中不可出现initial和always语句。
6、在任务定义中可以出现“disable中止语句“,将中断正在执行的任务,但其是不可综合的。