2016-04-18 7 views
1

Ich ist versucht, die IP-Paket-Tools in Xilinx Vivado zu verwenden, um einen Co-Prozessor mit einer AXI-Lite-Schnittstelle zu erstellen und es in einem Entwurf Zynq SoC nutzt für meine Digital-System Engineering-Klasse. Der Co-Prozessor ist ein GCD-Rechner, den wir bereits in einem früheren Auftrag entwickelt haben. Ich folgte den Anweisungen des Instruktors eine IP aus dem GCD Rechner zu erstellen, und wir lose Tutorial 4A aus dem PDF befindet here erstellen, um die AXI-Schnittstelle (die E/A-Erklärungen offensichtlich die GCD Rechner zu empfangen geändert werden) gefolgt. Ich habe einen Datenbus genannt ‚Daten‘ läuft vom AXI IP und der GCD IP-Werte an den Rechner zu senden. Allerdings, wenn ich das Design zu synthetisieren versuchen, erhalte ich eine folgende Fehlermeldung:Unbekannter Fehler bei der Synthese von AXI IPs

[Synth 8-685] variable 'data' should not be used in output port connection'

Der Fehler verweist auf die Linie meiner AXI-Bus-Schnittstelle Instanziierung, wo meine Daten-Port definiert ist.

Ich habe online nach einer Lösung für diesen Fehler für Stunden gesucht, aber nicht einmal die Xilinx-Website, noch die Xilinx-Dokumente, die uns zur Verfügung gestellt wurden, haben Informationen zu diesem Fehler, und ich war es nicht Sie können Konten von jedem finden, bei dem derselbe Fehler auftritt.

Ich mailte den Professor zu sehen, ob er eine Idee hat, aber er wird wahrscheinlich nicht für weitere sechs Stunden wach sein und die Zuordnung ist heute fällig (morgen?).

Hat jemand diesen Fehler gehört, oder hat keine Vorstellung davon, wie es zu korrigieren?

Hier ist ein Teil des Codes, der die Quelle des Fehlers enthält:

// Instantiation of Axi Buss Interface S00_AXI 
myip_v1.0_0_S00_AVI # (
    .C_S_AXI_DATA_WIDTH(C_S00_AXI_DATA_WIDTH), 
    .C_S_AXI_ADDR_WIDTH(C_S00_AXI_ADDR_WIDTH) 
) myip_v1_0_S00_AXI_inst (
    .done_async(done_async), 
    .go(go), 
    .data(data), // The error points to this line 
    .S_AXI_ACLK(s00_axi_aclk), 
    ... // all remaining ports were generated by the IP tools 
); 

Danke,

-Andrew

+0

Können Sie zumindest schreiben die fehlerhaften Zeilen? – Paebbels

+0

@Paebbels, editierte ich die Original-Beitrag der Linie auf die durch den Fehler hinzuzufügen. – Unrealcow

Antwort

1

Es sieht für mich wie eine Variable vom Ausgang des fahren versuchen, ein instanziiertes Modul. In Verilog können Sie keine Variable von einem instanziierten Modul steuern. Dies ist illegal in Verilog (obwohl es nicht in SystemVerilog ist):

reg OP;          -- this is a variable  
SOME_MODULE MODULE_INST (.IP(IP), .OP(OP)); 

während dies ist nicht illegal:

wire OP;         -- this is a net 
SOME_MODULE MODULE_INST (.IP(IP), .OP(OP)); 
+0

Das war mein Problem. Vielen Dank. Jetzt muss ich nur herausfinden, wie ich meinen Code bearbeiten kann, um dieser Änderung Rechnung zu tragen. – Unrealcow

Verwandte Themen