Objetivos
Debido al avance tecnológico en la fabricación de los dispositivos FPGA y a la evolución de las herramientas EDA (Electronic Design Automation), la cantidad de desarrollos en FPGA ha crecido significativamente tanto en el área de supercomputación como en el área de sistemas embebidos. Esta tecnología es cada vez más accesible a los desarrolladores de software, en donde la generación automática de hardware a partir de programas de software es un hito que ofrece soluciones muy competitivas. El principal objetivo del curso es demostrar las capacidades de la síntesis de alto nivel (HLS) para el aprovechamiento del paralelismo y la segmentación (pipeline) inherente en las arquitecturas de los FPGA. Durante el curso se presentará tanto el flujo como las directrices de diseño que permiten generar arquitecturas masivamente paralelas con amplios beneficios de rendimiento a partir de descripciones algorítmicas realizadas en C/C++. De esta forma el curso permite que desarrolladores de diferentes áreas (principalmente de software) puedan aprovechar el potencial de los FPGA.
Al concluir el curso, se espera que el estudiante obtenga dominio en los siguientes ítems:
conocimiento de los fundamentos de la síntesis de alto nivel y sus principales beneficios
uso de herramientas de síntesis de alto nivel.
capacidad de exploración mediante el uso de directivas que permitan acelerar algoritmos
evaluación de las optimizaciones necesarias de acuerdo al dispositivo objetivo
Profesor: Lucas Leiva
Prerrequisitos
Conocimientos básicos de diseño lógico.
Conocimiento de lenguajes C y C++.
Presentación de los beneficios de la tecnología basada en lógica programable, el estado actual de la tecnología y las herramientas de diseño, incluyendo el abordaje en la tecnología desde el software.
Sintesis e implementación en FPGA, e introducción a la síntesis de alto nivel (HLS)
Ejemplo de aceleración en multiplicacion de matrices usando Vitis HLS, y directivas para optimizaciones de performance utilizando HLS
Directivas para optimizaciones en área utilizando HLS, y demostración del uso de Vivado HLS para procesamiento de imágenes
Introducción a los entornos de desarrollo Vitis AI, PYNQ y ejecución en DPU. Demostración en hardware de clasificador MNIST