2017-07-03 6 views
-2

je reçois une erreur de résolution inter-module, lorsque le compilateur élargit la définition comme suit:Verilog [Erreur de résolution du module croix] lors de l'expansion des définitions

dans le fichier, disent path_defines.vh (où les définitions est à):

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

J'utilise le caractère « \ » accompagné d'un tailing « espace blanc » pour échapper aux caractères « [ » et « ] » tel que défini dans le manuel Verilog 2012.

Ainsi, lorsque le compilateur analyse un fichier (par exemple, par exemple: design.vs) avec le terme défini comme on le voit ici:

`apple.ffff.gggg 

et tente d'élargir la définition, le compilateur me donne:

Erreur de résolution de référence multi-module.

Erreur détectée lors de la tentative de résolution de la référence inter-module.

+0

il vous indique que le signal n'existe pas. Apparemment, vous avez un bug dans votre chemin. D'ailleurs, pourquoi utilisez-vous exactement le «nom d'évasion»? le compilateur ne les génère pas. Je ne pense pas que vous en ayez besoin ici. – Serge

+0

Depuis que j'ai utilisé les caractères "[]" dans les noms de définition, j'ai besoin d'utiliser le "\" et un espace blanc de queue pour échapper les caractères "[]" – TheSprintingEngineer

+0

peut-être devrais-je clarifier, le compilateur DC Synopsys aurait un problème avec des caractères d'échappement? – TheSprintingEngineer

Répondre

0

Si votre exemple est similaire à celui ci-dessous, vous devez pas besoin d'un nom d'échappement. Le compilateur comprendra pie [0] comme une partie du nom. [] sont ok là.

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

oh d'accord, bon à savoir. Cependant, je ne pense pas que cela résoudrait l'erreur d'expansion des définitions si :( – TheSprintingEngineer

+0

Vous devez fournir votre exemple: l'expansion n'a rien à voir avec les références inter-modules, c'est juste une substitution de macro: – Serge

+0

peut-être devrais-je clarifier Synopsys DC compilateur ont un problème avec les caractères d'échappement? – TheSprintingEngineer