Ihr zweites Code-Snippet ist eigentlich ein Syntaxfehler. Der Unterschied zwischen forever
und always
besteht darin, dass always
als "Modulelement" vorhanden sein kann. Dies ist der Name, den die Verilog-Spezifikation Konstrukten gibt, die direkt in einem Modul geschrieben werden können und nicht in einem anderen Konstrukt enthalten sind. initial
ist auch ein Modulelement. always
Blöcke werden wiederholt, während initial
Blöcke einmal zu Beginn der Simulation ausgeführt werden.
forever
ist eine prozedurale Anweisung, die nur in einem prozeduralen Kontext verwendet werden kann. So ist es legal zu schreiben initial forever
oder always forever
, aber nicht nur forever
.
Die Situation, in der forever
ziemlich wichtig wird, liegt in Tasks, die prozedurale Kontexte sind, so dass die Verwendung von nicht zulässig ist. (Funktionen sind auch prozedurale Kontexte, aber möglicherweise keine Verzögerungen, was es unwahrscheinlich macht, dass forever
nützlich wird.
ich bin nicht so vertraut zu UVM und VMM aber in verilog seine ziemlich nutzlos rechts – chitranna
? UVM verwendet Verilog – toolic
Ich denke, @ new2android bedeutet in Verilog RTL für die Synthese.Ich habe noch nie in RTL für immer verwendet, für Schleifen konnten verwendet werden, wie sie zur Kompilierzeit entrollt werden. – Morgan