2017-07-03 131 views
-2

我已经得到跨模块的解析错误,当编译器扩展的定义如下:的Verilog [跨模块解析错误]扩展定义时

文件,说path_defines.vh(其中定义是在):

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

我使用的“\”字符伴有如在2012的Verilog手册所定义的拖尾“空白”逃脱字符“[”和“]”。

所以当编译器解析文件(比如如:design.vs)与定义的术语在这里看到:

`apple.ffff.gggg 

,并试图扩大的定义,编译器给了我:

跨模块参考分辨率错误。

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

+0

它告诉你信号不存在。显然你有一个错误在你的道路上。另外,为什么你使用'逃生名称'?编译器不会生成这些。我不认为你需要那里。 – Serge

+0

因为我在定义名称中使用了“[]”字符,所以我需要使用“\”和一个尾部空格来转义“[]”字符 – TheSprintingEngineer

+0

或许我应该澄清一下,Synopsys DC编译器是否有问题与转义字符? – TheSprintingEngineer

回答

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 
+0

哦好吧,很高兴知道。不过我不认为这会解决定义扩展错误:( – TheSprintingEngineer

+0

)您需要提供您的示例。扩展与跨模块引用无关,它只是一个宏替换。 – Serge

+0

也许我应该澄清,会Synopsys DC编译器有一个转义字符的问题? – TheSprintingEngineer