Compiler errors 扩展定义时出现Verilog[跨模块解析错误]

Compiler errors 扩展定义时出现Verilog[跨模块解析错误],compiler-errors,verilog,system-verilog,hdl,asic,Compiler Errors,Verilog,System Verilog,Hdl,Asic,当编译器按如下方式扩展定义时,我得到了一个跨模块解析错误: 在文件中,假设路径_defines.vh,其中定义位于: `define apple aaaa.bbbb.cccc.\pie[0] .dddd.eeee 我使用\字符和尾随空格来转义2012年verilog手册中定义的字符[和] 因此,当编译器使用定义的术语解析filesay时,例如:design.vs,如下所示: `apple.ffff.gggg 为了扩展定义,编译器给了我一个: 跨模块参考分辨率错误 尝试解析跨模块引用时发现错误

当编译器按如下方式扩展定义时,我得到了一个跨模块解析错误:

在文件中,假设路径_defines.vh,其中定义位于:

`define apple aaaa.bbbb.cccc.\pie[0] .dddd.eeee
我使用\字符和尾随空格来转义2012年verilog手册中定义的字符[和]

因此,当编译器使用定义的术语解析filesay时,例如:design.vs,如下所示:

`apple.ffff.gggg
为了扩展定义,编译器给了我一个:

跨模块参考分辨率错误


尝试解析跨模块引用时发现错误。

如果您的示例与下面类似,则不需要任何转义名称。编译器将饼图[0]理解为名称的一部分。[]你在那里没问题

module top;
    aaa aaa();       
    assign aaa.bbb.pie[0].ccc.ddd = 0;
endmodule
module aaa();
    bbb bbb();
endmodule 
module bbb;
    generate
      for (i = 0; i < 2; i++) begin: pie
         ccc ccc();
      end
   endgenerate
endmodule // bbb
module ccc;
   wire ddd;
endmodule

它告诉你信号不存在。很明显,你的道路上有一个bug。此外,你为什么要使用“转义名称”?编译器不会生成这些。我认为您不需要它。因为我在定义名称中使用了[]字符,我需要使用\和尾随空格来转义[]字符。我应该澄清一下,Synopsys DC编译器在转义字符方面会有问题吗?哦,好的,很高兴知道。然而,我认为这并不能解决定义扩展错误:您需要提供您的示例。扩展与跨模块引用无关,它只是一个宏替换。也许我应该澄清一下,Synopsys DC编译器是否存在转义字符问题?它不应该,。