A.1. Simulación en Linux

A.1.1. Instalación

Podemos optar por instalar el paquete ofrecido en la página web del proyecto: GHDL o bien simplemente usar el gestor de paquetes de nuestra distribución. Para el caso de Debian GNU/Linux usando el entorno gnome, o bien para Ubuntu, podemos seleccionar el menú Sistema | Administración | Gestor de Paquetes Synaptic, ver Figura A-1.

Figura A-1. Acceso al gestor de paquetes

Dentro del gestor de paquetes ingresamos ghdl en la opción Quick search y marcamos el paquete ghdl, ver Figura A-2. Finalmente presionamos el botón aplicar e instalamos el ghdl.

Necesitaremos un editor de texto para visualizar y/o modificar los ejemplos. Para esto es recomendable instalar el gedit o el setedit. El primero se encuentra incluido en la mayor parte de las distribuciones, de no estar instalado basta con seguir un procedimiento similar al explicado para el ghdl. En el caso del setedit deberemos bajar los paquetes del sitio FPGALibre e instalarlos manualmente.

Para visualizar formas de onda podemos instalar el paquete gtkwave.

Figura A-2. GHDL seleccionado en el gestor de paquetes

A.1.2. Ejecutar ghdl

Para correr ghdl necesitaremos una terminal. En muchos sistemas podremos encontrar una terminal en el menú de aplicaciones, en la sección de accesorios. En otros casos presionando Alt+F2 obtendremos el disparador de aplicaciones. Ingresando /usr/bin/x-terminal-emulator o /usr/bin/xterm obtendremos una terminal.

Dentro de la terminal basta con indicar el comando y presionar la tecla ENTER o Intro. Para verificar que ghdl se encuentra correctamente instalado podemos ejecutar ghdl --version. Obtendremos algo similar a esto:

$ ghdl --version
GHDL 0.29 (20100109) [Sokcho edition]
 Compiled with GNAT Version: 4.4.4
 GCC back-end code generator
Written by Tristan Gingold.

Copyright (C) 2003 - 2010 Tristan Gingold.
GHDL is free software, covered by the GNU General Public License.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

A.1.3. Instalar los ejemplos

Los ejemplos pueden descargarse de FPGALibre. Para instalar los ejemplos bastará con abrir el archivo ejemplos.tar.bz2 usando cualquier gestor de archivos comprimidos, usualmente se logra haciendo doble click en el archivo en cuestión. Luego le pediremos al gestor que descomprima los ejemplos. En este caso lo haremos en nuestro directorio de usuario, de manera tal que la carpeta ejemplos contenga los ejemplos.

Si preferimos utilizar la terminal para hacerlo bastará con correr:

$ cd
$ tar jxvf ARCHIVO_DESCARGADO
ejemplos/
ejemplos/verif_aiken.c
ejemplos/t_b2a_1.vhdl
...

El nombre del archivo descargado dependerá de nuestro sistema, probablemente sea algo del tipo Descargas/ejemplos.tar.bz2

Para trabajar con los ejemplos provistos deberemos cambiar el directorio de trabajo al lugar donde hayamos descomprimido los ejemplos. Para esto basta con usar el comando cd, indicando el directorio donde trabajaremos. Por ejemplo: cd ~/ejemplos.

A.1.4. Como compilar un banco de pruebas

Una vez que ghdl se encuentra correctamente instalado, y que tenemos una terminal abierta en el directorio donde están instalados los ejemplos, podemos comenzar a probar alguno de ellos.

Existen varias formas de usar ghdl, una muy simple consiste en primero indicarle que archivos necesitamos usar y luego pedirle que genere el banco de pruebas. Como ejemplo tomaremos el caso del test bench mostrado en la Sección 5.1.1. Para este caso necesitamos usar los archivos bcd2aiken.vhdl y t_b2a_1.vhdl. Esto se lo indicamos a ghdl usando la opción import:

$ ghdl -i bcd2aiken.vhdl
$ ghdl -i t_b2a_1.vhdl

Sugerencia

Podemos especificar más de un archivo para la opción import usando comodines (wildcards).

Luego le indicaremos a ghdl que deseamos construir la entidad T_B2A_1. Esto se lo indicamos con la opción make:

$ ghdl -m t_b2a_1
analyze t_b2a_1.vhdl
analyze bcd2aiken.vhdl
elaborate t_b2a_1

Con esto estaremos en condiciones de ejecutar nuestra simulación.

A.1.5. Ejecutando el test bench

En el paso anterior hemos generado un ejecutable capaz de simular nuestro circuito. Dicho ejecutable tiene el mismo nombre que la entidad que implementa. Por lo que basta con ejecutarlo para obtener la simulación:

$ ./t_b2a_1 
t_b2a_1.vhdl:25:7:@0ms:(report note): Probando el conversor de BCD a Aiken
t_b2a_1.vhdl:47:7:@5ns:(report note): Prueba exitosa!

Si decidiéramos realizar modificaciones al código fuente bastaría con volver a correr ghdl con la opción -m para que genere una versión actualizada de nuestro banco de pruebas.

Si nuestro banco de pruebas fallara y quisiéramos observar las formas de onda de nuestras señales deberíamos primero hacer un volcado a disco de las mismas. Esto se logra ejecutando el test bench con la opción --wave. Así si queremos volcar las señales a un archivo denominado t_b2a_1.ghw usaremos:

$ ./t_b2a_1 --wave=t_b2a_1.ghw
t_b2a_1.vhdl:25:7:@0ms:(report note): Probando el conversor de BCD a Aiken
t_b2a_1.vhdl:47:7:@5ns:(report note): Prueba exitosa!

Luego abriremos el visor de formas de ondas:

$ gtkwave t_b2a_1.ghw &
GTKWave Analyzer v3.3.10 (w)1999-2010 BSI

[0] start time.
[5000000] end time.
Warning: encountered 4 glitches across 4 glitch regions.
Copyright © 2011 UTN FRBA - INTI - Ing. Salvador E. Tropea