Maîtriser les blocs d'instructions Verilog : Exécution séquentielle et parallèle
Il existe des façons de regrouper instructions équivalentes syntaxiquement à une instruction unique : blocs d'instructions (block statements). Deux types : séquentiel et parallèle.
Séquentiel
Instructions enveloppées avec begin et end, exécutées séquentiellement dans l'ordre donné. Valeurs de délai relatives au temps d'exécution instruction précédente. Après exécution toutes instructions, contrôle passe ailleurs.

module design0; bit [31:0] data;
initial begin
#10 data = 8'hfe; $display ("[Time=%0t] data=0x%0h", $time, data);
#20 data = 8'h11; $display ("[Time=%0t] data=0x%0h", $time, data);
end endmodule
Premier instruction exécutée à 10 unités, seconde à 30 unités (20 après précédente).
Simulation Log :
ncsim> run [Time=10] data=0xfe [Time=30] data=0x11 ncsim: *W,RNQUIE: Simulation is complete.
Parallèle
Bloc parallèle exécute instructions concurremment, contrôle délai pour ordonnancement temporel. Instructions lancées en parallèle avec fork et join.
initial begin #10 data = 8'hfe;
fork #20 data = 8'h11; #10 data = 8'h00; join
end

Bloc fork-join lancé après instruction à 10 unités. Instructions parallèles : première lancée = assignation 8'h00 (délai 10 après lancement fork-join). 10 unités plus tard, première instruction lancée -> data = 8'h11.
initial begin #10 data = 8'hfe;
fork #10 data = 8'h11;
begin #20 data = 8'h00; #30 data = 8'haa; end
join end

Bloc begin-end dans exemple : instructions internes séquentielles, mais bloc lui-même lancé en parallèle avec autres. data = 8'h11 à 20 unités, 8'h00 à 30, 8'haa à 60.
Nommer les blocs
Blocs séquentiels et parallèles peuvent être nommés en ajoutant : nom_bloc après begin/fork. Permet référence dans instruction disable.
begin : name_seq [instructions] end
fork : name_fork [instructions] join
Verilog
- Accélérer la génération d'insights par la préparation automatisée des données
- Maîtriser Verilog : Tutoriel complet pour la conception de circuits numériques
- Maîtriser la concaténation Verilog : Guide pratique
- Verilog Essentiel : Aperçu concis
- Comprendre les affectations Verilog : Types, Syntaxe et Bonnes Pratiques
- Verilog Blocking vs Non-Blocking : Différences Clés Expliquées
- Maîtriser le Flux de Contrôle Verilog : IF-ELSE, Case, Boucles et Plus
- Maîtriser les Fonctions Verilog pour une Conception RTL Efficace
- Comprendre la Sémantique d'Ordonnancement Verilog : Timing, Événements et Ordre d'Exécution