http://www.eetop.cn/blog/html/28/1561828-2316833.html
师父在文章 《SV系统集成篇之一:包的意义》实际上讲解的很透彻了。
前几天,在安装sysnopsys Ethernet Vip时发现:
当我把软件部分按照uvm_getting_start安装, 但是elaboration的时候ethernet中的config文件无法正常使用,报告其中的一个枚举变量找不到。
这就涉及到include 和 import 的意义了。
根据include文件, 可以一层层组织文件的编译。
但是import package库,package库中的方法就只能作用于当前域(即当前文件及当前文件include的文件中)了。通常的做法,也就是使用package来分割方法的使用域。
最终的解决办法只是把定义枚举变量的库import进来。
——-以下来自Package的意义的讲解————–
如果在package a_pkg中import了package b_pkg::type_b,那么在module1中import a_pkg::*时,无法引用到type_b。因为a_pkg只是使得b_pkg::type_b在a_pkg域中可见并加以使用,并未定义在a_pkg中。所以,用户需要牢记一点的是,import操作使得类型可见的域只是调用该import时当前的域。例如下面的例子中,a_pkg中可见b_pkg::b_mon,但是module1则无法可见a_pkg::b_mon。