面向对象(Object Oriented Programming)的特性:
封装:有个包,包里面很多东西,找到包的的名字就可以去拿里面东西
继承:子类的包里面东西比父类(基类)包里面的东西还多
多态:子类和父类的包里面都有一个椅子,并且都叫椅子,但是椅子的功能不一样,至于用哪一把椅子,可以自己决定去调用哪一把椅子
优势:Veriog使用接口层次方式,OOP直接使用函数或者任务例化调用的方式
| HDL | SV |
|---|---|
| module | class |
| instance | object |
| instance name | handle |
| registers & wires | properties (variables) |
| behavioral blocks(always,initial),task,functions | tasks and functions |
| port | calls,mailbox |
variables(properties)用来系统建模;
task & function(methods)用来控制,验证平台的运行,控制数据的传输。
properties 和 methods 就是一个类的成员变量
module 一开始就确定是否应该被例化,静态的;内部的变量和方法对外部公共开放
class随时构造new(),动态创建对象,更加灵活;根据需要选择受保护protected和local
继承:公共特性功能全部放在Basic Class中,很容易拓展一个新的class,定制全新的功能
多态:子类和父类中的function同名?到时候用谁的方法?
直接用基类变量来存放子类变量,会报错,使用虚函数virtual;子类直接存放父类,会报错,需要强制转换$cast();
子类和父类中的property和method同名?到时候用谁?
派生类(子类)可以重载override从基类继承的成员定义。
System veilog面向对象实操
class rectangle;
int length

这篇博客探讨了面向对象编程(OOP)的概念,如封装、继承和多态,并通过SystemVerilog的实例展示了如何在硬件描述语言中应用这些概念。文章通过创建Rectangle和Square类来说明类的继承和方法重写,并通过实例展示了对象的创建和使用,进一步解释了OOP在HDL中的灵活性和实用性。
最低0.47元/天 解锁文章
1208

被折叠的 条评论
为什么被折叠?



