OPP的概念

1.概念

  • variables(properties)变量 -> model transaction
  • subroutines(methods) -> 操作transaction
  • member :properties + methods

oop 即 数据和对数据的操作封装到class里

2.Encapsulation

1) procedural programming(verilog or c)

数据和对数据的操作是分开的

transaction: wr_en , addr, data, crc

  • 将参数传进来,定义参数

2)OOP programming (sv)

数据和对数据的操作是一起的,封装到class里

3.inheritance 继承

  • 在transaction的基础上派生出子类,会继承父类的所有东西,子类里又可以增加很多东西, 子类可以覆盖父类的task or function(定义成父类相同的名字,如果想调用父类的东西,用super.函数名来调用)

base class -> derived class (eg: transaction -> error_trans)

  • 提高可重用性,可重用的tb

父类赋给子类:$cast()

子类赋给父类,父类的句柄指向子类,就可以生成n多个transaction:

tr = etr;

or $cast(etr,tr);

4.Polymorphism 多态

多态是用virtual method实现,多态指的是同一种类型的对象,执行统一方法,可能会产生不同的结果

如果父类子类的function没有用virtual去实现,当子类赋给父类的句柄传进来的时候,仍然是指向父类的function。

5.Appendix

1. coding style:

对数据的操作放到类的外面   “ :: ”  指的是类作用域符号

2. 特殊的类

1)parameterized class

提高可重用性,写generic type,做成参数化,只需要改参数(例化的时候改参数就行)

2)typedef class

  • 先声明再使用;
  • 简化参数化类型的定义 typedef stack # (bit[31:0]) stack32;

3)static property and method

在program里一定要申明automatic, 尤其在fork join在加for循环的时候可能不知道i是多少。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值