GHDL
y GTKWave en Debian
150414, 7.2 090515, 8.0 |
||||||||||||
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 escritura,
prueba y simulación 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. |
||||||||||||
Debian 6.0.7 y anteriores La comunidad de Debian
aceptó los proyectos de ghdl
y gtkwave
como parte de la distrubución desde su versión 5.0. Al ser
paquetes oficiales, su instalación se lleva a cabo con las
herramientas tradicionales de gestión de paquetes de
Debian: dpkg,
apt,
dselect,
synaptic,
etc.
Utilizando el apt se pueden acceder a los DVDs de instalación o a los repositorios en red. Para mayor información acerca de instalación de paquetes con la herramienta se puede consultar en esta página Si está bien configurado nuestro archivo de fuentes (/etc/apt/sources.list), bastará con buscar e instalar la aplicación para que el sistema de paquetes resuelva las dependencias e instale software complementario: #apt-cache search ghdl ghdl - VHDL compiler/simulator using GCC technology Instalamos el ghdl y los paquetes tanto dependientes como sugueridos: #apt-get install ghdl Building dependency tree Reading... The following extra packages will be installed: gnat-4.3 libgnat-4.3 libgnatprj zliblg-dev ... Como se puede observar, GHDL utiliza el lenguaje de programación Ada, por lo que depende del compilador y las bibliotecas, además de un compresor de binarios. En caso de estar accediendo a los DVDs de instalación, se solicitarán en la siguiente secuencia: 2, 1, 3. El GTKWave se instala de manera similar, desde un DVD o desde algún repositorio con el mismo comando: root@kro:~# apt-get install gtkwave GTKWave también tiene algunas dependencias que deberá resolver con el comando anterior, sin embargo probamos que esten instaladas las dependencias antes de instalar el GTKWave: root@kro:~# apt-get install libjudydebian1 gtk8.5 tcl8.5 |
||||||||||||
Debian 7 Wheezy
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: root@kro:~# uname -m i686 y la versión de Debian: root@kro:~# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 7.0 (wheezy) Release: 7.0 Codename: wheezy Además será necesario instalar algunas dependecias. root@kro:~# apt-get install libgnat-4.6 root@kro:~# apt-get install zlib1g-dev Los paquetes construidos con GCC 4.6, para Debian 7.2 se listan a continuación:
Los paquetes para Debian 7.4 se pueden encontrar aquí. Una vez obtenido el archivo correcto, se instala con las herramientas de gestores de archivos, por ejemplo: root@kro:~#dpkg -i ghdl_0.30~svn20130213-2_i386.deb El GTWave aún está incluido en la distribución Debian 7 wheezy, asi que 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.5 tcl8.5 El instalador nos indicara si ya estan instaladas las dependencias o las instalara. root@kro:~# apt-get install gtkwave |
||||||||||||
Debian 8 Jessie Para esta versión de Debian serán necesarias las mismas dependencias, pero en una versión actualizada: root@kro:~# apt-get install libgnat-4.9 root@kro:~# apt-get install zlib1g-dev Si aún
no están disponibles paquetes deb para esta
distribución (mayo de 2015), será necesario obtener
los binarios construidos para la arquitectura que
tenemos o compilar desde el
código fuente. En
este enlace se puede obtener un paquete tar
con binarios compilados para i686. También se puede
obtener con el siguiente comando:
oskr@kro:~$ wget http://ce.azc.uam.mx/profesores/oalvarado/linux/ghdl-i686-linux-latest.tar.bz2 Des-empaquetamos e ingresamos al directorio creado: oskr@kro:~$ tar -xvf ghdl-i686-linux-latest.tar oskr@kro:~$ cd ghdl-0.29-i686-pc-linux Leemos el archivo que
contiene las instrucciones de instalación,
e instalamos como superusuario:
oskr@kro:~/ghdl-0.29-i686-pc-linux$ su password: root@kro:/home/oskr/ghdl-0.29-i686-pc-linux# tar -C / -jxvf ghdl-0.29-i686-pc-linux.tar.bz2 Para Debian 8 Jessie,
el GTWave sigue siendo parte de la distribución, asi
que puede instalar desde un DVD o desde algún
repositorio, como ya se describió.
root@kro:~# apt-get install gtkwave |
||||||||||||
Compilación e instalación de GHDL El código fuente se puede obtener en la página del proyecto GHDL. root@kro:~#dpkg-source ghdl_0.30~svn20130213-2_i386 root@kro:~#dpkg-buildpackage ghdl_0.30~svn20130213-2_i386 |
||||||||||||
Ejemplo de prueba A continuación se muestra el código de un inversor y un generador de estímulos, ambos en VHDL. Creamos un directorio con el nombre del proyecto, que en este caso será: oskr@kro:~$ mkdir inversor ingresamos al directorio de trabajo: oskr@kro:~$ cd inversor nótese como nuestro promp muestra la ruta de trabajo: oskr@kro:~/inversor$ Para desarrollar el código utilizamos un editor de texto sin marcas, como el vi, vim, nano, pico o gedit. oskr@kro:~/inversor$ gedit compnot.vhdl --Oscar Alvarado Nava --Circuito que representa una compuerta NOT de una entrada entity compnot is port ( entrada:in bit; salida:out bit ); end entity compnot; architecture beh of compnot is begin salida <= not entrada; end architecture beh; Nótese que el nombre del archivo corresponde al nombre de la entidad. Ahora editamos el archivo que contiene el código para generar las señales o estímulos (test bench) de para nuestro circuito. Dado que el circuito es como una tableta o placa de pruebas (Proto-Board), le asignamos el nombre compuesto: oskr@kro:~/inversor$ gedit tb_compnot.vhdl --Oscar Alvarado Nava --Circuito de estimulos test bench o protoboard entity tb_compnot is end entity tb_compnot; architecture beh of tb_compnot is component compnot is port ( entrada:in bit; salida:out bit ); end component compnot; signal ent:bit:='0'; signal sal:bit; begin U0:compnot port map ( entrada => ent, salida => sal ); process begin wait for 10 ns; ent <= '1'; wait for 10 ns; ent <= '0'; end process; end architecture beh; Editados el archivo con la descripción de
nuestra compuerta y el archivo de estímulos, se invoca a
ghdl para su análisis:
oskr@kro:~/inversor$ ghdl -a compnot.vhdl oskr@kro:~/inversor$ ghdl -a tb_compnot.vhdl Generamos el ejecutable al enlazar los módulos (objetos) creados: oskr@kro:~/inversor$ ghdl -e tb_compnot 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:~/inversor$./tb_compnot
--stop-time=100ns --vcd=tb_compnot.vcd
Finalmente visualizamos los resultados por medio de gtkwave oskr@kro:~/inversor$ gtkwave tb_compnot.vcd |