【问题标题】:Cross-module reference resolution error - verilog checks for undefined cross-module reference跨模块引用解析错误 - verilog 检查未定义的跨模块引用
【发布时间】:2019-12-18 06:11:31
【问题描述】:

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

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

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

尝试解析跨模块引用时发现错误。令牌 '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

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

【问题讨论】:

    标签: verilog system-verilog uvm


    【解决方案1】:

    你当然想要

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

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

    【讨论】:

    • 我在想更多的方法来检查给定的跨模块引用是否存在,然后将其分配给时钟。有什么建议吗?
    • @Chandrabhanu 我认为如果不使用 PLI 做一些花哨的事情,你就无法做到这一点。
    • 嗯,错误是Error found while trying to resolve the cross-module reference. token 'BLK_B' 我们不能检查一下BLK_B 本身是否定义了吗?
    • @Chandrabhanu 我不认为你可以在 SystemVerilog 中。您也许可以使用 PLI。
    • 您能帮忙详细说明如何使用verilog PLI 来实现上述目标吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    相关资源
    最近更新 更多