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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 20193|回复: 28

[求助] systemverilog 中的virtual都是什么意思?

[复制链接]
发表于 2011-9-27 11:18:05 | 显示全部楼层 |阅读模式

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

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

x
有时候会定义virtual interface, virtual task, virtual function, virtual class...都是什么意思?
发表于 2011-9-27 13:04:04 | 显示全部楼层
由virtual所声明的内容可理解为一个模板,后续的例化和引用可在这个模板上进行增加或修改,这样就呈现出特定的内容或特性。不同的引用或修改实现不同的对象、接口和方法。

这样就很方便的实现了面向对象的特性,即多态实现随继承对象的不同而不同。
发表于 2011-9-28 09:20:10 | 显示全部楼层
说明:
1、virtual interface:定义一个interface,且实例化多个后,如果没有定义virtual,则在任何一个实例中修改了某个信号值,在其他实例中都会受到影响。如果定义了virtual,则每个实例独立。
2、virtual function/task:用于OOP思想的继承使用。当定义了virtual时,在子类中调用某function/task,会先查找在子类中是否定义该function/task,如果没有定义该function/task,则在父类中查找。未定义virtual时,只在子类中查找,没有定义就是编译错误。
3、virtual class:从未用过,等待牛人解答

用法:
1、virtual interface:如果该interface只有一个实例,可用可不用virtual,有多个实例,需要virtual。更好的办法是,都加上virtual。
2、virtual function/task:如果该class不会被继承,则所有的function/task都不需要加virtual。如果该class会被继承,则用户定义的function/task(除了new()/randomized()/per_randomize()/pose_randomize()以外),都应该加上virtual。更简单的做法是,在用户定义的function/task都加上virtual是不会错的。
3、virtual class:期待牛人解答
 楼主| 发表于 2011-9-28 17:51:22 | 显示全部楼层
多谢解答!
发表于 2011-9-29 15:32:14 | 显示全部楼层
解答的很清楚。。。多谢
发表于 2011-9-30 09:34:57 | 显示全部楼层
virtual 还是很有用的,是面向对象思想的一个重要特性!
发表于 2011-10-12 13:46:17 | 显示全部楼层




1、virtual interface:
    interface 和 module是一样的, 都是静态的变量, 也就是在程序开始时, 内存中就有了其实例. 但virtual interface只是申明一个handle, 就好像一个指针一样, 可以再程序进行中进行construct, 所以class里必须是virtual interface.

2、virtual function/task:
   你的意思是不是用classname::taskname()调用时, 有virtual, 但是子类中没重载的话, 不会报错?
一般申明了virtual, 就可以重载, 这也是new为什么不能virtual的原因, 否则被子类重载了, 那用父类的handle new的时候, new出来是啥啊???

3、virtual class:
   虚类只用来定义类的格式, 和成员的名字, 参数, 不能被实例话, 只能被重载, 用于在项目中定义一些标准的类, 例如driver类, 这样大家extend出来的driver的基本的格式都是一样的, 易读易理解. 在virtual class里的方法最好使用 pure virtual 修饰, 叫做纯虚方法, 也是用来定义方法的名字和参数列表的, 方便大家统一名字.
发表于 2011-10-13 16:12:23 | 显示全部楼层
解释得很清楚
发表于 2012-4-7 12:19:35 | 显示全部楼层
非常的谢谢!
发表于 2012-4-13 07:05:49 | 显示全部楼层
3楼说的还算明白,多实践就知道了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-27 23:35 , Processed in 0.035452 second(s), 8 queries , Gzip On, Redis On.

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