Programación Software de FPGAs

Curso 2020

Ante la emergencia sanitaria frente a la pandemia COVID-19 y la reglamentación propuesta desde nuestra Universidad en concordancia a las políticas gubernamentales, la cursada 2020 se realiza mediante modalidad virtual utilizando Google Meet.

Docentes

Contenidos Mínimos

Introducción al HLS. Binding y Scheduling. Optimizaciones de performance y latencia. Optimizaciones de área y recursos. Interfaces. Generación de IP Cores.

Programa

  • Unidad 1: Introducción a la Síntesis de Alto Nivel. Exploración del espacio de diseño. Objetivos de la síntesis de alto nivel (HLS). HLS vs. RTL. Evolución de las herramientas de HLS. Evolución, estado actual de herramientas HLS y opciones. Flujo de diseño HLS. Binding y Schedulling.

  • Unidad 2: Optimizaciones de Performance y Área. Utilización de directivas. Mejora de performance. Mejora de latencia. Mejora de rendimiento. Análisis y optimización de cuellos de botella de performance. Optimizaciones de área (utilización de recursos).

  • Unidad 3: Opciones avanzadas en HLS. Tipos de datos. Datos con precisión arbitraria. Soporte de enteros. Soporte punto fijo. Soporte de punto flotante. Entrada/salida en HLS. Protocolos de nivel bloque. Protocolos de nivel puerto. Consideraciones de código fuente en HLS. Construcciones de lenguaje no soportadas. Procesamiento en streaming. Soporte de librerías avanzadas. Generación de IP Cores.

  • Unidad 4: Utilización de IP Cores Generados en HLS. Introducción a arquitecturas SoC. Arquitectura Zynq. Introducción a IP Integrator. Creación de aceleradores hardware. Integración de aceleradores hardware en el sistema.

  • Unidad 6: Introducción a la Definición Software de Sistemas. Flujo de diseño SDSoC. Movimiento de datos. Consideraciones de programación. Análisis de rendimiento. Depuración.

Horarios

  • Martes y Jueves 16:00hs

Clases

Prácticas

Bibliografía

  • Kastner, R., Matai, J., & Neuendorffer, S. (2018). Parallel programming for FPGAs. arXiv preprint arXiv:1805.03648.

  • Fingeroff, M. (2010). High-level synthesis: blue book. Xlibris Corporation.

  • Morawiec, A., & Coussy, P. (Eds.). (2008). High-Level Synthesis: From Algorithm to Digital Circuit. Springer Netherlands.

  • Koch, D., Hannig, F., & Ziener, D. (Eds.). (2016). FPGAs for software programmers. Berlin, Germany: Springer.

  • Winterstein, F. (2017). Separation Logic for High-level Synthesis. Springer.

  • Churiwala, S., & Hyderabad, I. (2017). Designing with Xilinx® FPGAs. Springer.

  • Crockett, L. H., Elliot, R. A., Enderwitz, M. A., & Stewart, R. W. (2014). The Zynq Book: Embedded Processing with the Arm Cortex-A9 on the Xilinx Zynq-7000 All Programmable Soc. Strathclyde Academic Media.

  • Crockett, L., Northcote, D., Ramsay, C., Robinson, F., & Stewart, R. (2019). Exploring Zynq MPSoC: With PYNQ and Machine Learning Applications.

  • Vivado Design Suite User Guide: High-Level Synthesis