微信公众号:FPGA动力联盟
首先,博主要说的是,函数和任务都是可以综合成电路的,但有诸多的要求和限制,所以要谨慎使用!
下面总结函数和任务的共性与区别:
- 共性:
1,函数与任务必须在模块内定义,其作用范围仅适用于该模块,可以在模块内多次调用
2,任务和函数中可以声明局部变量,如寄存器、时间、整数、实数和事件,但不能声明线网类型的变量
3,任务和函数只能使用行为级语句,但是不能包含always和initial,设计者可以在always和initial块中调用任务和函数
- 区别:
1,函数能调用另一个函数,但不能调用任务
2,任务可以调用函数,也可以调用任务
3,函数一定不能包含任何延迟、事件或时序控制声明,但任务可以
4,函数至少要有一个输入变量,任务可以没有或有多个输入、输出变量
5,函数只能返回一个值,函数不能有output或inout
6,任务不返回任何值
总得来说,函数用于替代纯组合逻辑的verilog代码,而任务可以替代verilog的任何代码。但在电路综合领域,两者没有区别,都只能替代纯组合逻辑的verilog代码。综合器在处理仅含有组合逻辑的函数和任务时,差别是不存在的。这两者的功能都是:简化代码和提高代码的易读性!
参考文献:
1,verilog传奇——从电路出发的HDL代码设计
2,verilog编程艺术