UVM/SV:类声明语法错误



我在我的一个代码中面临以下问题:

Error-[SE]语法错误以下verilog源有语法错误:令牌"monitor"应该是有效类型。请申报为虚拟物品它是一个接口。监控m_monitor;

我有一个名为monitor.sv的文件,我正在使用类监视器。我已经在另一个名为soc_uvm.svh的文件中声明了这个类。

frommonitor.sv

class monitor 
//body contains lots of hierarical paths  
endclass  

源自soc_uvm.svh

class soc_uvm_env extends uvm_env  
//DEclare  
monitor m_monitor ;  
endclass  

frompkg.svfile

Package soc_uvm_pkg  
`include soc_uvm.svh  
endpackage 

这个soc_env。SVH再次包含在pkg.sv文件中。

在我看来,在soc_uvm编译期间,monitor类从soc_uvm_env的范围中丢失了。svh编译器无法解析monitor,因为它不知道该类型。

我希望你有以下内容:

//monitor.sv
class monitor extends xy;
//Some stuff
endclass : monitor
//soc_uvm.svh
class soc_uvm_env extends uvm_env;
//Declaration
monitor m_monitor;
//Some other stuff 
endclass : soc_uvm_env
//pkg.sv
package soc_uvm_package;
...
`include "monitor.sv" // <- Isn't this missing?
`include "soc_uvm.svh"
...
endpackage

如果您没有包含文件"monitor.sv"在同一个包中,您可能需要import包所在的监视器。sv包含import pkg_where_mon_is::*;import pkg_where_mon_is::monitor;。或包括"monitor.sv"放进你的包里。所以下面可以修复它。

package soc_uvm_package;
...
import pkg_where_mon_is::*; //Will import whole package
//or
import pkg_where_mon_is::monitor; //should import only class monitor from package
`include "soc_uvm.svh"
...
endpackage

只是一个附带的建议,我想看看一些命名约定的样式指南,就像这里的链接。

相关内容

  • 没有找到相关文章

最新更新