¿Existe una forma “estándar” de verificar el HDL de una máquina de estado?

2

Las máquinas de estado son un patrón que se usa muy a menudo para escribir diseños sincrónicos. Sirven como los controladores en el diseño. Entonces, ¿hay una manera estándar de verificarlos si se escriben usando VHDL? ¿O es mejor usar alguna GUI para dibujarlos y luego generar código a partir de la GUI?

De manera estándar me refiero a un patrón de código utilizado para verificarlos. Siempre hay diferentes maneras de "despellejar al gato", pero quizás hay un método que es muy popular.

El problema es que las máquinas de estado pueden ser bastante grandes y uno tendría que escribir código para verificar cada rama en la máquina de estado, lo que conduce a una gran cantidad de código en el banco de pruebas.

Editar: Solo me ocupo de la verificación del fsm en sí mismo, para verificar que coincida con el diagrama de estado de fsm y que no haya errores en la codificación rtl.

    
pregunta quantum231

1 respuesta

2

La verificación es una gran parte del proceso de diseño; en un diseño complejo, no sería inusual pasar tanto tiempo, o incluso más tiempo en la verificación que en el diseño real. Siendo ese el caso, una pregunta que es esencialmente "cómo verificar diseños complejos" es bastante amplia.

En la descripción general, si el diseño se enfrenta a un gran número de escenarios, como indica que hay muchos estados en su máquina de estados, un buen punto de partida para el conjunto de pruebas sería tener pruebas separadas que estimulen el diseño para para replicar todos los escenarios de tesis. Luego puede usar las herramientas de cobertura de código para ver qué transiciones de estado se han cubierto y agregar nuevas pruebas hasta que todo esté cubierto. Puede administrar diferentes casos de prueba utilizando la construcción configuration en VHDL

En general, puede darse el caso de que haya escenarios que sean variaciones de un tema, por ejemplo, recibir un paquete de algún tipo, pero con diferentes longitudes de paquetes, longitudes que están fuera de los límites, etc. En estos casos, puede escribir pruebas que generan una serie de paquetes de longitud aleatoria; entonces debería asegurarse de que se cumplan todos sus casos extremos, por ejemplo, las longitudes mínimas y máximas, el mínimo más uno, el máximo menos uno, etc., y que su diseño haga lo correcto en cada caso. Es posible que también necesite probar combinaciones de entradas al diseño, y nuevamente, estas combinaciones podrían generarse mediante un caso de prueba, en lugar de escribirlas manualmente una por una.

Existen varias metodologías que intentan ayudar a administrar el proceso de generación de estímulos y el registro de los resultados. Uso OSVVM , que aprendí a través de un curso hace un par de años. Me gusta porque utiliza el mismo lenguaje VHDL al que estoy acostumbrado, junto con un poco de secuencias de comandos TCL, y no requiere ningún 'extra' para trabajar con mi simulador. Hay muchas alternativas, que no intentaré enumerar aquí, pero una búsqueda rápida en Google para la "verificación de fpga" trae una gran cantidad de recursos.

    
respondido por el scary_jeff

Lea otras preguntas en las etiquetas