在uvm或者sv中,经常会碰到被virtual修饰的 class、sequence、sequencer、interface、function,不知道你有没有这样的疑问,为什么需要使用virtual,不用可不可以?所以就总结了一下。
virtual class在一切面向对象编程语言中,类最基本的元素。基类(或者说父类)可以包含最基础的一些组成,特征,形成最基本的框架,但是并不完整。基类作为一个不完整的类, 它的主要作用不是被实例化,而是被拓展 ,因为,不完整就实例化也没有意义。
在后续的环境构建当中,可以从这个基类扩展出很多的子类,丰富基类的结构。这样的类,就可以设置成virtual class,使其变得抽象。注意,一个抽象的类,是不能够被实例化的,它只能被继承/扩展,如果实例化,则会出错。
virtual function和pure virtual functionpure virtual function是偶然在工作中遇到的,可能见到的次数不多,但还是要学习一下。
virtual function和类的多态性有关,使用户在设计和实现类时不需要担心句柄指向的对象类型是父类还是子类,只要通过虚方法,就可以进行动态绑定,或者sv中称为动态查找方法(摘自红宝书)。
简单理解就是,virtual function是基类中的函数模板,可在派生类中使用新代码重写该函数模板’,它存在对的目的就是为了后续能够重写该函数。如果分不清到底需不需要加上virtual,可以都加上,便于后续的重写,不重写也不会报错。
pure virtual function 虚纯函数是基类中的函数模板, 必须在派生类中用新代码重写 。
总结一下:对于virtual function ,是在base中提供了一个函数模板,但不是必须进行override,但对于pure virtual function 而言,必须进行override,如果你忘记override,则会出现编译错误,也起了一种提示作用。
virtual sequence/sequencervirtual interfacevirtual interface你可以认为语法就是这样。作为类和dut之间进行通信的唯一方法,在一个类中,如果实例化一个interface,是不允许的,出现了就会报语法错误,只能在module里面直接
分享一种电阻测温电路中检测电阻阻值的方法
ams推出环境光/颜色(RGB)和光源闪烁检测集成传感器——TCS3410
如何为电动自行车建立USB充电端口
小米平板3价格配置曝光!4GB运存+64GB+Win10,四月回归!
什么是光耦隔离_光耦隔离的主要作用
为什么需要使用virtual,不用可不可以?
硕数物联科技RSC-910主板介绍
一个关于三相Vienna拓扑技术知识(下)
51单片机对无线抢答器的设计
国自机器人三款产品及两套行业解决方案亮相
确定PCB Layout爬电距离、电气间隙的方法
会“呼吸”的防水透气阀:小阀门中有大门道!
基于TD-SCDMA的HSDPA系统性能仿真研究
六要素气象传感器介绍
时控开关怎么设置定时时间?
“人造眼”把大量纳米级光传感器整合到半球形视网膜状组件中,
电子白板的计算机接口
[组图]调频立体声广播发射机(BA1404)
实用的集成芯片测试仪方案
热流传感器采集系统的设计