Embedded 使用QuestaSim时未定义的全局变量

Embedded 使用QuestaSim时未定义的全局变量,embedded,verilog,fpga,system-verilog,Embedded,Verilog,Fpga,System Verilog,我在foo_const.v中定义了一个变量,它在foo_const.v中的定义如下: localparam NUM_BITS = 32; 然后我有另一个文件foo_const_slice.v,它执行以下操作: localparam SLICE_ADDR_BITS = NUM_BITS; 使用vcs命令可以很好地编译: vcs-sverilog foo_const.v foo_const_slice.v 但当我尝试使用QuestaSim时: vlog-work-sv foo_const.v f

我在foo_const.v中定义了一个变量,它在foo_const.v中的定义如下:

localparam NUM_BITS = 32;
然后我有另一个文件foo_const_slice.v,它执行以下操作:

localparam SLICE_ADDR_BITS = NUM_BITS;
使用vcs命令可以很好地编译:

vcs-sverilog foo_const.v foo_const_slice.v

但当我尝试使用QuestaSim时:

vlog-work-sv foo_const.v foo_const_slice.v

我收到以下错误消息:


**错误:foo_const_slice.v(46):(vlog-2730)未定义变量:“NUM_BITS”。

问题是,默认情况下,vlog编译的每个文件都进入一个单独的编译单元,就像C/C++和许多其他语言一样。默认情况下,vcs将所有文件连接到一个编译单元中

虽然有一种方法可以更改默认值(您可以在用户手册中查找),但编写此代码的正确方法是将参数放入包中,并在需要时导入包


Dave

是否在任何范围内定义了
NUM_BITS
?我的意思是,它是在一个模块中还是在一个包中?添加-mfcu修复了它:)tnx的提示:)