Proyecto de Innovación Convocatoria 2017/2018 Nº de proyecto: 217 Título del proyecto: Framework para el desArroLLo ágIl de código RTL orientAdo a programadores software, ingeNieros y CiEntíficos (ALLIANCE) Nombre del responsable del proyecto: Guillermo Botella Juan Centro: Facultad de Informática Departamento: Arquitectura de Computadores y Automática 1. Objetivos propuestos en la presentación del proyecto Los objetivos planteados del proyecto han sido: (i) Desarrollo de un entorno de trabajo basado en Matlab, Simulink y las toolboxes HDL Coder, HDL Verifier. (ii) Enlazado de Simulink con Quartus. (iii) Escritura de varias guías de usuario para configurar cada tipo de proyecto en función de la placa objetivo. (iv) Acoplar las prácticas propuestas en la ficha docente con el uso del nuevo framework para asignaturas de ciencia y tecnología:(Diseño óptico, Visión Artificial, Óptica Biomédica (todas en el Grado en Óptica y Optometría), Procesado de Imágenes (Máster en Tecnologías Ópticas y de la Imagen ), Visión por computador, (Grado en Ingeniería Informática), Procesado de señal (Grado en Ingeniería Electrónica de Comunicaciones), Statistical Physics (Master Erasmus Mundus in Nuclear Fision Science), Biofísica Molecular (Master en Física Biomédica), Sistemas Complejos (Master en Física Teórica), Física Cuántica II y Fenómenos de transporte (Grado en Física). (v) Acoplar las prácticas propuestas en la ficha docente con el uso del nuevo framework para asignaturas de informática (diseño): Sistemas Empotrados Distribuidos, Codiseño Hardware-Software (Máster en Investigación Informática), Programación de Sistemas y Dispositivos (Grado en Informática) como ejemplo, analizando el compromiso de la curva de aprendizaje frente a la optimalidad de la solución y comparar este compromiso en el marco de estas asignaturas frente a técnicas tradicionales de diseño. (vi) En este último escenario, mejorar el aprendizaje del alumnado mediante el entendimiento de la aceleración proporcionada por las FPGAs. Comparar la versión software del código con su versión hardware ayudará a los estudiantes a entender qué códigos software son más paralelizables, y por lo tanto producen mayores beneficios en la versión hardware. (vii) Puesto que se trabaja con recursos limitados de la FPGA, ilustración al alumnado en el compromiso de optimización de algoritmos vs curva de esfuerzo en la implementación de los mismos. (viii) Generación de estadísticas y análisis útiles a la UCM (Vicerrectorado de Tecnologías de la Información, Vicerrectorado de Calidad )respecto al sistema propuesto que usa la licencia CAMPUS de MATLAB y puede ayudar a la toma de decisiones estratégicas de herramientas a incorporar. (ix) Generación de alguna publicación de carácter educativo basada en el sistema interdisciplinar propuesto. 2. Objetivos alcanzados Los objetivos alcanzados del proyecto han sido: (i) Desarrollo de un entorno de trabajo basado en Matlab, Simulink y las toolboxes HDL Coder, HDL Verifier. (Completado) (ii) Enlazado de Simulink con Quartus. (Completado) (iii) Escritura de varias guías de usuario para configurar cada tipo de proyecto en función de la placa objetivo. (Parcialmente completado) (iv) Acoplar las prácticas propuestas en la ficha docente con el uso del nuevo framework para asignaturas de ciencia y tecnología:(Diseño óptico, Visión Artificial, Óptica Biomédica (todas en el Grado en Óptica y Optometría), Procesado de Imágenes (Máster en Tecnologías Ópticas y de la Imagen ), Visión por computador, (Grado en Ingeniería Informática), Procesado de señal (Grado en Ingeniería Electrónica de Comunicaciones), Statistical Physics (Master Erasmus Mundus in Nuclear Fision Science), Biofísica Molecular (Master en Física Biomédica), Sistemas Complejos (Master en Física Teórica), Física Cuántica II y Fenómenos de transporte (Grado en Física). (Parcialmente completado) (v) Acoplar las prácticas propuestas en la ficha docente con el uso del nuevo framework para asignaturas de informática (diseño): Sistemas Empotrados Distribuidos, Codiseño Hardware-Software (Máster en Investigación Informática), Programación de Sistemas y Dispositivos (Grado en Informática) como ejemplo, analizando el compromiso de la curva de aprendizaje frente a la optimalidad de la solución y comparar este compromiso en el marco de estas asignaturas frente a técnicas tradicionales de diseño. (Parcialmente completado) (vi) En este último escenario, mejorar el aprendizaje del alumnado mediante el entendimiento de la aceleración proporcionada por las FPGAs. Comparar la versión software del código con su versión hardware ayudará a los estudiantes a entender qué códigos software son más paralelizables, y por lo tanto producen mayores beneficios en la versión hardware. (Completado) (vii) Puesto que se trabaja con recursos limitados de la FPGA, ilustración al alumnado en el compromiso de optimización de algoritmos vs curva de esfuerzo en la implementación de los mismos. (Completado) (viii) Generación de estadísticas y análisis útiles a la UCM (Vicerrectorado de Tecnologías de la Información, Vicerrectorado de Calidad) respecto al sistema propuesto que usa la licencia CAMPUS de MATLAB y puede ayudar a la toma de decisiones estratégicas de herramientas a incorporar. (Parcialmente completado) (ix) Generación de alguna publicación de carácter educativo basada en el sistema interdisciplinar propuesto. (Completado) Los objetivos completados se pueden descritos ver en los siguientes TFMs dirigidos, tutorizados y avalados por el responsable del Proyecto de Innovación [1-3]. Relativo al último ítem (ix) concretamos específicamente las publicaciones derivadas [4-6]. 3. Metodología empleada en el proyecto La metodología seguida durante el desarrollo de este Proyecto de Innovación Docente ha sido: (i) Selección de placas de desarrollo. Después de una evaluación detallada de las ventajas e inconvenientes de cada placa nos hemos decidido por las placas de Altera de bajo coste, bajo consumo por facilidad y compatibilidad con el entorno de Mathworks. Por ejemplo, la placa DE1-Soc contiene un chip Cyclone V y sendos procesadores ARM Cortex-A9 Dual Core (925 MHz) y Nios II (soft core) aunque no descartamos examinar las placas de Xilinx para este propósito. (ii) Estudio para la selección de componentes necesarios en el diseño del sistema. A la hora de construir el nuevo entorno es crítico seleccionar las toolboxes adecuadas para la compilación y depuración de los proyectos. Además de HDL Coder, HDL Verifier, se analizarán Image Procesing Toolbox ,Signal Processing Toolbox, Fixed Point toolbox, Statistics and Machine Learning Toolbox. (iii) Compra de las FPGAs. Dentro de este proyecto piloto, para cada puesto se comprarán dos unidades para paralelizar el trabajo y aumentar la eficiencia del equipo. (iv) Diseño e implementación del sistema completo. - Desarrollo de un programa “Hola Mundo”. (v) Test de conexión con las FPGAs. (vi) Preparación de guías de usuario para configurar los proyectos en el entorno desarrollado teniendo en cuenta los diferentes escenarios (Escenario para aplicaciones científicas/técnicas circunscritas a asignaturas del Grado en Óptica, Física e Ingeniería Informática y por otro lado escenario para comparar el código VHDL generado por la herramienta frente a metodologías más clásicas para asignaturas de diseño hardware en el grado o máster de Ingeniería Informática). (vii) Desarrollo de un artículo de índole educativa basado en las experiencias del alumnado utilizando el entorno propuesto. 4. Recursos humanos Tal y como se ha puesto de manifiesto en la descripción del presente proyecto docente, este proyecto de 10 participantes (7 PDIs UCM, 1 PAS UCM, 1 Estudiante postgrado UCM, 1 persona externa de Mathworks) se ha diseñado de forma interdepartamental con 3 departamentos (Departamento de Arquitectura de Computadores y Automática, Departamento de Óptica, Departamento de Física Atómica, Molecular y Nuclear) y una empresa (Mathworks) e interfacultativa con 3 facultades (Facultad de Informática, Facultad de Óptica y Optometría, Facultad de CC. Físicas) para transferir las innovaciones estimadas en el proyecto a otros contextos de aplicación como investigación, docencia específica de doctorado, e incluso feedback a la empresa Mathworks. 5. Desarrollo de las actividades El desarrollo de las actividades ha consistido en: (I) Por un un lado preparar un framework de desarrollo rápido de código VHDL sobre FPGAs de Altera a partir de código Matlab y del entorno gráfico Simulink útil para diseño rápido de aplicaciones en asignaturas de ciencia y tecnología. (II) Por otro lado, el propio entorno semiautomático tendrá interés dentro de asignaturas específicas de diseño hardware como Sistemas Empotrados Distribuidos, Codiseño Hardware-Software (Máster en Investigación Informática), Programación de Sistemas y Dispositivos (Grado en Informática) como ejemplo, analizando el compromiso de la curva de aprendizaje frente a la optimalidad de la solución y comparándola para estas asignaturas frente a técnicas tradicionales de diseño. Estas actividades vienen apoyadas con las figuras (1-3). Figura 1: Abstract o resumen del proyecto. Fuente [5]. Figura 2: Flujo seguido durante el Proyecto Innova. Fuente[5]. Figura 3: Esquema Simulink - Esquema abstracto de Simulink aplicado a todas las fases de reparación de imágenes. Fuente [5]. Figura 3: Hardware in The Loop. Fuente [6]. Específicamente, la técnica que hemos aplicado en este proyecto (denominada Hardware in the Loop), ver Figura 4, basada en la conexión de hardware externo con un equipo trabajando en tiempo real que simula el sistema a reproducir, tiene varias ventajas: a) Posibilita enseñar a los estudiantes las ventajas del modelado previo de sistemas complejos para sus diferentes áreas de conocimiento, sin renunciar a tiempos de ejecución razonables en la ventana temporal de turno de prácticas gracias a la ejecución hardware. b) Permite someter a nuestra práctica situaciones extremas sin dañar la misma. c) Reduce el coste de desarrollo y verificación, se evitan las averías de un sistema real. d) Para los estudiantes TICs de diseño hardware, ilustra la generación de hardware a través de herramientas automáticas estableciendo una comparación respecto al compromiso de curvas de aprendizaje y eficiencia para otros paradigmas de diseño. e) En general, siguiendo el acrónimo del proyecto (ALLIANCE), este proyecto docente acerca el uso del hardware específico a colectivos científico-técnicos no especialistas y al mismo tiempo ofrece a especialistas TICs desarrollo rápido de aplicaciones para establecer sinergias con personal docente de otras disciplinas. f) La UCM, se verá beneficiada en el sentido de que dispondrá de un proyecto piloto que evalúe este tipo de técnicas y su adecuación paulatina a las diferentes asignaturas de ciencia y tecnología. El tiempo ahorrado en la ejecución de las prácticas se puede emplear en el desarrollo de prácticas más complejas o exploración de laboratorios virtuales gracias al hardware reconfigurable que puede estar localizado externamente. Como trabajo futuro a seguir con la continuación de este proyecto, cabe destacar que las ideas utilizadas en el presente proyecto pueden aplicarse a otros ámbitos en un futuro. Además de las citadas asignaturas, el framework resultante sigue siendo compatible para la generación de C/C++. Por tanto, podría plantearse una integración en otras asignaturas como “Fundamentos de la Programación”, impartida por los departamentos de “Ingeniería del Software e Inteligencia Artificial” (ISIA) y “Sistemas Informáticos y Computación” (SIC), dentro de la misma Facultad de Informática. Además, hay asignaturas en el Grado en Ingeniería Electrónica de Comunicaciones que también están basadas en placas de desarrollo y se podrían usar las FPGAs de este Proyecto. Según la experiencia de este proyecto se puede pensar en una siguiente etapa para adaptar y personalizarlo para asignaturas de múltiples disciplinas. 6. Anexos Trabajos Fin de Máster que han sido elaborados con material de este proyecto de Innovación docente: [1] Creación de un clúster de computación científica basado en FPGAs de bajo coste y consumo https://eprints.ucm.es/43993/1/TFM_Memoria_HernandezG arciaMariano.pdf [2] Generación de código mediante HDL Coder para procesamiento y clasificación de imágenes biomédicas. https://eprints.ucm.es/43992/ [3] Clasificador completo de células sanguíneas mediante una FPGA de bajo coste, MATLAB y SIMULINK. https://eprints.ucm.es/43991/ Bibliografía usada en la redacción de esta memoria que ha sido publicada resultado del presente proyecto de Innovación Docente: https://eprints.ucm.es/43993/1/TFM_Memoria_HernandezGarciaMariano.pdf https://eprints.ucm.es/43992/ https://eprints.ucm.es/43992/ https://eprints.ucm.es/43992/ https://eprints.ucm.es/43991/ [4] M. Hernández, AAD Barrio, G. Botella “Cluster de computación científica de bajo coste y consumo” Enseñanza y Aprendizaje de Ingeniería de Computadores. UGR. http://digibug.ugr.es/handle/10481/15146 (publicación aceptada) [5] D. Fariña, G. Botella, A.A.D. Barrio. A DCT and neural network based system to obtain the characteristics of biological images. Proceedings of the summer simulation multi-conference, Society for Computer Simulation International (2017), p. 26 [6] H Fabregat, AAD Barrio, G Botella Simulation and implementation of a low-cost platform to improve the quality of biological images. . Proceedings of the summer simulation multi-conference, Society for Computer Simulation International (2017 http://digibug.ugr.es/handle/10481/15146 https://scholar.google.es/scholar?oi=bibs&cluster=6862550385412031803&btnI=1&hl=en https://scholar.google.es/scholar?oi=bibs&cluster=6862550385412031803&btnI=1&hl=en