1. 句柄的使用
1.1 句柄传递
- 对象不会作为参数传递,传递的只可能是对象的句柄。
- sv中,若方法没有参数可以不带()。但是一般带,突出是方法
- 上面的例子会报错。
- 首次声明句柄t的时候,其没有指向任何对象,也就是t其实是NULL。create方法在不指明参数方向时,默认是input,但是该函数没有返回值,因此虽然在函数内部进行了一些操作,但是没有对函数外部产生任何影响。因此其实create(t)之后t仍为NULL,故在通过t调用addr时候会报错。
1.2 句柄的动态修改
- t.addr=8
- new出现一次,只有一个对象,始终是对一个对象进行操作。fifo存储的是句柄,实例不会存放到什么地方。
2. 包
2.1 包的意义
2.2 包的定义
- `include代表是一个纯文本替换。编译package相当于全部都编译。
2.3 包和库的区别
2.4 包的命名规则
- package中的.sv文件命名最好和package本身命名有联系。这样在使用import xx_pkg::*的时候可以减少冲突。
2.5 包的使用
- 包中不能定义和硬件相关的内容:module、interface。
- 类一般都是放在包里编译,一个模块所有的验证组件一般都放在同一个pkg中去编译。调用时一律通过import引用。
- `include在前意味着先编译。
- ABCD。只要import其他包,那么这个包汇总的内容就可以被引用 。