跨模块引用解析错误 - verilog 检查未定义的跨模块引用

Cross-module reference resolution error - verilog checks for undefined cross-module reference

我正在一个具有不同编译原语的环境中工作

  1. COMP_ALL_MODULES - 用于编译所有模块
  2. COMP_SELECT_MODULES - 用于编译一组选定的模块

因此,我面临 COMP_SELECT_MODULES 的以下错误,而不是 COMP_ALL_MODULES

Error found while trying to resolve the cross-module reference. token 'BLK_B'

下面的源代码

assign clock = top.dut.BLK_B.clk;

碰巧 COMP_SELECT_MODULES 没有编译 BLK_B 从而导致错误。

在 C 编程中,我尝试了 'ifdef 检查,如下所示。但这甚至为 COMP_ALL_MODULES.

编译了时钟分配
`ifdef top.dut.BLK_B
assign clock = top.dut.BLK_B.clk;
`else
assign clock = 1'b0;
`endif

大家能否建议如何检查未定义的跨模块引用,如上所示?

你当然想要

`ifndef COMP_SELECT_MODULES 
  assign clock = top.dut.BLK_B.clk;
`else
  assign clock = 1'b0;
`endif

`ifdef 语句测试特定符号是否已定义(例如`COMP_ALL_MODULES 或`COMP_SELECT_MODULES)而不是层次结构中的特定位置是否存在。