Al completar este curso, los estudiantes serán capaces de comprender el papel crítico de la verificación pre-silicio en el diseño moderno de microprocesadores. Podrán identificar y aplicar diversas metodologías y técnicas de verificación, así como utilizar herramientas de simulación para depurar y analizar el comportamiento del diseño. A lo largo del curso, los estudiantes desarrollarán planes de verificación y crearán bancos de pruebas efectivos utilizando lenguajes de descripción de hardware y lenguajes de verificación.
Profesorado
Responsable
Jesus Sanchez Navarro (
)
Horas semanales
Teoría
2
Problemas
0
Laboratorio
2
Aprendizaje dirigido
0
Aprendizaje autónomo
7.11
Objetivos
Entender e implementar un plan de verificación y un banco de pruebas, y ejecutarlo.
Competencias relacionadas:
CG4,
CEE4.1,
CB7,
CTR3,
Ser capaz de proporcionar y defender el plan de verificación y sus fases de ejecución.
Competencias relacionadas:
CB8,
CTR3,
CTR5,
Utilizar las herramientas EDA necesarias para llevar a cabo el proyecto.
Competencias relacionadas:
CB7,
CTR5,
Contenidos
Introducción a la verificación pre-silicio
Por qué la verificación es crítica en el diseño moderno. Panorama general del flujo de verificación. El papel de la verificación en el diseño de microprocesadores.
Planificación de verificación y bancos de pruebas
Plan de verificación y objetivos de cobertura. Arquitectura del banco de pruebas. Monitores, verificadores y comparadores de datos.
SystemVerilog para la verificación (SVV)
Conceptos básicos de SystemVerilog para el diseño de bancos de pruebas. Interfaces y bloques de sincronización. Aleatorización y restricciones. Clases, herencia y polimorfismo. Transacciones (TLM).
Pruebas dirigidas y aleatorizadas
Metodologías de pruebas dirigidas. Generación aleatorizada de pruebas. Análisis de cobertura de pruebas. Estrategias de depuración. Variación de estímulos. Predicción vs. aleatoriedad. Restricciones en la generación de pruebas.
Aserciones y cobertura funcional
Aserciones inmediatas vs. concurrentes. Sintaxis y ejemplos de SVA (SystemVerilog Assertions). Cobertura funcional vs. cobertura de código. Verificación basada en cobertura.
Introducción a UVM (Universal Verification Methodology)
Objetivos y estructura de UVM. Componentes de UVM. Mecanismos de fábrica, configuración y objeción.
Bancos de pruebas y secuenciación con UVM
Fases y flujo de pruebas en UVM. Secuencias y elementos de secuencia. Creación de pruebas reutilizables. Depuración y salida de simulación.
Desafíos específicos de verificación de procesadores
Verificación de tuberías de CPU y lógica de control. Verificación a nivel de instrucción y arquitectónica. Manejo de interrupciones, excepciones y riesgos. Pruebas de conformidad con la ISA.
Técnicas de verificación formal
Descripción general de la verificación de modelos y la demostración de teoremas. Comprobación de equivalencia. Comprobación de modelos acotados. Casos de uso y limitaciones en el diseño de microprocesadores.
Verificación de rendimiento y consumo de energía
Conceptos de simulación consciente de la energía. Estados funcionales vs. estados de bajo consumo. Modelado de rendimiento.
Estrategias de depuración y cierre de cobertura
Interpretación de informes de cobertura funcional/código. Optimización de pruebas para la cobertura. Técnicas de depuración y análisis gráfica de las señales.
Tendencias y estudios de casos reales
Últimas tendencias en verificación (RISC-V, verificación basada en ML, herramientas formales). Revisión de estudios de casos reales de verificación de CPU.
Introducción a la validación post-silicio
Cómo se detectan y corrigen los errores en hardware real. Herramientas y metodologías.
Objetivos:123 Semana:
13 (Fuera de horario lectivo)
Teoría
0h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h
Metodología docente
Los conceptos principales de la verificación pre-silicio de procesadores se introducirán en las clases de teoria. Los estudiantes completarán su experiencia de aprendizaje con las sesiones de laboratorio, donde pondrán en práctica los conceptos aprendidos en las clases.
Método de evaluación
El curso tiene dos calificaciones:
1) Las sesiones de laboratorio (L)
2) Presentación de un proyecto de verificación (P)
La calificación final se calculará como: 0,4 × L + 0,6 × P.
Conceptos de diseño de circuitos digitales.
Lenguajes de descripción de hardware (HDL).
Programación y scripting.
Principios de arquitectura de computadoras.