Warum wird Fork-Join in ISE Webpack nicht unterstützt?

Ich verwende die neueste Version von Xilinx ISE Webpack (v14.7). Jedes Mal, wenn ich versuche, die Fork-Join-Anweisung (in Verilog) zu verwenden, erhalte ich diese Fehlermeldung:

ERROR:Xst:850 : Nicht unterstützte Fork-Anweisung.

Wird dieser Blocktyp in Webpack nicht unterstützt oder fehlt mir etwas? Hier ein ganz einfaches Beispiel:

Geben Sie hier die Bildbeschreibung ein

@Tut mein Übel! es ist 14.7. in der Frage bearbeitet.
Ist das in einer bestimmten Sprache? Ich habe es noch nie in VHDL gesehen.
@BrianDrummond Verilog (auch SystemVerilog)
@Aug Sie sollten die Sprache in Ihre Frage aufnehmen.
aaah, ich mache kein Verilog. Aber würde "Fork/Join" nicht bedeuten, dass Prozesse zur Laufzeit erstellt werden? Wenn dem so ist, ist das auf keinen Fall synthetisierbar; Sie können keine Gates auf einer laufenden Hardware erstellen oder zerstören. Und XST ist ein Synthesewerkzeug ... Erwähnt die Dokumentation zufällig, ob dies ein reines Simulationskonstrukt ist? Wenn ja, unterstützt Webpack es wahrscheinlich ... für die Simulation.
@BrianDrummond Ich bin mir nicht sicher, ob es sich um ein reines Simulationskonstrukt handelt, aber es gibt selbst für die Simulation nichts.
@BrianDrummond Ich glaube schon ... Aus "Advanced Digital Design with the VERILOG HDL": "Fork ... Join-Anweisungen sind hilfreich bei der Modellierung komplexer Wellenformen in Testbenches und abstrakten (nicht synthetisierbaren) Verhaltensmodellen."
@BrianDrummond Ich denke, Ihr Kommentar ist die Antwort auf diese Frage. Bitte belassen Sie es als Antwort, damit ich es als die richtige Antwort markieren kann. Danke!

Antworten (1)

Da ich kein Verilog mache, kann es sich lohnen, auf die Antwort eines Verilog-Experten zu warten.

Aber würde „fork/join“ in der Zwischenzeit nicht bedeuten, dass Prozesse zur Laufzeit erstellt werden? Wenn dem so ist, ist das auf keinen Fall synthetisierbar; Sie können keine Gates auf einer laufenden Hardware erstellen oder zerstören. Und XST ist ein Synthesetool ... (EDIT: Technisch gesehen können Gates zerstört werden, aber außerhalb von sicherungsbasierten ROMs oder PLDs ist dies keine übliche Praxis!)

Erwähnt die Dokumentation zufällig, ob dies ein reines Simulationskonstrukt ist? Wenn ja, unterstützt Webpack es wahrscheinlich ... für die Simulation.

Ich verstehe übrigens nicht, was "fork/join" hier bezwecken soll. In dem, was ich für das VHDL-Äquivalent halten würde:

process(clk)
begin
   if rising_edge(clk) then
      a <= 1;
      b <= 1;
   end if;
end process;

Die Zuweisungen an A und B erfolgen gleichzeitig, wie hier erklärt , also ist Fork/Join nicht überflüssig, oder ist Verilog noch anders als ich dachte?

Für mich sieht das auch überflüssig aus. Ich weiß nicht, ob dies eine legale Syntax ist, aber ich würde denken, dass das Verilog-Äquivalent zum Beispiel mit begin-end (und nicht blockierenden Operatoren <=) anstelle von Fork-Join so aussehen würde: always @(posedge clk) begin #2 a<=1; #1 b<=1; Ende