参考:
《夏宇闻-Verilog经典教程》第3.7.3节
函数与任务的区别:
- 函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位。
- 函数不能启动任务,而任务能启动其它任务和函数。
- 函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。
- 函数返回一个值,而任务则不返回值。
相同点
verilog中的task和function是可以综合的,不过综合出来的都是组合电路。
规则
(1)除任务参变量外,任务还能够引用任务定义所在模块中声明的任何变量
(2)注意,任务语句是过程性语句,所以任务调用中接收返回数据的变量必须是reg类型。
例如:
reg [13:0] ddr_cmd_tmp;
send_cmd(0, cnt_clk_d0, cmd_pack, ddr_cmd_tmp);
参考链接(很不错的链接):
https://blog.csdn.net/bleauchat/article/details/89711124#3.1%E6%98%BE%E7%A4%BA%E4%BB%BB%E5%8A%A1