Stavo leggendo questa pagina http://www.asic-world.com/verilog/verilog_one_day3.html quando mi sono imbattuto in quanto segue:
Normalmente dobbiamo ripristinare i flip-flop, quindi ogni volta che l'orologio effettua la transizione da 0 a 1 (posedge), controlliamo se il reset è affermato (reset sincrono), quindi proseguiamo con la logica normale. Se guardiamo da vicino, vediamo che nel caso della logica combinatoria avevamo "=" per l'assegnazione e per il blocco sequenziale avevamo l'operatore "<=". Bene, "=" sta bloccando l'assegnazione e "<=" è l'assegnazione non bloccante. "=" esegue il codice in sequenza all'interno di un inizio / fine, mentre "<=" non bloccato viene eseguito in parallelo.
Ero abbastanza sicuro che le assegnazioni non bloccanti fossero sequenziali mentre le assegnazioni bloccanti erano parallele. Dopotutto, puoi eseguire assegnazioni di blocco con istruzioni di assegnazione al di fuori dei blocchi sempre e tutte eseguite in parallelo. È un errore o il comportamento è diverso all'interno di un blocco sempre? E, se il comportamento è diverso all'interno di un blocco sempre, è possibile eseguire assegnazioni non bloccanti all'esterno di un blocco sempre?