function和task的区别——SV,SystemVerilog

1. function

特点:

  • 缺省的数据类型是logic输入;
  • 可以作为形式参数传递;* function可以返回或不返回结果,返回时需要关键词return,不返回在声明时要用 void function();
  • 只有数据变量可以在形式参数列表中被声明为ref类型,而线网类型不能被声明为ref;
  • function不能调用task(v中规定),sv中可以在特定的fork…join_none中调用task;
  • function中参数列表中参数如果不标明方向,默认是输入信号input;

2. task

  • 可以在参数列表中指定input output inout ref(引用参数);
  • 可以返回值或者不返回(void),但是是通过output、inout或ref来指定返回值的,不能使用return返回;
  • 缺省类型为logic输入;

​ 特点:

  1. task无法通过return返回结果,只能通过输出(output inout)或者ref的参数来返回。
  2. task内可以置入耗时语句,而function不行。常见的耗时语句@event 、wait event 、 #delay

【注意】

  • 要调用function,则使用function task均可;
  • 要调用task,只能用task调用。

总结表格

functiontask
function能调用 function函数,但不能调用tasktask可以调用function 和 task
函数中不能有耗时语句,在仿真0时刻就执行任务中可以置入耗时语句,可在非零时刻执行
函数至少有一个或多个输入变量任务可以没有,也可以有多个输入、输出和双向变量
函数只能返回一个值不能有输出或者双向变量任务不返回任何值,可以通过输出或者双向变量传递多个值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小verifier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值