FPGALibre: Herramientas de Software Libre para diseño con FPGAs Tropea S.E., Brengi, D.J., Borgna J.D.
Introducción ●
●
Nace en la UTIC del Centro de Electrónica e Informática de INTI. Consecuencia de lo visto en SPL2005: mucha gente con deseos de aprender y compartir conocimientos s/FPGA.
Introducción ●
●
Nace en la UTIC del Centro de Electrónica e Informática de INTI. Consecuencia de lo visto en SPL2005: mucha gente con deseos de aprender y compartir conocimientos s/FPGA.
FPGALibre ●
●
●
●
●
●
Facilitar el intercambio de conocimientos y cores. Impulsar el uso de herramientas de S.L. Hosteado por SourceForge fpgalibre.sourceforge.net Abierto (OSs y tecnologías) Actualmente basado en Debian GNU/Linux
Objetivos ●
●
Impulsar el desarrollo con dispositivos FPGA utilizando herramientas de S.L. u Open Source. Fomentar el intercambio y desarrollo de cores IP con licencias que posean el mismo espíritu que las del S.L.
Ventajas del S.L. ●
●
●
●
La capacidad de aprender observando el código fuente de las aplicaciones y los cores. La posibilidad de adaptar a gusto según las necesidades particulares de cada interesado. La oportunidad de mejorar el código y brindar esas mejoras al resto de la comunidad. Bajo costo. Los productos propietarios de este ru bro suelen tener altos costos de licencias, lo que limita y restringe su aplicación en forma masiva en proyectos e instituciones de bajos recursos y en países en desarrollo.
Preferencias de Lenguaje, Codificación y Trabajo.
Lenguaje HDL ●
●
●
●
VHDL Muy usado en instituciones gubernamentales y universitarias. Se aceptan contribuciones en otros HDLs. IEEE 1076-1993 e IEEE 1164, no fuera estándar. En particular numeric_std en lugar de las de Synopsys.
Codificación ●
●
●
Los lenguajes ofrecen mucha libertad, pero para facilitar el trabajo en grupo se definen detalles como el indentado, nombre de señales, etc. Basadas en las de la Agencia Espacial Europea y OpenCores. Llamadas guidelines del proyecto.
Interconexión ●
●
●
●
●
Wishbone (OpenCores) Para reusar IPs. Libre (sin royalties). Especificación completa en internet. Completa (uso avanzado). Pocos recursos cuando el caso es sim ple.
Herramientas Relacionadas con el Código HDL
Edición fuentes: SETEdit No son muchos los editores libres que posean facilidades avanzadas para la edición de código VHDL. Uno de estos editores es el SETEdit, un editor pensado para programadores, con soporte para gran cantidad de lenguajes de programación. Estas son algunas de las características que lo hacen una buena elección para el trabajo con VHDL:
Resaltado de sintaxis para VHDL. Macros específicas con construcciones típicas de VHDL (PMacros). Utilización de Exuberant C Tags con soporte específico para VHDL. Indentado coherente con los guidelines del proyecto. Configurable y con soporte para los lenguajes más populares. tpl2file: templates de Xilinx como archivos ●
●
●
●
●
●
http://setedit.sourceforge.net
Verificador de Estilo ●
●
bakalint Facilita el seguimiento de los guidelines.
●
●
Es un lint “tonto” Sugiere los cambios a realizar.
Generador de Interconexión ●
●
●
●
Wishbone Builder Genera el bloque intercon de Wishbone. Permite cambios rápidos y probar con distintas estrategias. Basado en la herramienta de Open Cores.
Búsqueda en el HDL ●
●
●
●
●
Exuberant C Tags Modificado para soportar VHDL. Permite encontrar arquitecturas, funciones, etc. en proyectos complejos. Soportado por muchos editores (incluyendo SETEdit). C Tags muy usado en UNIX.
VHDLspp ●
●
●
●
Permite incluir porciones de código desde otros archivos. Por la falta de #include en VHDL. Reemplaza marcadores del tipo @nom bre_archivo@ Ej: memoria ROM de un procesador.
hex2vhdl ●
●
●
Convierte archivos .hex a código para inicializar memorias ROM en VHDL. Desarrollado para nuestro clon del PIC16C84. Muy útil en conjunto con make. Cam bios en el .asm se reflejan en el bitstream.
xtracth ●
●
●
Extrae constantes de un package y las exporta a .h y .inc. Mayor automatización. Coordina cam bios en el VHDL con cambios en el código C/Assembler de procesadores. Se complementa con el Wishbone Builder que genera las direcciones base.
tpl2file ●
●
●
Extrae las más de 600 plantillas del ISE. Permite usarlas desde cualquier editor de texto. Usa el filesystem, se navega con cualquier navegador del f.s.
Librería de C ●
●
Agrega funciones de stdio, stdlib, string, etc. al VHDL. De gran ayuda en la creación de bancos de prueba.
Herramientas Relacionadas con la Simulación
Simulador: GHDL Debido a su excelente soporte para VHDL y a la capacidad de compilar sin problemas proyectos tales como el procesador LEON y el DLX se ha seleccionado el GHDL como herramienta principal de simulación para VHDL. http://ghdl.free.fr/
GHDL utiliza la tecnología del GCC, el compilador de software libre más utilizado en todo el mundo.
Generación de Bancos de Prueba ●
●
●
natebege Para casos simples donde se desean verificar vectores. Se ingresa una especie de tabla de verdad con los vectores a verificar y el programa genera el banco de pruebas.
Visor de formas de onda: GTKWave
Interfaz de usuario simple escrita en GTK. Soporte especial para VHDL (originalmente sólo Verilog). Soporte para GHW. ● ●
●
GNU/Make Automatiza el proceso, incluyendo pasos específicos. Ejemplo: ensamblador. Integra con SETEdit para la recolección de errores. ●
●
Edición setedit
Ctrl+F9 make ghdl
Listo para simular
Herramientas de Síntesis
Síntesis Lamentablemente no conocemos herramientas de síntesis con licencias free software u open source. Los dos fabricantes más importantes de dispositivos FPGA brindan herramientas de síntesis, cada uno para sus propios productos, de uso gratuito. El proyecto FPGA Libre está abierto a cualquier tecnología y dispositivo FPGA, siempre que pueda lograrse su utilización bajo entornos de software libre, como es el caso de GNU/Linux. La herramienta de síntesis ISE WebPack de Xilinx es de uso gratuito (no libre), tiene una versión para sistemas GNU/Linux y permite su utilización con línea de comandos, lo que facilita la automatización del proceso con herramientas como GNU Make.
ISE WebPack VHDL
XST
NGDBuild
MAP
PaR
BitGen
BitStream
TRCE
Herramientas Relacionadas con el Hardware
Hardware y FPGA: Programador JTAG Para nuestros proyectos usamos un cable compatible con el cable Parallel III de Xilinx, también conocido como DLC5. Este es un circuito simple y barato que se puede conectar al puerto paralelo de una PC. Todos los archivos de diseño se encuentran disponibles en formato Kicad.
Soft JTAG Estándar IEEE 1149.1 del JTAG (Joint Test Action Group). Originalmente pensado para testeo. Independiente del fabricante. ●
● ●
jbit/GNU jtag
xilinx-jtag
PROM
FPGA
OTROS
Hardware y FPGA: Placa de hardware El intercambio y la copia de circuitos físicos (hardware) es complejo debido al costo de replicación. Aquí ya no pueden aplicarse los mismos criterios que para el software libre. Sin embargo, sí puede mantenerse el mismo espíritu con los archivos y toda la información de diseño asociada a un circuito. A este concepto se lo llama “Hardware Libre”, Hardware Abierto” o “Free Hardware”. En este punto es muy importante comprender que las herramientas de software para realizar estos diseños también deberían ser libres. Para cumplir este propósito con el desarrollo de circuitos electrónicos bajo esta modalidad se ha seleccionado el software KICAD: http://www.lis.inpg.fr/realise_au_lis/kicad/.
Conclusiones ●
●
●
●
●
Se puede completar el ciclo completo utilizando S.L. y/o gratuito. Ídem usando un OS libre (ej: Debian GNU/Linux). Se dispone de herramientas muy útiles y fácilmente automatizables. Se puede enseñar y desarrollar usando las mismas herramientas (sin costos). No es necesario atarse a un fabricante de soft/hard. GHDL es neutral.