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 ;
- 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.
- HREADY, HREADYOUT puede excluirse porque el comportamiento de DUT siempre es 1;
- HRESP se puede excluir porque el DUT diseñado siempre es 0;
- 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;
- 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 %