Introducción a Icarus Verilog
=============================
`Icarus Verilog `_ es un compilador que trabaja con el estándar
`Verilog IEEE 1364 `_. Verilog es un lenguaje de descripción de hardware (HDL) utilizado para modelar sistemas
electrónicos, de especial interés es su aplicación en el diseño y verificación de circuitos digitales.
En esta guía se detalla el proceso de descarga, instalación y la creación de un pequeño programa junto con el proceso de compilación,
simulación y verificación. Esto con el fin de introducir los conceptos y estructuras más importantes de este lenguaje.
Simulación y Síntesis
---------------------
Verilog es un lenguaje que permite simular el funcionamiento de los circuitos digitales, obteniendo las *waveforms* de las distintas señales involucradas en el circuito descrito. Para visualizar dichos resultados se utilizará el software GTWave.
.. image:: ./../img/GTKWave.png
:align: center
La síntesis de circuitos digitales es también algo que se debe tener en cuenta a la hora de construir código en verilog, ya que idealmente se desea que todo el código sea sintetizable. Hay ciertas prácticas o casos que pueden hacer que el código realizado no sea sintetizable, los cuales se detallaran a lo largo de esta guía. Finalmente, para la síntesis de los circuitos digitales a partir de código en Verilog, se pueden utilizar herramientas como `YOSYS `_.