Embedded 使用QuestaSim时未定义的全局变量
我在foo_const.v中定义了一个变量,它在foo_const.v中的定义如下: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
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的提示:)