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

时间:2014-07-22 16:27:51

标签: 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 work -sv foo_const.v foo_const_slice.v

我收到以下错误消息:

** Error: foo_const_slice.v(46): (vlog-2730) Undefined variable: 'NUM_BITS'.

1 个答案:

答案 0 :(得分:2)

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

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

戴夫