【问题标题】:Undefined global variable when using QuestaSim使用 QuestaSim 时未定义的全局变量
【发布时间】:2014-07-22 16:27:51
【问题描述】:

我在 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'.

【问题讨论】:

  • NUM_BITS 是否在任何范围内定义?我的意思是,它是在模块中还是在包中?

标签: embedded verilog fpga system-verilog


【解决方案1】:

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

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

戴夫

【讨论】:

  • 添加 -mfcu 修复它:) tnx 提示:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 2018-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
相关资源
最近更新 更多