UVM中主要的三种virtual

本文详细介绍了UVM中virtual关键字的三种常见用法:virtual class、virtual function/task和virtual interface,阐述了它们在多态性中的作用,以及如何在实际应用中实现动态重载和接口定义。
摘要由CSDN通过智能技术生成

目录

1、virtual class

2、virtual function/task

3、virtual interface

微信公众号


 

​    virtual在uvm是一个经常看到的关键字,这个关键字与OOP三大特性(封装,继承,多态)中的多态特性息息相关,下面主要介绍一些virtual的三种常见用法。

    通过virtual声明的类,接口,任务与函数,其本身自带一些方法或者函数。后续的例化或者扩展可以对原有的内容进行增加或者修改,从而实现同一函数不同方法的多种形态。

 

1、virtual class

    不能被直接例化的类被定义为虚类,也就是说这都是概念类,没有能直接对应的实体,只能被扩展(重载)后实例化。比如动物就是虚类,而人类可以被理解为可以直接例化的实类。SV中一般用这个定义最基层的类,防止这些类被错误使用。

    虚类中的方法通常使用关键字 " pure virtual " 纯虚方法。同时OOP规定,只要class中存在一个没有被实现的pure function,就不允许例化这个class。

    UVM中一个显著虚类是uvm_void:里面不包含任何成员变量以及函数,是所有其他UVM类的基类。

virtual class uvm_void;endclass

 

 

2、virtual function/task

    这种使用对应着面向对象中多态的概念。以下SV语法说明自带的例子很好的解释了这种用法

class BasePacket;   intA = 1;         intB = 2;                                                            function void printA;                                                 $display("BasePacket::A is %d", A);                                endfunction: printA                                                virtual function void printB;                                     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值