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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5373|回复: 9

[求助] UVM的unpack_bytes()求助!!!《UVM实战》(张强 编著)

[复制链接]
发表于 2018-1-24 11:42:00 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 china12321 于 2018-1-24 17:27 编辑

《UVM实战》(张强 编著)的第2.3.7节的“代码清单2-57”里的第57行,为什么要写成下面这样? data_size = tr.unpack_bytes(data_array) / 8;
这里的data_size有什么用?
可以直接写成下面的形式吗?
tr.unpack_bytes(data_array) ;
发表于 2018-1-24 21:29:35 | 显示全部楼层
of course,可以
 楼主| 发表于 2018-1-25 10:25:34 | 显示全部楼层
回复 2# churchmice
可以简单的说明一下为什么吗?
发表于 2018-1-25 14:04:07 | 显示全部楼层
因为这货就是这么申明的呀。
你不写 x= ..... ,它就会报warning,说你返回值类型不对。
这是C语言的基础知识吧。。。





  1. function int uvm_object::unpack_bytes (ref    byte unsigned bytestream [],
  2.                                        input  uvm_packer packer=null);
  3.   m_unpack_pre(packer);
  4.   packer.put_bytes(bytestream);
  5.   m_unpack_post(packer);
  6.   packer.set_packed_size();
  7.   return packer.get_packed_size();
  8. endfunction


复制代码
发表于 2018-1-25 23:11:14 | 显示全部楼层




这有啥好说明的嘛?返回值你没有用的需求你就不用呗,就像printf都还有返回值呢,难道你写个printf还写成下面这样?x = printf("%x",17)

只有在你需要知道printf输出了几个数的时候你才会去计较他的返回值对吧?


其实这个问题本质是我们现在很多函数调用都是用副作用来实现的,就拿你这个unpack而言,传入参数是一个ref类型,所以function里面的操作其实已经影响了你的形参。很多人觉得这样很头疼,不纯粹,所以有函数式编程( function programming ),要求所有的function都没有副作用,所有的操作都需要通过返回值来实现,比较容易上手的有scheme,你有兴趣可以去了解一下
 楼主| 发表于 2018-1-26 09:51:49 | 显示全部楼层
回复 4# VPN_chip_design

感谢回复,看来为了去掉warning,还是要加x=......
 楼主| 发表于 2018-1-26 10:32:18 | 显示全部楼层
回复 5# churchmice
谢谢大神
发表于 2018-1-26 14:14:55 | 显示全部楼层


回复  VPN_chip_design

感谢回复,看来为了去掉warning,还是要加x=......
china12321 发表于 2018-1-26 09:51




   你可以void'(function)忽略掉返回值这样就没有warning了
发表于 2018-1-27 12:34:20 | 显示全部楼层
回复 8# churchmice


   thank you for replying
发表于 2018-1-28 18:32:58 | 显示全部楼层
怪不得看到别人喜欢用void'(unpack...)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-22 03:34 , Processed in 0.020460 second(s), 6 queries , Gzip On, Redis On.

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