前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SystemVerilog函数和任务

SystemVerilog函数和任务

作者头像
数字芯片社区
发布2020-07-20 16:02:10
1.4K0
发布2020-07-20 16:02:10
举报
文章被收录于专栏:数字芯片数字芯片
  • Verilog中函数与任务区别:

任务可以消耗时间,函数不能消耗时间;

函数里不能带有#10延时语句或者@(posedge clk)、wait(ready)的阻塞语句;

函数不能调用任务;

函数必须有返回值,并且返回值必须被使用;

1.函数(与C语言类似)

  • 函数的参数可以声明为input、output、inout、ref;
  • Void函数不返回数值;
  • 函数可以调用函数,但必须立即返回,即不能发生阻塞、等待行为;
  • 如果调用具有返回值的函数,但没有使用该返回值,应添加void‘()进行转换;
代码语言:javascript
复制
void’(some_function());

2.任务

  • 任务的定义可以指定参数input、output、inout、ref;任务没有返回值;
  • 任务可以消耗仿真时间;
  • 任务可以调用其他任务或者函数;

3.任务和函数区别

  • 函数不会消耗仿真时间,而任务可能会消耗仿真时间;
  • 函数无法调用任务,而任务可以调用函数;
  • 一个函数只能返回一个数值,而任务不会返回数值;
  • 函数可以作为一个表达式中的操作数,而该操作数的值即函数的返回值;

4.参数传递

  • input、output、inout参数在调用方法时属于值传递,即传递过程中,外部变量的值会经过拷贝,赋值给形式参数;
  • 值传递的过程只会出现在方法的调用时和返回时;
  • ref参数在传递时不会发生值拷贝,而是将变量指针传递到方法中,因此在方法内部对于参数的任何操作会立即影响到外部变量;
  • 为了避免外部传入的ref参数会被方法修改,可以添加const修饰符,表示变量是只读变量;
  • SV允许方法声明输入参数时指定参数的默认值;
  • SV允许类似于模块例化,可以由参数位置在调用方法时传递参数,也可以由参数名字映射的方式来传递参数;

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字ICer 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.函数(与C语言类似)
  • 2.任务
  • 3.任务和函数区别
  • 4.参数传递
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档