我在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'.
发布于 2014-07-23 03:30:31
问题是,在默认情况下,vlog编译的每个文件都进入一个单独的编译单元,就像C/C++和许多其他语言一样。默认情况下,vcs将所有文件连接到一个编译单元中。
尽管有一种方法可以更改默认值(您可以在用户手册中查找它),但编写代码的正确方法是将参数放在包中,并在需要时导入包。
戴夫
https://stackoverflow.com/questions/24892840
复制相似问题