在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6908|回复: 17

[讨论] systemverilog function task问题请教

[复制链接]
发表于 2018-8-6 14:54:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请教大家一个问题,关于function和task的返回值问题。
一般来说,function有返回值,除非你使用了void;
而task无返回值。

可是我怎么感觉function中如果不是显式的调用return函数,返回值这个事情跟task一样呢?

比如下面这段代码,这个function算是有返回值的吗?

function void my_agent::build_phase(uvm_phase phase);
   super.build_phase(phase);
   if (is_active == UVM_ACTIVE) begin
      sqr = my_sequencer::type_id::create("sqr", this);
      drv = my_driver::type_id::create("drv", this);
   end
   mon = my_monitor::type_id::create("mon", this);
endfunction


可能例子举的不够恰当。
 楼主| 发表于 2018-8-7 10:01:50 | 显示全部楼层
没人回答么?自己顶一下。
不知道这个function的返回值,返回的是什么?output的值吗?还是其他的?
发表于 2018-8-7 11:02:42 | 显示全部楼层
没有直接的返回值,另外sv里面的function可以直接在后面定义输入输出的,比如你这里面的phase。function里面做的例化也算是返回吧。
我是新手,说的不对的话见谅
 楼主| 发表于 2018-8-7 12:23:51 | 显示全部楼层




   不大明白,能详细一点吗?
发表于 2018-8-7 13:36:24 | 显示全部楼层
task 会消耗仿真时间, function 不会消耗仿真时间
task 不会有返回值, function可有返回值
发表于 2018-8-7 14:01:29 | 显示全部楼层
回复 4# uunn69


   没有声明void的function是有返回值的,如果没有return某个值,会以最后一个function name的变量值作为返回值,如果调用function不用于赋值,你可以看看是不是会报错(我不确定);另外,sv的function里面可以带参数,在后面的括号里声明输入输出什么的,在function里面对这些参数的修改也可以认为是一种输出。
 楼主| 发表于 2018-8-7 14:12:24 | 显示全部楼层


task 会消耗仿真时间, function 不会消耗仿真时间
task 不会有返回值, function可有返回值
kuolifeng 发表于 2018-8-7 13:36




   这书上的话我早看过无数遍了。。。   这里不讨论是否消耗仿真时间。  

关键是,function method和task method,都可以有input和output,那么如果function 不是void,funtion里面又没有显式的调用return,它和task什么区别?
在这种情况下,什么是function的返回值?output的value吗?如果是output的value的话,那么这个funtion的返回值和task有什么区别?
总感觉function的返回值指的不是output的value。

继续请教function的返回值是什么,请各位大牛不吝赐教。
发表于 2018-8-7 14:41:08 | 显示全部楼层
楼上解释的比较清楚。
 楼主| 发表于 2018-8-7 14:48:11 | 显示全部楼层


回复  uunn69


     没有声明void的function是有返回值的,如果没有return某个值,会以最后一个function name的变量值作为返回值,如果调用function不用于赋值,你可以看看是不是会报错(我不确定);另外,sv的function里面可以带参数,在后面的括号里声明输入输出什么的,在function里面对这些参数的修改也可以认为是一种输出。
zqq624723237 发表于 2018-8-7 14:01




能不能给个具体的例子,多谢。
不明白最后一个function name,这个最后一个是什么意思?是指function中的很多变量,最后一个变量?
sv的function的输入输出参数,在function里面对这些参数的修改,
如果一个function,没有声明void,也没有调用return函数。它的返回值是指什么?


发表于 2018-8-9 12:41:03 | 显示全部楼层


这书上的话我早看过无数遍了。。。   这里不讨论是否消耗仿真时间。  

关键是,function metho ...
uunn69 发表于 2018-8-7 14:12


书上都看过无数遍 了, 还不知. 问问提, 请谦虚点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 11:23 , Processed in 0.024853 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表