我试图制作一个大的包,以导出子包,以便在添加新的子包时不对测试文件产生任何依赖性。为此,我只是按照以下步骤操作,但出现了编译错误,似乎导出无法如LRM中所述正常运行。我的代码中有没有遗漏的地方?
package sub_pkg_A;
..
endpackage
package sub_pkg_B;
..
endpackage
// just import and export
package top_pkg;
import sub_pkg_A::*;
import sub_pkg_B::*;
export sub_pkg_A::*;
export sub_pkg_B::*;
endpackage
// test file
module my_test;
import top_pkg::*;
..
endmodule
答案 0 :(得分:1)
问题在于通配符导入语句import pkg::*;
不会导入任何标识符,除非存在对该标识符的明确引用。
package sub_pkg_A;
int A,B,C;
endpackage
// just import and export
package top_pkg;
import sub_pkg_A::*; // A, B, C become candidates for importing
int D = A; // imports A
export sub_pkg_A::*; // exports A
export sub_pkg_A::B; // imports/ exports B
endpackage
// test file
module my_test;
import top_pkg::*; // A, B, D become candidates for importing.
..
endmodule