微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > system verilog 代码请教一个问题

system verilog 代码请教一个问题

时间:10-02 整理:3721RD 点击:

各位大侠,下面是我在资料上看的一段代码,编译的时候提示这个错误,can not find package. 下面是代码:
先定义了一个包:
//---file.sv
package a ;
...
class am_c ;
...
endpackage
//----file2.sv
module mm();
import a::* ;
...
...
endmodule
//----file3.sv
在file3中用到了file.sv中定义的类 am_c,怎么讲这个类包含到file3.sv中?
编译的时候提示在file2.sv中,找不到a这个包。 小弟不明白,求解答啊。
2 import a::* 中的通配符,在我用的gvim中怎么像一个小五角星,不是现在这个六边的,是不是这个原因啊?

看看你的package的那个file1.sv有没有先编译。

用incdir把package的路径加到编译命令里面去

我是在qutasim下面点击全部编译的那个按钮的。应该是都编译了。

我是在qutasim下面,直接点击编译的那个按钮,?
你说的加入到编译路径我不太明白?请教一下

我没用过qutasim,在vcs里面,因为编译要写一个filelist,我以前碰到过类似的问题,你如果把package a所在的file.sv放在后面编译:由于编译器在检查file2.sv中的"import a::* ;"时,会去package的naming scope里面检查是不是有一个a,而此时编译器没有编译file.sv,因此没有这个package存在,所以编译器自然会报错了。这个跟你有没有点击全部编译时没有关系的。你可以做个实验,把这几个.sv的内容放都放在一个.sv里面,按照你现在的顺序再编译下,看看有没有问题,然后你把package a的内容放在最后,看看有没有问题。

楼上的正解!

好的,我试试这个。

再试试`include file1.sv 到file2.sv的最前面,总之就是这几个文件没有找到依赖关系。

看看你的package的那个file1.sv有没有先编译。用incdir把package的路径加到编译命令里面去



抱歉,我们一般都是用脚本命令行来运行的,questa我不熟悉,都用vcs/irun.不过肯定也有shell的脚本来run的。比如:
vlib work
vlog -f compile_questa_sv.f
vsim -suppress 2223 -do vsim.do -c -suppress 3829 top

compile-questa_sv.f的内容如下:
-suppress 2223
+incdir+$OVM_HOME/src
$OVM_HOME/src/ovm_pkg.sv
get.s

也遇到过这种问题

大牛的指点啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top