Los generadores de prueba aleatorios (a menudo abreviado RTG o ISG para Instruction Stream Generator) son un tipo de software de computadora que se utiliza en la verificación funcional de microprocesadores . Su uso principal radica en proporcionar estímulos de entrada a un dispositivo bajo prueba .
En un entorno de verificación de simulación / banco de pruebas , la entrada de procesos del simulador creada por el RTG y los monitores de cobertura pueden usarse para verificar que el generador está probando correctamente el diseño.
Los generadores de prueba aleatorios varían en alcance desde simples scripts y macros parametrizados que se pueden crear en cuestión de semanas hasta sistemas con todas las funciones que requieren un extenso desarrollo de software. Los generadores de prueba aleatorios suelen ser creados por las organizaciones de diseño.
Generadores basados en tablas
Los generadores de prueba basados en tablas son los RTG más simples disponibles. La creación de tales generadores se puede lograr con relativa rapidez y los requisitos de mantenimiento suelen ser bajos. Estos generadores funcionan capturando el conocimiento de la arquitectura del conjunto de instrucciones del diseño y almacenándolo en una base de datos relacional para su uso posterior. Debido a su naturaleza simplista, los generadores basados en tablas pueden ser utilizados por personal menos capacitado para crear pruebas interesantes. Sin embargo, estos generadores tienen un inconveniente, ya que su implementación generalmente se restringe a arquitecturas simples. El uso en ISA más complejas puede resultar en la imposibilidad de llegar a casos extremos o crear escenarios complejos. Los generadores basados en tablas también pueden generar pruebas no válidas en ocasiones.
Generadores estáticos
Los generadores estáticos son similares a los generadores basados en tablas, con la excepción de que la mayoría de la selección de instrucciones, operandos y datos residen en un código de procedimiento complejo . Los generadores estáticos son capaces de producir un comportamiento más aleatorio que los generadores basados en tablas, pero aún tienen problemas para llegar a muchos casos de esquina. Además, el nivel de habilidad requerido para crear y mantener dicha herramienta aumenta drásticamente una vez que se alcanza este nivel de sofisticación.
Generadores dinámicos
Los generadores dinámicos incorporan un conocimiento significativo sobre la arquitectura que se está probando. Mejoran la capacidad de los usuarios menos capacitados para generar pruebas complejas que pueden llegar a casos difíciles de alcanzar sin tropezar con sutiles errores de programación. Este conocimiento, flexibilidad y facilidad de uso adicionales se refleja en un generador más complejo y, en consecuencia, el costo de crear y mantener el generador es mayor que para los generadores de mesa o estáticos.