GHDL + VHPIDIRECT o como crear, compilar y ejecutar un programa VHDL con llamadas a código C
GHDL ( http://ghdl.free.fr/ ) es un simulador open-source para VHDL, que permite la compilación y ejecución del código VHDL directamente en PC. Otra característica avanzada es la capacidad de utilizar funciones C desde el código VHDL.
Si no tenemos instalado GHDL en nuestro sistema, procedemos a ello:
Ejemplo
El ejemplo que vamos a realizar va a consistir en una implementación de un sumador en hardware (VHDL) y en software (ansi C), y se va a comparar su funcionalidad.
Empecemos con el componente hardware. La implementación consiste en una suma de dos enteros a la que se le ha introducido un error; cuando el operando A es 10 el resultado de la suma va a ser 5.
El componente software devuelve el resultado correcto de la suma de dos enteros.
suma_software.c
Con el objetivo de poder utilizar la función software desde el código VHDL vamos a utilizar la función de GHDLVHPIDIRECT (un equivalente a los ficheros de cabecera en ansi C). Para ello se ha de definir un paquete:
sumaC.vhdl
Por último creamos el banco de prueba, encargado de aportar la señales de entrada a los componentes y comparar su salida.
sumador_tb.vhdl
Compilación
Una vez que tenemos todos los ingredientes pasamos a la compilación. Para simplificar el proceso se aporta el siguiente Makefile:
Con un simple make obtendremos nuestro fichero binario sumador_tb que lo podremos ejecutar normalmente.
Ejecución
Una de las ventajas de GHDL es que permite crear fichero ejecutables que no requieren ningún simulador extra. Así que procedemos a ejecutar sumador_tb:
Como se observa en el ejemplo, el programa se ejecuta y aparece como detecta el error introducido. Si además de la salida estandar se desea obtener el fichero de ondas, basta con ejecutar sumador_tb con la opción —vcd=onda.vcd. El resultado lo podremos observar con gtkwave onda.vcd.