Tutoriales

Sesion 3 Seminario Verificación UVM nivel básico

En esta sesión nos vamos a dedicarnos a la cobertura funcional y a mejorar nuestro plan de verificación con el fin de conseguir una grado de cobertura especificado.

Para ello el esquema que vamos a seguir es el siguiente:

  1. Determinación de la cobertura funcional con el componente coverage
  2. Generación de nuevas secuencias y valoración del grado de cobertura obtenido
  3. Control de generación de estímulos en base a grado de cobertura

Cobertura funcional

La cobertura funcional es ejercida fundamentalmente en systemverilog mediante los covergroups. Podéis observar en esta web un apartado específico para dichos elementos: VERIFICACIÓN->COBERTURA FUNCIONAL.

Lo importante ahora en UVM es saber donde vamos a definir nuestros covergroups. Lo haremos en el componente disponible en nuestro enviroment que recibe el nombre de «coverage». Observad en el siguiente vídeo (en el punto 2 de su esquema) cómo lo hacemos para el caso del radicador.

Visto el procedimiento vamos a establecer como mínimo plan de verificación, el que probemos casos en los que el numerador y denominador sean positivos y negativos y que tengamos combinaciones pos-pos, pos-neg, neg-pos y neg-neg. ¿Cómo hariamos los covergroups?

Generación de varias secuencias

Podemos establecer varios tests, cada uno de ellos con una secuencia o podemos hacer un test que encadene varias secuencias.

Vamos a hacer esto último. Ya tenemos definida una primera secuencia que genera numeradores y denominadores positivos. Vamos a generar tres nuevas secuencias para el resto de combinaciones que necesitamos comprobar en nuestro plan de verificación.

Recordad:

  1. Generaremos la secuencia con la plantilla adecuada.
  2. Generaremos la secuencia virtual asociada con la plantilla adecuada.
  3. Definiremos lo que debe de hacer cada nueva secuencia.
    1. Habilitaremos y desabilitaremos constraints para que haga la combinación que nos interesa.
    2. Definiremos un número de repeticiones
    3. Pondremos una evaluación en cada repetición del grado de cobertura alcanzado (mediante el método $get_coverage()) para que superado un cierto umbral dejemos de hacer repeticiones

El objetivo a conseguir es superar el 90% de cobertura total (en la que se tenga en cuenta covergroups y aserciones)

Propuesta de continuación

Si os queda tiempo y viendo como hemos solucionado este primer banco de pruebas UVM, sería interesante establecer otras propuesta en la que utilicemos en lugar de un agente DOS.

  • Uno de ellos activo y el otro pasivo.
  • El activo dedicado a los operandos de entrada
  • El pasivo dedicado a los resultados
  • El activo deberá tener generación de estímulos y monitorización de entradas en base a la señal de start que actua como validación de las entradas
  • El pasivo deberá tener monitorización de salidas en base a la señal de fin que actua como validación de las salidas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *