Cobertura de carrera de práctica Xiaobai de 0 a 100%

Tabla de contenido

1. Preparación preliminar

2. Ejecutar el caso y analizar la cobertura

3. Reemplace la semilla aleatoria para mejorar la cobertura

4. Analiza de nuevo la cobertura 

5. Escriba incentivos específicos para aumentar la cobertura

6. Cobertura al 100%


1. Preparación preliminar

El trabajo preparatorio incluye la verificación de la construcción del entorno, la definición de la cobertura funcional y la preparación de scripts de archivos MAKE. Familiarícese con los comandos de uso común.

De acuerdo con la secuencia de comandos del archivo MAKE personalizado, se utilizan principalmente tres comandos:

Tarea Orden
ejecutar un caso hacer que comp elab ejecute COV=1 TESTNAME=...
Combinar cobertura hacer mergecov
Abra DVE para analizar la cobertura hacer dvecov
Ejecutar caso con script sh fuente ...

Nota: Ya sea que se proporcione semilla aleatoria + ntb_random_seed en el archivo MAKE, se debe agregar la semilla aleatoria, de modo que se generen semillas aleatorias diferentes cuando se ejecute el mismo caso varias veces.

Para ejecutar un caso con un script sh, debe preparar un script sh con anticipación (es conveniente para ejecutar varios casos a la vez). Toque my_test1 en la terminal para crear un documento llamado my_test1. Generalmente, suelo nombrarlo my_test1 y my_test2. En el documento, coloque varios casos y comandos para fusionar la cobertura y abrir el análisis DVE, y luego ingrese my_test1 en la terminal para ejecutar automáticamente las siguientes instrucciones.

Un documento controlado por un script sh

2. Ejecutar el caso y analizar la cobertura

Haz una prueba de humo

 

Ejecutar una prueba con una dirección diferente

 Ejecute una prueba de datos con diferentes anchos de bits

 

 

 prueba de desalineación de palabras

 

 prueba de reinicio

 

Después de ejecutar diferentes casos, la cobertura aumenta como se muestra en la siguiente tabla

prueba

cobertura de código

Cobertura funcional

prueba de humo

71.34

20.07

dirección diferente

76.34

39.80

ancho diferente

79.68

52.30

prueba de desalineación de palabras

96.68

71.05

prueba de reinicio

96.78

71.05

Después de la prueba de desalineación de palabras, la tasa de cobertura del código aumentó relativamente rápido, principalmente porque los 16 bits de datos superiores se asignaron por primera vez en este caso, y las asignaciones en los tres casos anteriores fueron principalmente en los 16 bits inferiores, por lo que se cubrió la alternancia de código de los bits de datos superiores. Pero la tasa de cobertura no alcanzó el 100 %, por lo que intentamos cambiar la semilla aleatoria y volver a ejecutar.

3. Reemplace la semilla aleatoria para mejorar la cobertura

Para mejorar la cobertura, puede cambiar la semilla aleatoria y ejecutar los tres casos en el medio cuatro veces (aquí se puede usar el script sh), pero la mejora de la cobertura no es grande, la cobertura del código permanece sin cambios y la cobertura funcional aumenta del 71,05 % al 72,37 %.

4. Analiza de nuevo la cobertura 

Así que analizamos para ver qué lugares no están cubiertos, primero analizamos el interruptor de cobertura de código ;

  1. En este momento, los conmutadores de HWDATA y HRDATA en ciertas posiciones no se han cubierto, y se pueden escribir incentivos direccionales para cubrirlos, y los valores de HWDATA se envían a su vez.
  2. HREADY, HREADYOUT puede excluirse porque el comportamiento de DUT siempre es 1;
  3. HRESP se puede excluir porque el DUT diseñado siempre es 0;
  4. HSELBRAM puede dar el valor inicial 1, establecerlo en 0 en la asignación sin bloqueo en la tarea de reinicio y luego establecerlo en 1 cuando se libera;
  5. HTRANS no tiene estados BUSY y SEQ porque el DUT no admite la transmisión en ráfaga, por lo que puede excluirse;

Luego analice la cobertura funcional:

 Se puede ver que la dirección aleatoria no ha llegado a addr_end muchas veces, y la dirección límite es difícil de cubrir, por lo que debemos escribir un incentivo direccional para cubrir la dirección límite. Al mismo tiempo, descubrimos que la dirección ilegal no estaba cubierta porque no teníamos un incentivo para escribir direcciones ilegales, por lo que escribimos otra secuencia para cubrir estos tres puntos.

Nota: La exclusión principal debe ser la situación inevitable e imposible causada por el comportamiento diseñado.

5. Escriba incentivos específicos para aumentar la cobertura

Escriba estímulos direccionales para satisfacer la alternancia de HWDATA y HRDATA.

 Escribir estímulos direccionales para satisfacer la cobertura funcional

Nota: escriba nuevamente seq, test y los dos archivos sv deben colocarse en el archivo de encabezado svh y montar el seq correspondiente en test.

6. Cobertura al 100%

Coloque las dos pruebas recién escritas en otro documento my_test2.

 Después de volver a ejecutar los incentivos específicos, importe los archivos previamente excluidos y finalmente descubrió que la cobertura funcional y la cobertura del código alcanzaron el 100 %

Supongo que te gusta

Origin blog.csdn.net/weixin_55225128/article/details/127880312
Recomendado
Clasificación