SystemVerilog -- virtual方法

SystemVerilog -- virtual方法

方法 virtual task/function

(1) 类中的方法可以在定义的时候通过添加virtual关键字来声明一个虚方法,虚方法是一个基本的多态性结构.

(2) 虚方法为具体的实现提供一个原型,也就是在派生类中,重写该方法的时候必须采用一致的参数和返回值.

(3) 虚方法可以重写其所有基类中的方法,然而普通的方法被重写后只能在本身及其派生类中有效。

(4) 每个类的继承关系只有一个虚方法的实现,而且是在最后一个派生类中。

virtual class

  • 在class声明之前加上了virtual关键字,用于定义特定目的模板类,即定义了扩展类需要实现的原型。
  • 在扩展类中需要实现virtual class中的方法。
  • virtual class无法创建相应的对象(object)。尝试使用构造函数new()构造 virtual class的对象(object)将给出编译错误
  • 在UVM类库中定义的类库大多数为virtual class,几乎所有用户定义的UVM验证平台都是根据用户定义的类构建的,这些类是UVM组件类的扩展。例如所有用户定义的transactions都是uvm_sequence_item virtual class的扩展类,所有用户定义的sequence都是uvm_sequence virtual class的扩展类。
  • UVM基类库是用户扩展以构建UVM验证平台的一组模板文件

使用virtual task/function — (子类将父类 display function进行了改造 — 即多态):


不使用virtual — (子类将父类 function 各自是各自的):


免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部