本文主要是介绍sv中的task和function,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
sv中的task和function
- task和function的共同点
- task和function的不同点
task和function的共同点
- verilog中task和function是相同的。
- 将复杂代码分割成小段落,便于理解和调用,简化程序,功能单一;
- .端口参数默认都是输入,除非声明其他类型;
- 数据类型默认是logic,除非声明为其他类型;
- 可以存在多个语句,不用begin…end做开始结尾;
- wire类型数据不可以在端口使用;
- 通过引用、值、名称、位置传递参数值;
task和function的不同点
sv中增加的使用:在静态task和function中声明动态变量,以及在动态task和function中声明静态变量。
- function不能消耗仿真时间;task可以消耗仿真时间;比如function不能带有#100的时延语句、不能有@(posedge clk)、不能有wait(ready)的阻塞语句。
- function不能调用task;task可以调用function或task;注意:sv中允许function调用task,但只能在fork…join_none生成的线程中调用。
- function可以使用void表示不返回结果;task不使用void表示不返回结果;
- function只能返回一个值;注意:task无返回值;verilog fucntion必须要有一个返回值;sv可以使用void’(call_function(params))避免返回值。
这篇关于sv中的task和function的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!