Instalación de GHDL y GTKWave

180416
140916
050420

Proyecto GHDL

GHDL es un compilador de código abierto para el lenguaje VHDL. GHDL permite la compilación y ejecución de código VHDL directamente en la PC. Combinado con un analizador de ondas gráfico (GTKWave) y un editor de texto (VIM), GHDL es una herramienta poderosa para la simulación funcional de circutos descritos con VHDL.

GHDL está basado en el compilador GCC de GNU y puede ejecutarse en Linux, winbugs y Apple OS X. Se pueden obtener los binarios para un sistema operativo en específico o se puede compilar a partir del código fuente para un arquitectura en específico.



Instalación en Fedora 32

Linux Fedora utiliza gestores de archivos para la instalación de aplicaciones. El gestor de archivos en línea de comandos más popular de Fedora es dnf, se encarga de resolver dependecias, obtener los paquetes (en Fedora los paquetes se conocen como rpm) e instalarlos en el orden apropiado.

Para la instalación de GHDL y GTKWave en Fedora, consideremos que justo terminamos de hacer una  instalación básica de la distribución Fedora 32 en inglés.


Cambio a administrador o root

Es el administrador del sistema el único usaurio que tiene los permisos para instalar, desintalar y configurar aplicaciones. A través del comando su (super user
) y el password correspondiente, un usuario puede convertirse en super usuario.


[oskr@kro:~]$ su -
password:


[root@kro:~]# 


Puede notarse como el nuevo usuario (root) y el prompt (#), los cuales indican que ahora es el administrador del sistema.




GHDL


Antes de instalar el GHDL es conveniente instalar el grupo des herramientas y bibliotecas de desarrollo del lenguaje C. Para listar los grupos disponibles ejecutamos:


[root@kro:~]# dnf grouplist
...
C Development Tools and Libraries
...

Para instalar el grupo:
 

[root@kro:~]# dnf groupinstall "C Development Tools and Libraries"

Buscamos el paquete de ghdl.

[root@kro:~]# dnf search ghdl
...
ghdl.x86_64 : A VHDL simulator, using the GCC technology
...

Se instala con el nombre exacto.

[root@kro:~]# dnf install ghdl.x86_64

El comando anterior instalará GHDL y sus dependencias (ghdl-grt, libgnat, zlib-devel)
.



GTKWave

Buscamos e instalamos el GTKWave de la misma forma:

[root@kro:~]# dnf search gtkwave
...
gtkwave.x86_64 : Waveform Viewer
...

[root@kro:~]# dnf install gtkwave.x86_64

Las  dependecias de gtkwave son Judy y tk.



Cambio de administrador o root a usario

Realizada la instalación de las herramientas, regresamos a ser un usuario normal:


[root@kro:~]# logout


[oskr@kro:~]$


El proceso de instalación  se pueden ver en este video.


Circuito de prueba
 


Utilizamos los archivos de la compuerta NOT (compnot1.vhdly su generador de estímulos, (tb_compnot1.vhdl).

Creamos un directorio con el nombre del proyecto, en este caso será:

[oskr@kro:~]$ mkdir compnot1

ingresamos al directorio de trabajo:

[oskr@kro:~]$ cd compnot1

nótese como nuestro promp muestra la ruta de trabajo:

[oskr@kro compnot1]$

Descargamos los archivos de ejemplo (escriba toda la línea seguida):

[oskr@kro compnot1]$ wget http://academicos.azc.uam.mx/oan/linux/ghdl/compnot1.vhdl


[oskr@kro compnot1$ wget http://academicos.azc.uam.mx/oan/linux/ghdl/tb_compnot1.vhdl


Para visualizar el código utilizamos un editor de texto sin marcas, como el  vim, nano o gedit.


[oskr@kro compnot1]$ gedit compnot1.vhdl

[oskr@kro compnot1]$ gedit tb_compnot1.vhdl

Nótese que el nombre del archivo corresponde al nombre de la entidad.

Invocamos a ghdl para el análisis de los códigos:

[oskr@kro compnot1]$ ghdl -a compnot1.vhdl

[oskr@kro compnot1]$ ghdl -a tb_compnot1.vhdl

Generamos el ejecutable al enlazar los módulos (objetos) creados:

[oskr@kro compnot1]$ ghdl -e tb_compnot1

Se ejecuta el archivo pasando como parámetros el tiempo máximos de simulación (100 nano segundos) y el archivo en donde se guardarán los resultados (tb_compnot.vcd):

[oskr@kro compnot1]$ ghdl -r tb_compnot1 --stop-time=100ns --vcd=tb_compnot1.vcd

Una menera alternativa de ejecuatarlo es:

[oskr@kro compnot1]$./tb_compnot1 --stop-time=100ns --vcd=tb_compnot1.vcd


Finalmente visualizamos los resultados por medio de gtkwave


[oskr@kro compnot1]$ gtkwave tb_compnot1.vcd


A través de la herramienta make, se puede compilar, enlazar y ejecutar la aplicación con un solo comando, para ello es necesario crear el archivo Makefile.


[oskr@kro compnot1]$ wget http://academicos.azc.uam.mx/oan/linux/ghdl/Makefile


Visualizamos su contenido.


[oskr@kro compnot1]$ gedit Makefile
 


Invocamos el comando make.

[oskr@kro compnot1]$ make



Se puede observar cómo se lleva a cabo la compilación, enlazado y ejecución, incluso como se llama a la herramienta GTKwave. Se puede generar un archivo que guarde la estructura de la visualización, es decir, escala, variables, posición del cursor, etc., este archivo se pasa como argumento a GTKWave.


[oskr@kro compnot1]$ wget http://academicos.azc.uam.mx/oan/linux/ghdl/ondas.gtkw
 

Invocamos nuevamente el comando make.

[oskr@kro compnot1]$ make





Los pasos para la prueba del circuito se pueden ver en este video.


Instalación en Windows 10

Editor de texto Vim

Para la instalación del editor de texto sin marcas o editor archivos de caracteres vim (del inglés Vi IMproved), es necesario obtener el archivo de instalación disponible en la página de descargas del proyecto. Este archivo es un auto-extraible que instala la aplicación  de manera automática.

En este video se muestra la instalación de vim/gvim para windows 10.

Para utilizar los binarios o ejecutables desde cualquier ruta, será necesario agragarlo a la variable de ambiente PATH, esto lo hacemos con el siguiente comando:

C:\Users\oscar>set PATH=c:\Program Files (x86)\vim\vim82;%PATH%;

En este video se muestra el cambio de la variable de ambiente.


GHDL para Windows


Para instalar GHDL en windows se puede hacer de dos formas:
1. Buscar y descargar un paquete con los ejecutables y bibliotecas, ya sea para sistemas  32 o 64 bits y acceder a los ejecutables.
2. Buscar y descargar algun archivo ejecutable-instalador
, ya sea para sistemas  32 o 64 bits, e instalarlo.
3. Descargar el código fuente y construirlo.

Los usuarios de Windows están muy acostumbrados a simplemente utilizar un instalador, sin embargo, sería una buena práctica construir los binarios y bibliotecas a partir de un código fuente.

Es importante aclarar que el compilador GHDL es una herramienta de consola, por lo que se debe ejecutar en una terminal o "símbolo de sistema". Antes de utilizar el compilador GHDL, se recomienda buscar y analizar los comandos necesarios para trabajar en la terminal. El siguiente tutorial mostrará los comandos que se deben ejecutar tanto para la instalación, configuración, ejecución del compilador GHDL.
 

Instalador de GHDL

Descargamos el archivo ghdl-0.31-mcode-win32.zip. Es muy probable que el archivo sea descarcado en el directorio de descargas. Pasamos de la ruta del "home" del usuario a la unidad C.

C:\Users\oscar>cd c:\

Creamos el directorio ghdl, ingreamos en el mismo, movemos el archivo descargado al directorio ghdl.

C:\mkdir ghdl

C:\cd ghdl

C:\ghdl>move c:\Users\oscar\Downloads\ghdl-0.31-mcode-win32.zip .

Nótese el punto al final de la línea de comandos anterior. Listamos el contenido del directorio actual.

C:\ghdl>dir
...

ghdl-0.31-mcode-win32.zip
...

 
Descomprimimos el archivo con el comando PowerShell:

C:\ghdl>PowerShell expand-archive -Path ./ghdl-0.31-mcode-win32.zip -DestinationPath .


Listamos, e ingresamos al directorio creado:

C:\ghdl>dir

C:\ghdl>cd ghdl-0.31-mcode-win32

C:\ghdl\ghdl-0.31-mcode-win32>

Ejecutamos los siguientes scripts de configuración:

C:\ghdl\ghdl-0.31-mcode-win32>reanalyze_libs.bat

C:\ghdl\ghdl-0.31-mcode-win32>set_ghdl_path.bat

El segundo script agrega a la variable de ambiente PATH (de la terminal) la ruta C:\ghdl\ghdl-0.31-mcode-win32\bin donde se encuentran los ejecutables. Podemos visualizar las variables de ambiente con el comando:

C:\ghdl\ghdl-0.31-mcode-win32>set
...
Path=C:\ghdl\ghdl-0.31-mcode-win32\bin;c:\Windows\system32;c:\windows;
...

Ejecutamos los comandos  para visualizar la instalación.

C:\ghdl\ghdl-0.31-mcode-win32>ghdl --dispconfig
 

C:\ghdl\ghdl-0.31-mcode-win32>ghdl -v


Si cambiamos de ruta, aún se podrá ejecutar los comandos de ghdl:

C:\ghdl\ghdl-0.31-mcode-win32>cd c:\Users/oscar

C:\Users\oscar>ghdl -v

Sin embargo, al abrir una nueva terminal el comando anterior no funcionará:

C:\Users\oscar>ghdl -v
"ghdl" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.


Para que el contenido de la variable de ambiente sea permanente en todas las terminales, se deberá editar la variable de ambiente PATH en la configuración del sistema. Buscar "variables de entorno".


En este video se muestra la instalación y configuración de las variables de ambiente en windows 10.



GTKWave

El visualizador de ondas GTKWave se instala de manera similar GHDL, solo es necesario descomprimir el archivo gtkwave-3.3.71-bin-win32.zip, en una ruta conocida, por ejemplo:

C:\gtkwave

Al descomprimir generará el directorio gtkwave y los subdirectorios bin, lib y share, de los cuales el que contiene los binarios y las DLL es bin, agregamos este directorio a la variable de ambiente PATH para su acceso:

C:\Users\oscar>set PATH=c:\gtkwave\gtkwave\bin;%PATH%


Cabe hacer notar que el cambio en la variable de ambiente PATH solamente tendrá efecto en la terminal en la que se ejecutó y una vez cerrada (o terminada la sesión de windows) ya no tendrá efecto, será necesario ejecutarlo de nuevo.

Para que windows automáticamente tenga configurada la variable de ambiente PATH con las rutas de ghdl y gtkwave, es necesario modificar las variables de ambiente del sistema. En windows 7 se accede con la herramienta gráfica:

Menú de inicio->Botón derecho sobre Equipo->Propiedades->Configuraciones avanzadas del sistema ->Variables de entorno->Variables del sistema

Buscamos la variable PATH y seleccionamos editar, al final colocamos un punto y coma (;) y agregamos las rutas deseadas, en este caso: c:\ghdl\ghdl-0.31-mcode-win32\bin;c:\gtkwave\bin (nótese que están separadas por un punto y coma). Finalmente abrimos otra terminal y verificamos que estén las rutas.

C:\Users\oskr>set PATH


En este video se demuestra la instalación para windows 10.

Circuito de prueba

Para comprobar que nuestras herramientas están bien instaladas y configuradas, compilaremos, enlazaremos, ejecutaremos y visualizaremos los resultados de una compuerta lógica.
 
El archivo compnot1.vhdl describe una compuerta NOT de una entrada y una salida y el archivo tb_compnot1.vhdl es el circuito de estímulos. Ambos archivos los colocamos en un directorio, creado previamente, para que sea nuestra ruta de trabajo:

C:\Users\oscar>mkdir circuitos

C:\Users\oscar>cd circuitos
 
C:\Users\oscar\circuitos>mkdir compnot1


C:\Users\oscar\circuitos>cd compnot1

C:\Users\oscar\circuitos\compnot1>

Una vez descargados en el directorio, los podemos visualizar con el editor vim:

C:\Users\oscar\circuitos\compnot1>vim compnot1.vhdl

C:\Users\oscar\circuitos\compnot1>vim tb_compnot1.vhdl

Para analizar o compilar los códigos utilizamos el comando ghdl con la opción -a:

C:\Users\oscar\circuitos\compnot1>ghdl -a compnot1.vhdl

C:\Users\oskr\circuitos\compnot1>ghdl -a tb_compnot1.vhdl

Ahora los enlazamos con el comando ghdl con la opción -e, indicando el nombre del ejecutable (nombre del archivo test bench sin extensión): 

C:\Users\oscar\circuitos\compnot1>ghdl -e tb_compnot1

Ejecutamos el proyecto indicando el tiempo de simulación con --stop-time= y el nombre del archivo de resultados con --vcd=:

C:\Users\oscar\circuitos\compnot1>ghdl -r tb_compnot1 --stop-time=100ns --vcd=resultados.vcd

Finalmente para visualizar los resultados, utilizamos el comando:

C:\Users\oscar\circuitos\compnot>gtkwave resultados.vcd


En este video se demuestra lo anterior.



Linux Debian 8 Jessie


GHDL

Debido a la falta de mantenimiento de los desarrolladores, la comunidad de Debian decidió no incluir el proyecto GHDL a partir de la distribución Debian 7.0.0 Wheezy.

La instalación se puede hacer de varias formas de acuerdo a la experiencia de cada usuario. La más compleja consiste en compilar desde el código fuente, ya que se debe compilar el GHDL como parte de GCC.

Un método más sencillo es obtener un paquete .deb e instalarlo con las herramientas de gestón de paquetes.
Los paquetes .deb son archivos que contienen binarios, documentación y manuales, los cuales son gestionados por el administrador de paquetes de Debian y deben ser construidos con herramientas de la distribución Debian. Este paquete es precisamente lo que ya no pudieron hacer los responsables del proyecto.

Para saber qué paquete .deb se debe bajar, se debe verificar la arquitectura del CPU:

oskr@kro:~$ uname -m
i686

y la versión de Debian:

oskr@kro:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.0 (jessie)
Release:        8.0
Codename:       jessie


Con esta información podemos proceder a descargar el paquete deb para nuestro sistema en la páguina de sourceforge. En mi caso debo descargar el paquete ghdl_0.33-1jessie1_i386.deb, ya que corresponde a la versión de Debian y a la arquitectura.

Antes de instalar el deb, es necesario contar con una instalación básica de Debian, si no se tiene al menos se debería de instalar los siguiente:

root@kro:~# apt-get install gcc 

root@kro:~# apt-get install g++

root@kro:~# apt-get install build-­essential

apt-get install vim-common vim-gtk

Si ya se tenía una instalación básica de Debian, solamente es necesario agregar:
 
root@kro:~# apt-get install gnat-4.9-base libgnat-4.9

root@kro:~# apt-get install zlib1g-dev

Procedemos a instalar el archivo:

 

root@kro:~#dpkg -i ghdl_0.33-1jessie1_i386.deb


GTKWave

El GTWave aún está incluido en la distribución Debian 8, asi que se puede instalar desde un DVD o desde algún repositorio.  Antes de intentar instalar GTKWave, probamos que esten instaladas las dependencias:


root@kro:~# apt-get install libjudydebian1 gtk8.6 tcl8.6 

El instalador nos indicara si ya estan instaladas las dependencias o las instalara.

root@kro:~# apt-get install gtkwave



Circuito de prueba

Utilizamos los archivos de la compuerta NOT (compnot1.vhdl)  y su generador de estímulos, (tb_compnot1.vhdl).

Creamos un directorio con el nombre del proyecto, que en este caso será:

oskr@kro:~$ mkdir compnot1

ingresamos al directorio de trabajo:

oskr@kro:~$ cd compnot1

nótese como nuestro promp muestra la ruta de trabajo:

oskr@kro:~/compnot1$

Descargamos los archivos de ejemplo:

oskr@kro:~/compnot1$ wget http://academicos.azc.uam.mx/oan/linux/ghdl/compnot1.vhdl


oskr@kro:~/compnot1$ wget http://academicos.azc.uam.mx/oan/linux/ghdl/tb_compnot1.vhdl


Para visualizar el código utilizamos un editor de texto sin marcas, como el vi, vim, nano, pico o gedit.


oskr@kro:~/compnot1$ gedit compnot1.vhdl

oskr@kro:~/compnot1$ gedit tb_compnot1.vhdl

Nótese que el nombre del archivo corresponde al nombre de la entidad.

Invocamos a ghdl para el análisis de los códigos:

oskr@kro:~/compnot1$ ghdl -a compnot1.vhdl

oskr@kro:~/compnot1$ ghdl -a tb_compnot1.vhdl

Generamos el ejecutable al enlazar los módulos (objetos) creados:

oskr@kro:~/compnot1$ ghdl -e tb_compnot1

Se ejecuta el archivo pasando como parámetros el tiempo máximos de simulación (100 nano segundos) y el archivo en donde se guardarán los resultados (tb_compnot.vcd):

oskr@kro:~/compnot1$ ghdl -r tb_compnot1 --stop-time=100ns --vcd=tb_compnot1.vcd

Una menera alternativa de ejecuatarlo es:

oskr@kro:~/compnot1$./tb_compnot1 --stop-time=100ns --vcd=tb_compnot1.vcd


Finalmente visualizamos los resultados por medio de gtkwave


oskr@kro:~/compnot1$ gtkwave tb_compnot1.vcd



Linux Ubuntu 15.10

La instalación de GHDL y GTKWave en Linux Ubuntu es muy similar a la presentada para la distribución Debian. Esto se debe a que Ubuntu es una distribución basada en Debian, por lo tanto, son muy parecidos y compatibles, practicamente todas las aplicaciones que funcionan en Debian funcionan en Ubuntu.



GHDL

Considerando de que se acaba de instalar Ubuntu, lo primero es verificar la arquitectura y la versión instalada.


oskr@kro:~$ uname -m
i686

y la versión de Ubuntu:

oskr@kro:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.10
Release:        15.10
Codename:       willy


Con esta información podemos proceder a descargar el paquete deb para nuestro sistema en la páguina de sourceforge. En mi caso debo descargar el paquete ghdl_0.33-1jessie1_i386.deb, ya que corresponde a la versión de la arquitectura. Este paquete funcionará en Ubuntu a pesar de que no aparezca el nombre de ubuntu, como ya comentamos, Ubuntu es compatible con Debian.

Antes de instalar el deb, es necesario instalar algunas dependencias:

oskr@kro:~$ sudo apt-get install gnat

oskr@kro:~$ sudo apt-get install zlib1g-dev 


Procedemos a instalar el archivo deb, suponiendo que el navegador lo descargó y lo colocó en el directorio Downloads o Descargas:

 

oskr@kro:~$sudo dpkg -i Downloads/ghdl_0.33-1jessie1_i386.deb

De manera similar instalamos el editor de texto vim:

oskr@kro:~$ sudo apt-get install vim-common vim-gtk



GTKWave

El GTWave aún está incluido en la distribución, asi que se puede instalar desde los repositorios de Ubuntu.

oskr@kro:~$ sudo apt-get install gtkwave


Circuito de prueba

Seguimos los mismos pasos que se muestran en la distribución de Debian.