system verilog 采用modelsim编译类问题
没有人解答吗?
没有人解答吗?
估计是你文件的编译顺序有关系,其实不用typedef class B的,把B文件放到A之前编译就好了。没用过modelsim编译,你检查一下,是不是可以把B放到A之前编译,包括(不限于)在工程里面用鼠标把B文件拖到A前面。
需要写一个文件,将a,b的文件include一下就好了
编译顺序我调过,还是报错。
您好,能否说的详细一些?谢谢!
这倒是一个解决的办法,在class A这个 .sv 文件的前面加上`include "B.sv"
使用typedef class B其实是个解决办法,但是前提是你使用callback的形式来使用B,如果直接调用B中的函数,那是会出问题的
编译文件其实也是一门技巧,需要对软件的编译指令有全面的了解,可以使用这样几种方式:
1. 直接指定编译文件,但是要注意编译顺序;
2. 指定编译文件所在的目录,用库的方式进行编译
同问,确实在A.sv中加入“include “B.sv” ”可以解决这个问题,但机理还有些不清楚,v代码或vhd代码,针对调用的例化的模块提前编译下即可,但是对已sv中的对象而言,就需要放在一起,学习uvm过程中,是将所有的类文件,放在一个pkg.sv中,统一进行编译。如果有c++或者sv清楚地可以详细说下。
这个可以参考UVM等,他们都是最后定义一个文件,在这个文件中把其他所有的文件都include进来;
System Verilog 标准有如下内容:
The actual data type definition of a forward typedef declaration shall be resolved within the same local scope or generate block. ...
采用您的方法目前已经解决。我自己搭了一个简单的平台,在每一个需要include的文件前都加了include,编译的时候又出来一个新的问题,Modelsim总是报ERROR,说我有的类multiply defined。请问您之前遇到过吗?
進來學習學習
先mark一下
小编 啊我和你的问题一模一样啊,说packet 重复定义,请问你解决了吗?留个联系方式交流一下
小编求加qq 649604193