1. 类和对象
1.1 概述
1.2 验证环境为什么要面向对象编程呢?
我们之前提到测试平台,不同的组件要完成的使命是不一样的,每个组件都有它自己的特性,那么,这不就是OOP思想的体现嘛?
1.3 OOP概念的要素
1.4 对比Verilog的例化 和 SV class例化 的差别
1.5 创建对象时,要明确 声明 和 创建(例化)
1.6 句柄
1.6.1 句柄的传递
1.6.2 句柄的使用
1.7 对象的销毁
1.8 静态变量
1.9 静态方法
1.10 练习
答案:BCD
解析:B错误,一个类可以有很多对象,比如水果是一个类,那么苹果、香蕉等等等都是对象;C错误,句柄相当于指针一样,可以有多个;类属于软件域中的,不可以出现wire或reg。
此时tr.addr的值是什么?
答案:10
解析:调用之后,,a的值为10,之后又把a赋给addr,覆盖掉之前的十六进制的10,所以最后是10.
答案:B,
解析:注意的是,只有 有句柄指向的对象 才不会自动回收,所以,该题句柄wd最后指向new(4),所以开辟空间大小为4B。
答案:D
解析:区分与上一个题的区别,initial中默认的都是静态的,该题加上automatic之后,变成动态的,那执行完initial1之后,initial1中的所有变量都消失,所以句柄也会消失,从而指向的对象也都消失,因此,开辟的空间为0B。
2. 类的成员
2.1 概述
2.2 类 与 结构体 比较
2.3 类 与 模块 比较
2.4 类的常见问题
2.5 练习
答案:D
解析:因为nclock是local型的变量,外部是不可以访问的,可以通过成员变量访问内部变量,所以会报错。
答案:A
解析:B错误,对象可以在编译时例化,换句话说,对象可以在没有仿真的时候就有静态句柄存在了;
C错误,根据类的封装特性,可以保护无法被外部访问的变量,但模块不行;
D错误,继承属于类的三大特性之一。
3. 类的继承
3.1 概述
3.2 成员覆盖
解析:D,子类访问某个变量和方法优先在自己的类中找,找不到去自己的父类中找,一直往上找;如果子类赋值给父类句柄,那么此时父类也只能访问到父类自己的那些成员变量和方法。
练习
答案:D
解析:D正确,没有该属性 ,所以无从得知;A错误,不可以修改,portectd只有该类或者子类可以访问,外部不可以;B错误,is_good是local属性,不可以外部访问;C错误,没有get方法,不可以得知。
4. 句柄的传递
解析:C,注意,function的端口默认都是input,是没有返回值的,在调用create方法之前,句柄t是悬空的,即t为null,此时调用create方法传进去的是null,所以执行这步的时候报错。
解析:C,注意的是,句柄t总是指向同一个对象,而我们推进去的是句柄,而不是对象本身,所以,三个句柄总是指向同一个对象,那么addr最后的值是8。
5. 包
5.1 包的意义
5.2 包 与 库 的区别
5.3 包的命名规则
5.4 包的使用
答案:ABCD