Il tuo secondo snippet di codice è in realtà un errore di sintassi. La differenza tra forever
e always
è che always
può esistere come "elemento del modulo", che è il nome che la specifica Verilog fornisce ai costrutti che possono essere scritti direttamente all'interno di un modulo, non contenuti in alcun altro costrutto. initial
è anche un elemento del modulo. I blocchi vengono ripetuti mentre i blocchi initial
vengono eseguiti una volta all'inizio della simulazione.
forever
è una dichiarazione procedurale che può essere utilizzata solo in un contesto procedurale. Quindi è legale scrivere initial forever
o always forever
, ma non solo forever
.
La situazione in cui forever
diventa piuttosto importante è all'interno delle attività, che sono contesti procedurali, quindi l'uso di always
non è consentito. (Le funzioni sono contesti procedurali pure, ma non possono contenere i ritardi, il che rende improbabile che forever
verrà in utile.
non sono così familiare a UVM e VMM ma, in Verilog sua abbastanza inutile giusto – chitranna
? UVM utilizza Verilog. – toolic
Penso che @ new2android significhi in Verilog RTL per la sintesi. Non ho mai usato per sempre in RTL, perché i loop possono essere utilizzati mentre vengono srotolati in fase di compilazione. – Morgan