GHDL: compilar VHDL en linux

Ghdl (http://ghdl.free.fr) es una herramienta que permite compilar y simular la ejecución de código vhdl. Se trata de una herramienta muy sencilla por lo que la hace ideal para pruebas con el lenguaje o para tener un diseño previo antes de utilizarlo en otra herramienta como simulink. Sin embargo una desventaja grande es que no permite sintetizar código vhdl.

Para el que no tenga mucha idea de vhdl u otros lenguajes de descripción de hardware me gustaría recomendar este libro: Libro Circuit Design with VHDL de Volnei A. Pedroni

1. Instalación

Suele estar en los repositorios de ubuntu o debian, por lo tanto el método es el clásico:
sudo apt-get install ghdl gtkwave

1. Analizar/compilar vhdl: ghdl -a

Supongamos que tenemos dos archivos vhdl, una puerta lógica NAND puertaNand.vhdl y un banco de pruebas sobre esta puerta lógica bancoDePruebas.vhdl. La idea es probar si el sistema es correcto.

para simular el sistema con ghdl se debe comenzar análisis/compilación. Consiste básicamente en compilar cada archivo vhdl en un fichero objeto .o sin enlazar. ¿Que sentido tiene generar un archivo objeto .o a partir de un vhdl? Pues muy sencillo, ghdl no sintetiza vhdl, simplemente sirve para simular, de hecho el resultado final es un archivo ejecutable.

geus@geuset:~/probandoGHDL$ ghdl -a puertaNand.vhdl
geus@geuset:~/probandoGHDL$ ghdl -a bancoDePruebas.vhdl

Por cada uno de estos dos comandos se creará un archivo .o. Adicionalmente se crea un archivo temporal work-obj93.cf que nosotros no tenemos que preocuparnos por él para nada, pero básicamente sirve para guardar las dependencias entre entidades vhdl.

2. Elaborar ejecutable: ghdl -e

Básicamente consiste en elegir un vhdl principal, y unir su código con el de sus dependencias generando un archivo ejecutable (podríamos llamarlo también fase de linking). Obsérvese como no se pone la extensión del fichero, ni .vhdl ni .o

geus@geuset:~/probandoGHDL$ ghdl -e bancoDePruebas
geus@geuset:~/probandoGHDL$ ls
bancoDePruebas bancoDePruebas.vhdl bancoDePruebas.o puertaNand.o puertaNand.vhdl  work-obj93.cf

3. Ejecutar simulación: ghdl -r

Simular/Interpretar se puede hacer de dos formas, o ejecutando el programa o mediante ghdl donde se le pueden pasar parámetros interesantes como el tiempo de simulación o especificar un archivo donde guardar los cronogramas:

geus@geuset:~/probandoGHDL$ ./bancoDePruebas
geus@geuset:~/probandoGHDL$ ghdl -r bancoDePruebas --stop-time=10ns
geus@geuset:~/probandoGHDL$ ghdl -r bancoDePruebas --vcd=out.vcd

4. Visualizar cronogramas: gtkwave

Tan sencillo como arrancar la aplicación gtkwave pasándole como argumento el archivo de resultados generados.
geus@geuset:~/probandoGHDL$ gtkwave out.vcd

Imagen de la aplicación gtkwave:

ENJOY!

One Response to GHDL: compilar VHDL en linux

  1. Nagi dice:

    No Compatible when use

    use work.std_arith.all;

    ERROR

    Multicomp_Count.vhd:3:10: primary unit “std_arith” not found in library “work”

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: