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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: 飞扬紫百合

[求助] UVM中,什么场合用callback最好?

[复制链接]
发表于 2014-9-18 15:34:03 | 显示全部楼层
callback有用,但是尽量不要用
不赞成这个观点!!
发表于 2014-9-18 16:13:31 | 显示全部楼层




  看个人的使用习惯吧。factory与面对象的重载特性通常可以替代callback,且使用起来更加简单一些。callback使用的时候,要定义好多东西,好多步骤,用起来比较麻烦。
发表于 2014-9-19 23:43:58 | 显示全部楼层


看个人的使用习惯吧。factory与面对象的重载特性通常可以替代callback,且使用起来更加简单一些。c ...
doogo 发表于 2014-9-18 16:13

我觉得折衷一点的办法是加一些类似callback的函数或者任务,一般情况为空,需要的时候派生个子类修改这些函数,把变化的部分隔离开来,很直观
发表于 2014-9-19 23:56:32 | 显示全部楼层


我觉得折衷一点的办法是加一些类似callback的函数或者任务,一般情况为空,需要的时候派生个子类修改这些函 ...
seabeam 发表于 2014-9-19 23:43



派生一个新的类,把变化的部分使用虚函数重载,然后使用factory的override功能。同样也很干净。使用callback的最关键的一点是,你需要提前预知到什么地方可能需要callback,并且留下接口。但是这个要求对于一般人来说有点难。即使是经验丰富的工程师也很难做到。
使用factory则不存在这个问题。只要写代码的时候注意一下,不要有太长的task或者function,换言之,task和fucntion一定要短,那么重载的时候就会非常方便。这就是小而美的哲学,我在《UVM实战》中对此亦有提及。
发表于 2014-9-20 12:50:22 | 显示全部楼层


派生一个新的类,把变化的部分使用虚函数重载,然后使用factory的override功能。同样也很干净。使用cal ...
doogo 发表于 2014-9-19 23:56


是这样的,尽量遵循单一职责原则,功能太多就不好修改。
具体要在什么地方加callback确实有经验成分,例如图像的平台一般会在一帧处理开始或者结尾加上,这个还是比较好预知的,但是不同领域有不同的要求,需要经验的积累,就这点来说,factory确实有优势
发表于 2014-9-21 09:36:15 | 显示全部楼层
本帖最后由 doogo 于 2014-9-21 15:14 编辑


是这样的,尽量遵循单一职责原则,功能太多就不好修改。
具体要在什么地方加callback确实有经验成分,例 ...
seabeam 发表于 2014-9-20 12:50



单一职责原则通常就意味着功能模块划分。个人认为,功能模块划分的事情由callback来实现并不是最好的选择。这属于当初在类或者任务/函数的规划时就要做好的事情。如果一个DisplayPort的driver,代码估计会有几千行。这些代码放在一个driver中是不可想像的。必须分成多个模块,如stream_driver,pack_driver等等。当然了,也可以使用callback来划分,那么就是stream_callback,pack_callback等。只是个人的使用习惯而已,有人已经习惯了用callback来做一切事情。在《UVM实战》就有一节中尝试着放弃factory,放弃sequence,只使用callback来实现所有的test case,结论完全是可以的。
对于同一个问题,UVM提供了多种解决方案。在这多个方案当中选一个比较好的,如果这些方案实现难度都差不多,那就选择自己习惯的用法。有时候,面对自己习惯的用法,即使它不是最优解,但是依然会使用。这就是习惯的力量。
发表于 2018-11-27 22:49:42 | 显示全部楼层
谢谢分享,学习了
发表于 2018-11-28 12:20:42 | 显示全部楼层
Inject Error ,Coverage collect  主要是VMM里面用得多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-15 03:44 , Processed in 0.019714 second(s), 6 queries , Gzip On, Redis On.

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