2017-07-03 77 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