SV中的OOP
OOP:Object-Oriented Programming,有两点个人认为适合验证环境的搭建:1)Property(变量)和Method(function/task)的封装,其实是BFM模型更方便的应 用。2)继承(Inheritance)与合成(Composition)非常适合一个架构的搭建。 在SV中,类可以定义在program, module, package中,但是一般一个类或几个相关的类会单独写在一个文件中。最终在program中调用。而且在SV中,所有成员 默认都是public类型的,除非显示的用local/protected来声明。实际上,SV class中的变量应该尽可能的用public并且rand,来增加可控性。 local/protected都可以针对property和method来说明,local表示member只对该class的对象可见,extend出的subclass也是不可见的。 但是该class中non-local的method调用了local的method或者property, inherit之后的method也是可以正常执行的。 protected表示member对该class和它的subclass都是可以见的。 对外部的大环境不可见。 基类的指针可以直接指向扩展类的对象,但是只能调用扩展类中基类的那一部分,