SystemVerilog验证 测试平台开发参考 第八章 OOP面向对象编程高级技巧指南
发布时间
阅读量:
阅读量
8.1 继承
设计一个能够实现错误注入并具备可调节延时功能的复杂类,用于总线事务处理。
方法1:采用合成(composition)的方式,即在某一类中实例化其他类型的类。然而,在某些情况下,将功能模块拆分为独立的部分存在较大难度。若选择合成方式,则需要分别构建用于正确事务和错误事务的不同类,同时测试平台中的正确类代码也需要进行重写,以适配错误类的对象。
方法2:通过扩展类的方式实现,当需要新增事务类型时,尽量减少对现有测试代码的改动,例如添加错误注入机制。
扩展类与合成类之间的差异:
扩展类主要用于应对新增事务类型的需求;而使用合成方式时,则需要对大量代码进行修改,操作较为繁琐。
具体应用方式:
扩展类能够继承基类的变量及子程序。
- 基类中的方法需声明为virtual,以便扩展类可以对其重新定义。当扩展类中存在与基类同名的方法时,可通过super.函数名的方式调用基类中的对应函数。需要注意的是,在System Verilog中,并不允许采用super.super.new这种形式进行多层构造函数调用。
- 若基类的构造函数new()包含参数,则扩展类必须定义自己的构造函数,并且在该构造函数的第一行调用基类的构造函数。
例8.3 扩展类中包含参数的构造函数
class Basel;
int var;
全部评论 (0)
还没有任何评论哟~
