16 votos

¿Cuál es la diferencia entre prueba y verificación?

Todos los libros de texto que he visto hacen hincapié en el hecho de que pruebas y verificación son dos conceptos diferentes. Sin embargo, ninguno de ellos ofrece una distinción clara (o lo suficientemente clara para mí, por fin).

Para ponerme en contexto, estoy interesado en la verificación de diseños de hardware digital utilizando lenguajes de diseño de hardware (HDL).

He visto algunas explicaciones que recurren a una diferencia "física" o "tangible": si se trata de un aparato fabricado, entonces es una prueba. ¿Es ésta toda la historia? Si es así, ¿por qué la palabra "prueba" aparece tan a menudo en la verificación (especialmente en la verificación funcional, hablamos de casos de prueba, bancos de pruebas, DUT (dispositivo bajo prueba), pruebas dirigidas, pruebas aleatorias, etc.?)

24voto

Winfield Puntos 176

Fue ingeniero de verificación de diseños ASIC en Qualcomm. De la forma más sencilla que puedo explicar:

Pruebas: Asegurarse de que un producto funciona, después de haberlo creado (piense en el control de calidad).

Verificación: Asegurarse de que un producto funciona ANTES de haberlo creado.

Ambas son pruebas, sólo que la verificación es más complicada porque hay que idear una forma de probar el producto antes de que exista y hay que ser capaz de asegurarse de que funciona tal y como se ha diseñado y según las especificaciones cuando realmente sale al mercado.

Por ejemplo, Intel está diseñando su próximo procesador, tiene las especificaciones, los esquemas y las simulaciones. Se gastan 1.000 millones de dólares en su fabricación. Entonces el chip vuelve y lo prueban y descubren que no funciona. Acaban de tirar un montón de dinero por la ventana.

Verificación de la tirada. Los ingenieros de verificación crean modelos que simulan el comportamiento del chip, crean el banco de pruebas que pondrá a prueba esos modelos concretos. Obtienen los resultados de estos modelos y los comparan con los resultados del RTL (modelo del circuito escrito en un lenguaje de diseño de hardware). Si coinciden, las cosas están (normalmente) bien.

Existen diferentes metodologías para el proceso de verificación, una de las más populares es Metodología de verificación universal (UVM) .

Hay mucha profundidad en el campo y la gente puede pasar toda su carrera en él.

Otra información al azar: Normalmente se necesitan 3 ingenieros de verificación para un ingeniero de diseño. Eso es lo que dice todo el mundo en este campo.

EDIT: Mucha gente piensa que la verificación es un papel de prueba, pero no lo es; es un papel de diseño en sí mismo porque tienes que entender todas las complejidades de tu CI como lo hace un diseñador, y luego tienes que saber cómo diseñar modelos, bancos de pruebas, y todos los casos de prueba que cubrirán toda la funcionalidad de las características de tu CI, así como tratar de acertar cada línea de código RTL para todas las posibles combinaciones de bits. Recuerde que hoy en día un procesador tiene miles de millones de transistores debido a que el proceso de fabricación es cada vez más pequeño (ahora 14nm).

Además, en grandes empresas como Intel, AMD, Qualcomm, etc., los diseñadores no diseñan realmente el chip. Por lo general, el arquitecto define todas las especificaciones, diseña los tipos de piezas que deben ir juntas para conseguir una función concreta con un requisito específico (es decir, velocidad, resolución, etc.) y luego el diseñador lo codifica en RTL. No es en absoluto un trabajo fácil, pero no se trata de diseñar tanto como muchos ingenieros que salen de la escuela creen que es. Todo el mundo quiere ser arquitecto, pero se necesita mucha formación y experiencia para llegar a ese punto. Muchos arquitectos tienen un doctorado y entre 15 y 20 años de experiencia como diseñadores. Son personas brillantes (y a veces locas) que merecen estar haciendo lo que hacen, y son buenos en ello. El arquitecto del primer chip en el que trabajé era un poco torpe y no seguía realmente algunas normas sociales, pero podía resolver cualquier cosa que se te planteara en relación con el chip, y a veces lo resolvía en su cabeza y te decía que miraras una señal y tú decías "¿cómo demonios ha hecho eso?". Entonces le pides que te lo explique y lo hace y se te escapa de las manos. En realidad me inspiró a leer libros de texto aunque ya me he graduado.

0 votos

+1 Gracias por el último comentario, nos ayuda a ver que el campo es realmente importante (aunque la ingeniería RTL y de diseño suena más atractiva para la mayoría de los ingenieros, creo)

0 votos

Para completar, ¿te importaría añadir qué es un caso de prueba?

0 votos

He añadido un apunte sobre lo que es realmente la verificación debido a tu primer comentario sobre que el papel del diseño es más atractivo; ambos son buenos papeles, sólo depende de lo que te guste. En cuanto a un caso de prueba, un SoC como el Snapdragon podría tener entre decenas y cientos de miles de casos de prueba, y con pruebas aleatorias, millones. En pocas palabras: aplicas un conjunto de bits de entrada que se modifican al pasar por muchos módulos, y luego obtienes unos bits de salida como resultado que comparas con los resultados de tu modelo. Algo tan simple como probar una imagen que aparece en tu teléfono tendría...

6voto

user4245 Puntos 324

En mi opinión, la verificación consiste en asegurarse de que lo que se ha diseñado "hace su trabajo", es decir, se tiene un conjunto de cosas que el "dispositivo" tiene que hacer, y la verificación marca esas cosas en la lista.

Sin embargo, las pruebas consisten en asegurarse de que las cosas que hace el "dispositivo" se hacen bien. Tienes un conjunto de funciones, y pruebas cada función asegurándote de que esa función se realiza correctamente.

En pocas palabras, la verificación es la comprobación del diseño, y la prueba es la comprobación del producto.

0 votos

Creo que empiezo a entender... ¿Podría dar algunos ejemplos de cada uno?

0 votos

¿Cómo encaja eso con un plan de verificación que especifica lo que debe implementarse y también cómo saber que la funcionalidad es correcta? De poco serviría implementar o marcar una función si no funciona.

0 votos

@ Majenko - ¿Así que ha escrito un libro sobre la verificación? ¿Podría compartir algunos detalles más sobre él?

4voto

Winston Smith Puntos 121

Viniendo de una experiencia de diseño de ASIC (hardware), hay tres términos importantes: validación , verificación y prueba . Las respuestas anteriores suelen hablar de uno o dos de estos términos, pero no contrastan claramente los tres de la forma en que yo lo haría. Así es como yo los entiendo:

  • Validación: ¿la especificación (a menudo un modelo C) cumple los requisitos del mercado o del cliente?
  • Verificación: ¿la implementación (RTL, netlist o GDS2) coincide con la especificación?
  • Prueba: ¿el dispositivo fabricado coincide con la aplicación

0 votos

¿Pueden la lista de redes y las simulaciones GDS2 dar resultados diferentes?

1 votos

@CiroSantilli, supongo que preguntas por el comportamiento de las compuertas frente a los transistores. Para voltajes y formas de onda digitales normales, diría que darán los mismos resultados. Pero podría haber efectos "analógicos" no considerados por las compuertas idealizadas, como variaciones de potencia/tierra o reparto de carga de la señal. Si esos efectos están presentes, entonces el comportamiento digital ideal puede no ser cierto.

1 votos

@CiroSantilli Sí, pueden dar resultados significativamente diferentes. He pasado por ello y he cometido ese error.

1voto

shash Puntos 668

Una prueba está diseñada para ver si se cumple una especificación. La verificación es para ver si el dispositivo cumple las entradas de diseño, es decir, todas las especificaciones. Supongo que hay muchas más interpretaciones, pero esto es lo que he visto en los documentos de orientación de la FIA.

0 votos

Ya veo, he cambiado un poco la redacción (de prueba a pruebas ) para que quede más claro que ambos son procesos. Estoy de acuerdo con usted en que para las pruebas individuales la palabra prueba es apropiado (a veces siento que estoy repitiendo lo obvio con estas preguntas de terminología...) :)

1voto

Eric Puntos 2120

Distinguimos entre pruebas de verificación y pruebas de validación. Supongamos que está diseñando un ventilador que enfría un equipo. Las pruebas de verificación se realizan para asegurarse de que el ventilador cumple todos los requisitos de diseño. Así, se puede probar el flujo de aire, el ciclo térmico, la vibración, etc.

Las pruebas de validación aseguran que los requisitos de diseño eran los correctos. ¿Las entradas de diseño que teníamos para el ventilador nos dieron realmente el ventilador que queríamos? Por ejemplo, hay que asegurarse de que el ventilador enfría realmente el equipo como estaba previsto.

0 votos

Así es como se entienden los términos en los libros de Ingeniería de Software que he leído. Validación = asegurarse de que los requisitos son correctos (comprobarlos con el cliente, la normativa, etc.); Verificación = asegurarse de que el producto es correcto (probarlo con la especificación).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X