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.