Bloques initial en Verilog: Propósito, sintaxis y uso no sintetizable
Un conjunto de sentencias Verilog se ejecutan secuencialmente en simulación. Estas se colocan en un bloque procedimental. Hay dos tipos principales: initial y always.
Sintaxis
initial [sentencia única]
initial begin [múltiples sentencias] end
¿Para qué sirve el bloque initial?
Un bloque initial no es sintetizable y no puede convertirse en esquema hardware con elementos digitales. Por tanto, su propósito principal es simulación: inicializar variables y impulsar puertos de diseño con valores específicos.
¿Cuándo inicia y termina un bloque initial?
Inicia al comienzo de simulación en tiempo 0. Se ejecuta una sola vez durante toda la simulación. Termina cuando todas sus sentencias se ejecutan.

La imagen muestra módulo behave con señales internas a y b. El initial tiene una sentencia, no necesita begin/end. Asigna 2'b10 a a al inicio en tiempo 0.
¿Qué pasa si hay elemento de delay?
El código siguiente tiene sentencia adicional asignando valor a b tras 10 unidades desde sentencia anterior. a se asigna primero, luego tras 10 unidades b = 0.

¿Cuántos bloques initial permitidos en un módulo?
Sin límites. El código siguiente tiene tres bloques initial que inician a la vez y corren en paralelo. Según sentencias y delays, tiempo para terminar varía.

En el ejemplo, primer bloque delay 20, segundo total 50 (10+40), tercero 60. Simulación toma 60 unidades porque al menos un initial corre hasta 60.
$finish es tarea de sistema Verilog que dice al simulador terminar simulación actual.Si el último bloque tuviera delay 30, simulación terminaría en 30 matando otros initial activos.
initial begin #30 $finish; end
Verilog
- Dominar Verilog: Tutorial completo para diseño de circuitos digitales
- Dominar la concatenación en Verilog: Guía práctica
- Verilog Esencial: Resumen conciso
- Comprender las asignaciones en Verilog: tipos, sintaxis y mejores prácticas
- Bloqueante vs. No bloqueante en Verilog: Diferencias clave explicadas
- Dominar las funciones en Verilog para diseño RTL eficiente
- Comprender las Tasks en Verilog: Funciones vs Tasks, sintaxis y uso
- Generador de reloj en Verilog: Guía de diseño e implementación
- Dominar las funciones matemáticas en Verilog para diseño de hardware eficiente
- Dominar $timeformat en Verilog: Control de precisión y visualización
- Comprender e imprimir timescales de Verilog en cualquier alcance