PS:本文中使用图片根据路科验证视频课改编
package pkg_a;
class packet_a;
endclass
int shared = 10;
endpackage
package pkg_b;
class packet_b;
endclass
//int shared = 20;
endpackage
module tb;
//class packet_a;
endclass
//class packet_b;
endclass
import pkg_a::*;
import pkg_b::*;
initial begin
...
end
endmodule
1、不同package中的同名变量
图中shared变量在pkg_a中为10,pkg_b为20。当int shared = 20没有被打开时,shared变量可以直接被索引即$display("pkg_a::shared = %0d",shared),但是当int shared = 20被打开之后,就会出现冲突,想要索引pkg_a中的shared的话就必须得指定package即$display("pkg_a::shared = %0d",pkg_a::shared)。
2、同名的类
如图import pkg_a::* 和 import pkg_b::* 保证了在initial begin-end中直接索引到pkg_a和pkg_b中包含的类。但是,当module tb中出现了与pkg_a、pkg_b中同名的类,那么import保证的是首先索引到module中同名的类。即当两个class注释打开后,想要例化packet_a = new(),此时例化的是module中的packet_a,关闭class注释后例化的是pkg_a中的packet_a。