2017-10-19 2 views
0

Ich versuche Verilog zu lernen und ich habe ein Verilog-Modul und was ich tun möchte, ist dann rufen Sie eine andere Datei und führen Sie das aus meinem aktuellen Modul.Aufruf Aufgabe von einem anderen Verilog-Modul

So habe ich mein Modul wie:

module maths(); 
//register etc details 
initial begin 

`include "add.v" 

end 
endmodule 

und meine add.v-Datei, die aus dem Mathematikmodul genannt wird, ist wie:

task add; 
    A = $random; 
    B = $random; 
    C = A + B; 
    $display("Answer: %d", C); 
endtask 

Aber ich bin die Fehler aus der Aufnahme Task-Datei near "task": syntax error, unexpected "task" und near "endtask": syntax error, unexpected "endtask".

Ich lese die Antwort bei How to call tasks from a separate module in Verilog?, aber die dort gegebene Antwort über die Notwendigkeit, die Aufgabe aus einem initialen oder immer Block aufrufen, hat nicht geholfen, weil es in einem ersten Block im Modul ist.

Wohin gehe ich falsch damit?

+0

@toolic sie sind im übergeordneten Modul deklariert, bevor er beginnt – Stussy

+0

Sie sollten die Aufgabe Deklaration nicht in den ersten Block setzen. Verschieben Sie die Include-Zeile vor der ersten Zeile. Rufen Sie dann die Aufgabe innerhalb des "initial" -Blocks auf. – toolic

+0

@toolic ok Ich habe das gemacht, aber jetzt gibt es einen Fehler 'BEGIN - END erforderlich um Aufgaben/Funktionsanweisungen 'über die Datei ad.v – Stussy

Antwort

0

Wie Serge sagte, fügen Sie Ihre Dateien immer am Anfang der Datei ein, direkt vor der Modulanweisung.

`include "add.v" 

module maths(); 
//register etc details 
initial begin 
    add; 
end 
endmodule 

für das Problem Wie sind Sie fehlen beginnt Ende Aussagen in der Add Aufgabe. Aufgaben benötigen diese beiden Anweisungen immer, um den Aufgabencode zu umbrechen.

So sollte diese Arbeit:

reg A, B, C; 

task add; 
begin 
    A = $random; 
    B = $random; 
    C = A + B; 
    $display("Answer: %d", C); 
end 
endtask 

Sie über A, B, C Erklärungen :) nicht vergessen!

+0

danke, ich habe Drähte und Register in der übergeordneten Datei definiert, und es gibt mir undefined variable Fehler für die in meiner eingeschlossenen Datei, aber sie in der enthaltenen Datei zu definieren ist nicht erlaubt, weil globale Deklarationen in Verilog 2001 Syntax sind illegal, wie kann Ich repariere das? – Stussy

+0

fügen Sie sie in der Aufgabe direkt vor der Begin-Anweisung hinzu. – urban

Verwandte Themen