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

跨模块引用解析错误-verilog检查未定义的跨模块引用,verilog,system-verilog,uvm,Verilog,System Verilog,Uvm,我正在一个有不同编译原语的环境中工作 编译所有模块-用于编译所有模块 COMP\u SELECT\u MODULES-用于编译选定的一组模块 因此,我面临以下错误:COMP_SELECT_模块错误,而不是COMP_ALL_模块错误 尝试解析跨模块引用时发现错误。代币 “BLK_B” 下面是源代码 assign clock = top.dut.BLK_B.clk; 恰好COMP_SELECT_模块没有编译BLK_B,从而导致错误 在C编程中,我尝试了“ifdef检查”,如下所示。但是,即使对于C

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

  • 编译所有模块
    -用于编译所有模块
  • COMP\u SELECT\u MODULES
    -用于编译选定的一组模块
  • 因此,我面临以下错误:COMP_SELECT_模块错误,而不是COMP_ALL_模块错误

    尝试解析跨模块引用时发现错误。代币 “BLK_B”

    下面是源代码

    assign clock = top.dut.BLK_B.clk;
    
    恰好COMP_SELECT_模块没有编译BLK_B,从而导致错误

    在C编程中,我尝试了“ifdef检查”,如下所示。但是,即使对于COMP_所有模块,这也算出了时钟分配

    `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”),而不是层次结构中是否存在特定的位置。

    我正在考虑更多的方法来检查给定的跨模块引用是否存在,然后将其分配给时钟。有什么建议吗?@Chandrabhanu我认为如果不使用PLI做一些花哨的事情,你就无法做到这一点。错误是在尝试解决跨模块引用时发现的
    错误。标记“BLK_B”
    我们可以不检查BLK_B本身是否定义了吗?@Chandrabhanu我认为你不能在SystemVerilog中查看。您也许可以使用PLI。您能否帮助详细说明如何使用verilog PLI实现上述功能?