Blocs initial Verilog : But, syntaxe et utilisation non-synthétisable
Un ensemble d'instructions Verilog s'exécute séquentiellement en simulation. Placées dans bloc procédural. Deux types principaux : initial et always.
Syntaxe
initial [instruction unique]
initial begin [instructions multiples] end
À quoi sert le bloc initial ?
Bloc initial non synthétisable : ne peut être converti en schéma matériel avec éléments numériques. Sert principalement pour simulations : initialiser variables et piloter ports de conception avec valeurs spécifiques.
Quand démarre et finit un bloc initial ?
Démarre au début simulation à temps 0. Exécuté une seule fois pendant toute la simulation. Se termine quand toutes instructions exécutées.

Image ci-dessus : module behave avec signaux internes a et b. Bloc initial une instruction -> pas besoin begin/end. Assigne 2'b10 à a au démarrage temps 0.
Que se passe-t-il avec élément délai ?
Code ci-dessous : instruction additionnelle assigne valeur à b après 10 unités depuis instruction précédente. a assigné d'abord, puis 10 unités après, b assigné à 0.

Combien de blocs initial autorisés dans un module ?
Aucune limite. Code ci-dessous a trois blocs initial tous démarrés même temps, s'exécutant en parallèle. Selon instructions et délais, temps fin varie.

Exemple : premier bloc délai 20, second total 50 (10+40), dernier 60. Simulation prend 60 unités car au moins un bloc actif jusqu'à 60.
$finish = tâche système Verilog disant au simulateur de terminer simulation.
Si dernier bloc délai 30, simulation finit à 30 tuant autres blocs actifs.
initial begin #30 $finish; end
Voir exemple flash pour exécution bloc initial en simulation.
Cliquez ici pour diaporama avec exemple simulation !
Verilog
- 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 les Fonctions Verilog pour une Conception RTL Efficace
- Comprendre les Tasks Verilog : Fonctions vs Tasks, Syntaxe et Utilisation
- Générateur d'Horloge Verilog : Guide de Conception et d'Implémentation
- Maîtriser les Fonctions Mathématiques Verilog pour une Conception Matérielle Efficace