-2

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

在文件中,说 path_defines.vh(定义所在的位置):

`define apple aaaa.bbbb.cccc.\pie[0] .dddd.eeee

我正在使用“\”字符以及尾随“空白”来转义 2012 年 verilog 手册中定义的字符“[”和“]”。

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

`apple.ffff.gggg

并尝试扩展定义,编译器给了我一个:

跨模块引用解析错误。

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

4

1 回答 1

0

如果您的示例类似于以下示例,则不需要任何转义名称。编译器会将 pie[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
于 2017-07-03T02:16:30.020 回答