Guidelines:
Como se explica en la introducción los mismos definen el estilo y convenciones usadas para codificar VHDL usadas por nuestro proyecto. El uso de este tipo de recomendaciones permite que código escrito por diferentes personas guarde cierto grado de coherencia. Los guidelines fueron escritos como un fuente VHDL que contiene comentarios y explicaciones. El fuente luego fue exportado como HTML usando las herramientas que recomendamos. Para verlos: guidelines.
bakalint:
Esta es una herramienta que nos permite verificar si el código VHDL que escribimos cumple con los guidelines del proyecto. bakalint realiza utiliza un parser heurístico y por lo tanto no es perfecto, pero es de gran ayuda a la hora de unificar el código escrito para el proyecto. Si bien bakalint no es configurable estamos abiertos a sugerencias y cooperación para agregarle soporte para otras reglas de codificación. bakalint está escrito en Perl por lo que debería poder usarse en Windows. Para descargarlo: tarball: bakalint y paquete Debian: bakalint En la sección Ejemplos para GHDL hay ejemplos que muestran como usar el GHDL en conjunto con el GTKWave y el bakalint.
bin2hex:
Esta es una herramienta que nos permite convertir archivos binarios a formato hexadecimal o simplemente a código VHDL. El código está escrito en C++ y compila con el gcc para Linux. Estimamos que es muy simple de compilar en otras plataformas. Para descargarlo: tarball: bin2hex v1.4.0 y paquete Debian: bin2hex v1.4.0.
WISHBONE Builder:
Cuando se desean interconectar módulos que utilizan Wishbone es necesario crear una entidad que realiza dicha conexión. A esta entidad se la denomina INTERCON y realiza la interconexión entre varios módulos (maestros y esclavos). Una forma muy flexible de realizarlo es utilizando WISHBONE Builder que es un script Perl que nos permite generar la entidad INTERCON. WISHBONE Builder puede usarse con su interfaz gráfica (escrita en Perl-Tk) o bien (lo que es más conveniente) usando un archivo de configuración. El proyecto original es de OpenCores pero el autor no parece estar interesado en mantenerlo y la versión que se encuentra en OpenCores no funciona correctamente. La última versión estable es la 1.1.0. Para descargar cualquiera de las versiones y/o el paquete Debian: WISHBONE Builder
vhdlspp:
En ocasiones es necesario generar ciertas estructuras en forma automática evitando transcribirlas cada vez que se realiza un cambio. Un ejemplo es cuando deseamos inicializar un bloque de memoria con una imagen o el código que correrá nuestra CPU. En lenguajes como el C cuando deseamos hacer esto basta con colocar los datos en un header (archivo de encabezado) y utilizar la directiva #include del preprocesador de C. En VHDL no existe el concepto de preprocesador y por lo tanto esto no es posible. Con esta finalidad se creó vhdlspp. Este script Perl permite reeemplazar tags (marcadores) del tipo @nombre_archivo@ por el contenido del archivo indicado. A diferencia de C esto puede colocarse en cualquier lugar de nuestro código VHDL. vhdlspp está escrito en Perl por lo que debería poder usarse en Windows. Para descargarlo: tarball: vhdlspp y paquete Debian: vhdlspp
hex2vhdl:
Cuando creamos nuestro core compatible con el PIC16C84 nos encontramos en la necesidad de incluir los .hex que contenían el código del PIC en nuestros fuentes VHDL para inicializar la memoria de programa del controlador. Para solucionar este problema creamos esta herramienta que trabajando en conjunto con vhdlspp y GNU Make nos permitieron que bastara con modificar el código de ensamblador para el PIC para que nuestro bitstream se actualizara conteniendo el programa para el microcontrolador. hex2vhdl genera la inicialización de un array VHDL conteniendo el código de programa. En FPGAs de Xilinx esta definición se sintetiza como una ROM (Block RAM con la escritura deshabilitada). El código está escrito en C++ y compila con el gcc para Linux. Estimamos que es muy simple de compilar en otras plataformas. Para descargarlo: tarball: hex2vhdl y paquete Debian: hex2vhdl. También se encuentra disponible una versión para DOS/Windows: hex2vhdl 1.4.0.
xtracth:
Cuando uno diseña un periférico con más de un registro y más tarde decide modificar los registros (probablemente para ahorrar area) aparecen problemas si es que esos registros son usados por código ensamblador o C. Para solucionar este problema lo más recomendable es crear archivos .h o .inc (de acuerdo al lenguaje) y definir constantes con los offsets de nuestros registros. El problema es que cada vez que corregimos nuestro código VHDL es necesario corregir estos archivos. xtracth permite automatizar esta tarea. Basta con indicarle a xtracth el nombre del package donde definimos nuestras constantes VHDL para que el mismo las extraiga y las declare en un .inc y en un .h. Si hacemos esto junto con GNU Make el problema queda solucionado en forma automática. Cuando nuestros periféricos se conectan a un bus Wishbone y usamos WISHBONE Builder también obtendremos un .inc y un .h con las direcciones base de nuestros periféricos. Usando ambas constantes podemos cambiar la dirección base y la disposición interna de los registros sin tener que tocar ni una sóla línea de código que no sea la del VHDL. Actualmente xtracth tiene varias limitaciones documentadas porque no necesitamos más funcionalidad que la actual, pero estamos abiertos a incorporar mejoras. Para descargarlo: tarball: xtracth y paquete Debian: xtracth
Librería de C en VHDL:
Cuando se escriben bancos de prueba complejos que deben generar información formateada para que otra aplicación la procese las facilidades de VHDL para impresión con formato son poco adecuadas. Para resolver esto y cuestiones similares Francis G. Wolff y Michael J. Knieser crearon una biblioteca VHDL que emula la biblioteca estandar de C. La misma fue presentada en las conferencias del Grupo de Usuarios de Synopsys y liberada bajo la licencia GPL. Nuestro grupo tomó esta biblioteca y armó un makefile adecuado para compilarla y testearla usando el GHDL. Para descargarla: C y site original
|