Primero, un baño de realidad
No necesitas instalar nada para aprender Verilog. Cada editor interactivo en estos docs ejecuta Verilog real a través de Icarus Verilog en un sandbox, incluido el visor de formas de onda. Si estás aquí para aprender el lenguaje, salta esta página y vuelve cuando quieras trabajar en un proyecto más largo en local.
¿Aún quieres instalar localmente? Sigue leyendo.
Qué significa realmente "instalar Verilog"
Verilog es un lenguaje, no un programa. Para ejecutarlo necesitas:
- Un simulador - la herramienta que compila tus archivos
.vy los ejecuta. Para la mayoría de los que aprenden eso es Icarus Verilog, que te da el compiladoriverilogy el runtimevvp. - Un visor de formas de onda - normalmente GTKWave - que lee los archivos
.vcdque produce tu testbench. - Un editor de texto - VS Code con una extensión de Verilog es la opción habitual, pero vale cualquiera.
Las cadenas de herramientas de los proveedores (Xilinx Vivado, Intel Quartus, Synopsys VCS, Cadence Xcelium) existen para programación de FPGA y trabajo de ASIC. Son grandes, a menudo con licencia, y excesivas para aprender. Quédate con Icarus.
Instalación en macOS
El camino más rápido es Homebrew:
brew install icarus-verilog gtkwave
Eso instala tanto el compilador como el visor de formas de onda. Verifica:
iverilog -V
gtkwave --version
Deberías ver números de versión de ambos. iverilog se añade a tu PATH automáticamente. GTKWave instala un paquete de aplicación bajo /Applications y un comando gtkwave de línea de comandos que puedes lanzar desde la terminal.
Si no tienes Homebrew instalado, sigue las instrucciones en brew.sh primero - es un solo comando curl - y luego vuelve.
Instalación en Linux
En distribuciones basadas en Debian (Ubuntu, Mint, Pop!_OS):
sudo apt update
sudo apt install iverilog gtkwave
En sistemas tipo Fedora / RHEL:
sudo dnf install iverilog gtkwave
En Arch:
sudo pacman -S iverilog gtkwave
Luego verifica de la misma forma:
iverilog -V
gtkwave --version
La versión empaquetada a veces va por detrás del upstream una release. Para la mayor parte del aprendizaje eso está bien. Si necesitas una release más nueva, compila desde fuente - el repositorio de GitHub del proyecto tiene instrucciones, y queda a un ./configure && make && sudo make install de distancia.
Instalación en Windows
La ruta más fácil es el instalador precompilado mantenido por la comunidad de iverilog en bleyer.org (busca "iverilog Windows"). Incluye Icarus Verilog, GTKWave y la cadena de herramientas GCC que Icarus necesita internamente.
- Descarga el instalador más reciente (típicamente
iverilog-vXX-setup.exe). - Ejecútalo. Acepta los valores por defecto a menos que tengas un motivo para no hacerlo.
- Cuando el instalador pregunte, deja "Add to PATH" marcado.
- Abre una nueva ventana de PowerShell o Símbolo del sistema y verifica:
iverilog -V
gtkwave --version
Si te olvidaste de añadirlo al PATH, el binario vive en algo como C:\iverilog\bin\iverilog.exe. O bien añade C:\iverilog\bin a tu PATH de usuario desde Propiedades del sistema, o vuelve a ejecutar el instalador y marca la casilla.
WSL2 también es una opción válida en Windows - instala Ubuntu desde la Microsoft Store y sigue las instrucciones de Linux dentro. Tendrás un flujo de trabajo más familiar tipo Unix.
Compilar y ejecutar tu primer archivo
Una vez instalado, el flujo de trabajo es así. Guarda un archivo como hello.v:
module hello;
initial begin
$display("hello from verilog");
$finish;
end
endmodule
Compílalo en un binario de simulación:
iverilog -o hello hello.v
iverilog es el compilador. -o hello nombra la salida. hello.v es tu código fuente.
Ejecuta la simulación:
vvp hello
Deberías ver:
hello from verilog
Ese es todo el bucle local. Desde aquí puedes dividir tu diseño en varios archivos (iverilog -o sim *.v), usar el flag -g2012 para habilitar las funciones de SystemVerilog-2012 o canalizar la salida a tus propios scripts.
Producir y ver una forma de onda
Añade $dumpfile y $dumpvars a tu testbench, ejecútalo y abre el VCD resultante en GTKWave:
initial begin
$dumpfile("dump.vcd");
$dumpvars(0, test);
// ...
end
Después de que vvp sim termine, tendrás un dump.vcd junto a tu código fuente. Ábrelo:
gtkwave dump.vcd
GTKWave carga el archivo y presenta el árbol de señales a un lado. Arrastra las señales que te interesen al área de ondas del otro lado. Lo cubrimos en detalle en Dumpfile y VCD.
Errores comunes
iverilog: command not found - el binario no está en tu PATH. En Windows eso suele significar que el instalador no se ejecutó con la actualización de PATH habilitada. En macOS/Linux suele significar que Homebrew/apt no terminó, o que estás en una shell que no ha recargado su PATH (cierra y vuelve a abrir la terminal).
syntax error en una línea que parece correcta - comprueba que no estés usando una característica de SystemVerilog en modo Verilog clásico. Pasa -g2012 a iverilog para habilitar SystemVerilog-2012:
iverilog -g2012 -o sim main.v
Unknown module durante la compilación - o bien el archivo fuente del módulo no se pasó a iverilog, o el nombre del módulo en la instanciación no coincide exactamente con la declaración module. Verilog distingue mayúsculas y minúsculas.
Forma de onda vacía en GTKWave - tu testbench no llamó a $dumpfile y $dumpvars, o la simulación llegó a $finish antes de que cambiara ninguna señal. Añade al menos un $dumpvars(0, top) y deja que la simulación corra lo suficiente para que haya transiciones.
Qué viene a continuación
Tanto si instalaste localmente como si te quedaste con el navegador, el siguiente doc recorre cómo escribir tu primer módulo completo desde cero - declaración del módulo, puertos, una pequeña pieza de lógica combinacional y un testbench alrededor.
Preguntas frecuentes
¿Cómo instalo Verilog?
No hay un único programa llamado 'Verilog' - es un lenguaje, e instalas un compilador/simulador. Para aprender, la opción estándar es Icarus Verilog (los comandos iverilog y vvp), junto con GTKWave para ver formas de onda. En macOS usa brew install icarus-verilog gtkwave; en Debian/Ubuntu usa apt install iverilog gtkwave; en Windows descarga el instalador precompilado del sitio de Bleyer.
¿Tengo que instalar algo para aprender Verilog?
No. El editor de esta página ejecuta tu código bajo iverilog y vvp en la nube y renderiza la forma de onda VCD en línea. Puedes completar cada doc de estos tutoriales sin instalar nada. Instalar localmente es útil cuando quieras guardar archivos, controlar la versión de un proyecto o trabajar en un diseño demasiado grande para el editor del navegador.
¿Cuál es la diferencia entre iverilog y vvp?
iverilog es el compilador - convierte tus archivos .v en un binario de simulación. vvp es el runtime que ejecuta ese binario. La secuencia típica de comandos es iverilog -o sim main.v test.v seguida de vvp sim. La mayoría de los scripts de flujo envuelven ambos.
¿Icarus Verilog es gratis?
Sí. Icarus Verilog es open source bajo GPL/LGPL. No hay servidor de licencias, ni periodo de prueba, y funciona tanto para aprender como para uso comercial. Las alternativas comerciales (ModelSim, VCS, Xcelium) son de pago; para todo lo que se cubre en estos docs, Icarus es suficiente.
¿Cómo compruebo mi versión de iverilog?
Abre una terminal y ejecuta iverilog -V. Deberías ver un número de versión como Icarus Verilog version 12.0. Si obtienes 'command not found', el binario no está en tu PATH - vuelve a ejecutar el instalador o añade el directorio bin a la configuración de tu shell.