Hardware
En el equipo de hardware tenemos dos objetivos principales:
El diseño y desarrollo de hardware de altas prestaciones es una tarea compleja y costosa (en tiempo y recursos) que es altamente sensible a los errores. Por este motivo, BZL apuesta por:
Diseñar y desarrollar una arquitectura de alto rendimiento, basada en el estándar RISC-V, que permita dar respuesta a las necesidades de altas prestaciones de las aplicaciones actuales y futuras (procesamiento de gran cantidad de datos, en el menor tiempo posible, con el menor consumo de energía posible, y con posibilidad adaptar el diseño).
Ofrecer una plataforma de trabajo estable e incremental que permita al equipo de software realizar sus desarrollos mientras el chip no está disponible.
Aplicar un flujo de trabajo multietapa para facilitar la detección y corrección de errores en etapas tempranas del diseño e implementación.
Reducir al máximo los errores humanos, tanto en la ejecución de tareas sencillas altamente repetitivas como en las complejas, con la automatización de tareas por medio de un proceso de integración continua y desarrollo continuo.
En línea con la estrategia europea y nacional, BZL apuesta por el diseño de chips basados en el estándar abierto RISC-V para dar respuesta a las crecientes demandas computacionales y energéticas de las aplicaciones modernas en el dominio de HPC. RISC-V permite acceso a todo el repertorio de instrucciones y también permite la personalización de instrucciones para resolver problemas específicos, lo cual ofrece un abanico de posibilidades para el diseño de nuevos aceleradores específicos.
En este sentido, los diseños de chips de BZL integrarán múltiples procesadores RISC-V, una unidad de procesamiento vectorial (VPU), y una jerarquía de memoria adaptadas a las necesidades del dominio HPC.
Etapas de desarrollo
Diseño arquitectural: Diseño de especificaciones de los bloques principales del diseño que se quiere desarrollar. Se trata de un documento(s) técnico donde se especifican las distintas unidades de trabajo, sus requerimientos, dependencias y prestaciones. El resultado de esta etapa se toma como referencia para las demás etapas del flujo de trabajo.
Verificación del diseño: Etapa de trabajo en la que se trata de identificar errores en el código RTL, así como garantizar que el diseño cumple con las especificaciones arquitecturales esperadas. Para ello el equipo utiliza técnicas y herramientas de verificación como entornos UVM (Universal Verification Methodology), Spike, cobertura de código y funcionalidad, assertions…
Simulación: Etapa de trabajo en la que se crea un modelo de la arquitectura, utilizando el simulador Gem5, con el fin de identificar la viabilidad de determinados aspectos de la microarquitectura del sistema antes de invertir tiempo en su diseño.
Emulación hardware: Esta etapa utiliza las propiedades de las FPGAs (flexibilidad y reconfigurabilidad) para hacer una validación del hardware antes de pasar a la etapa de diseño físico. Además, el equipo de FPGA es responsable del desarrollo de herramientas que permitan mejorar la usabilidad de los dispositivos, pero también facilitar la comunicación y observabilidad del sistema durante su ejecución.
Desarrollo RTL: Etapa de trabajo en la que se realiza la descripción hardware de cada uno de los módulos que formarán parte de la arquitectura (procesadores, aceleradores, jerarquía de memoria, interconexión…), y que también realiza la integración del sistema final. Para ello se utiliza SystemVerilog como lenguaje de descripción hardware.
Diseño físico y fabricación: Se trata de la última etapa del flujo de diseño y consta de dos fases. Una primera fase en la que se realiza la síntesis lógica y física, en función de la tecnología que se quiera utilizar para la fabricación. La segunda fase tiene lugar una vez que el chip es devuelto tras su fabricación, en la cual el equipo ha de “despertar” el chip (bring-up) para comprobar su correcto funcionamiento y prestaciones, y a partir de ello hacer un reporte técnico.