El lenguaje de descripción de hardware describe nuestro circuito, pero ¿qué hace el lenguaje de verificación de hardware? ¿Cómo se verifica el diseño?
El lenguaje de descripción de hardware describe nuestro circuito, pero ¿qué hace el lenguaje de verificación de hardware? ¿Cómo se verifica el diseño?
Los lenguajes de verificación de hardware como vera, e y luego SystemVerilog y SystemC se crearon para hacer que el proceso de verificación sea más eficiente. La historia cuenta que según la ley de Moore, el tamaño del diseño y, por lo tanto, su complejidad, se duplica cada 18 meses. En los primeros días del diseño, cuando incluso los microprocesadores se dibujaban como esquemas, no se realizaba ninguna verificación tal como existía antes de producir el silicio. Bueno, por supuesto, ahora usamos computadoras para verificar nuestro diseño, pero ¿cómo verificaron la primera computadora? lol
En aquellos días, cuando un diseño completo se divide en bloques, diferentes personas usarían su propio cerebro para diseñar, verificar y simplificar el diseño. Si le hubieras dicho a alguien que algún día habría una herramienta en la que solo escribes un texto y sintetizará y simplificará el circuito automáticamente, se reirán de ti. Leí esto en un libro real. Sin embargo, las cosas cambiaron a medida que los diseños se volvieron más complejos y la velocidad de diseño aumentó. Automatizar cualquier tarea significa eliminar la intervención humana y, por lo tanto, eliminar el potencial de error inducido por el hombre. Más complejo significa que el error inducido por el hombre es más probable. En este momento, hacer todo el diseño a mano era ineficiente, las personas pasaron de dibujar a mano (sí, dibujo físico real) a esquemas en una computadora para hacer el diseño. Más tarde llegó el HDL, que proporcionó una forma mucho más eficiente de diseñar circuitos digitales e intercambiar diseños; las herramientas de síntesis se volvieron bastante robustas también, por lo que la necesidad de hacer un diseño esquemático era, bueno, nada más. Ahora podemos verificar bloques pequeños como el sumador completo y el multiplexor de nosotros mismos. Sin embargo, ¿qué pasa con un diseño complejo? En este punto, las personas usan HDL para la verificación. En este caso, creamos un "banco de pruebas" que aplica un estímulo predeterminado a un modelo de nuestro diseño y la salida generada se compara con la salida esperada proporcionada por el diseñador. Esto es posible ya que los circuitos digitales siguen la lógica booleana, su salida puede predecirse. Es posible escribir un programa de computadora que haga esto y esto es exactamente lo que sucede en la simulación.
Ahora a la pregunta, ¿por qué necesitamos HVLs? Esto está relacionado con el dominio del software. A medida que el software se hacía cada vez más complejo, las personas pasaban del ensamblaje a lenguajes de procedimiento como BASIC y C, entre otros. Sin embargo, escribir y mantener grandes programas todavía era difícil. Esto es cuando las personas desarrollaron el paradigma de programación orientada a objetos. OOP es ciertamente un desarrollo revolucionario que ha hecho posible que los programas de computadora resuman un problema del mundo real a niveles sin precedentes. Hace que escribir un programa sea más eficiente y también mantenerlo y expandirlo.
La simulación es esencialmente una actividad basada exclusivamente en software. Cuando usamos HDL para escribir un banco de pruebas, tenemos que escribir con precisión cada cambio de señal que debe tener lugar y en el momento en que debe tener lugar. Sin embargo, si aumentamos el nivel de abstracción para decir la escritura de una palabra completa (por ejemplo, un byte a un bus de datos) a la vez, la escritura de testbench será mucho más rápida y menos tediosa. Podemos elevar aún más el nivel de abstracción, por ejemplo, con el diseño de Ethernet podemos escribir un paquete completo a la vez y revisar un paquete completo a la vez en lugar de bits individuales.
Con las HVLs, aplican la técnica OOP en el dominio de verificación de hardware. Lo hacen al permitir verificar un diseño a un nivel más alto de abstracción. Al mismo tiempo, contienen características que son especialmente un adaptador para verificación, en lugar de escribir código capaz de sintetizar.
por ejemplo, SystemVerilog proporciona 2 características importantes. Estas son aseveraciones concurrentes y pruebas aleatorias restringidas. Al igual que las comprobaciones de afirmación de que una expresión es verdadera en un momento dado, una afirmación concurrente verifica que la secuencia en la que la señal alterna sea correcta. En lugar de tener que escribir cada pieza de estímulo que se debe aplicar a un diseño bajo verificación, las pruebas aleatorias restringidas aplican todos los estímulos posibles que se ajustan a la restricción dada por el ingeniero de verificación, las horas extraordinarias. Esto ahorra mucho tiempo en la escritura de estímulo.
Los HVL tienden a ser un híbrido entre HDL y lenguajes de scripting. Mientras que las HDL se pueden sintetizar en un circuito, la HVL se debe ejecutar como software, proporcionando estímulo al hardware real o al hardware simulado (de HDL) para verificar la funcionalidad correcta del Hardware.
Algunos HDL tienen un tipo de HVL incorporado. Por ejemplo, VHDL tiene una serie de construcciones de lenguaje que no están diseñadas para usarse en síntesis de hardware, pero se pueden usar en un banco de pruebas para estimular o analizar otro código en la simulación.
Lea otras preguntas en las etiquetas verilog system-verilog