【问题标题】:Verilog [cross module resolution error] when expanding the definitions扩展定义时的 Verilog [跨模块解析错误]
【发布时间】:2017-07-03 01:44:11
【问题描述】:

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

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

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

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

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

`apple.ffff.gggg

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

跨模块引用解析错误。

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

【问题讨论】:

  • 它告诉你信号不存在。显然你的路径中有一个错误。此外,您为什么要使用“转义名”?编译器不会生成这些。我认为你不需要它。
  • 由于我在定义名称中使用了“[]”字符,因此需要使用“\”和尾随空格来转义“[]”字符
  • 也许我应该澄清一下,Synopsys DC 编译器是否有转义字符问题?

标签: compiler-errors verilog system-verilog hdl asic


【解决方案1】:

如果您的示例类似于以下示例,则您确实不需要任何转义名称。编译器会将 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

【讨论】:

  • 哦,好的,很高兴知道。但是我认为这不会解决定义扩展错误:(
  • 您需要提供您的示例。扩展与跨模块引用无关,只是宏替换。
  • 也许我应该澄清一下,Synopsys DC 编译器是否有转义字符问题?
  • 不应该,。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多