¿Cuál fue la motivación para hacer que las descripciones de comportamiento fueran una parte tan importante de Verilog?

No uso Verilog para nada serio, pero lo uso en mis clases, y estoy empezando a pensar que debo estar perdiendo algo sobre el atractivo de la descripción del hardware conductual.

Cuando escribo Verilog, siento que la descripción del comportamiento está resolviendo el problema fácil, es decir, hacer una descripción estructural del hardware; y no estoy muy seguro de si lo hace mucho más fácil. Pero me encuentro pasando mucho tiempo revisando y volviendo a revisar mis ifs y cases para asegurarme de que son realmente combinatorios cuando quiero que lo sean.

¿Tal vez simplemente no estoy diseñando el tipo correcto de hardware para hacer que alwayslos bloques sean convenientes?

Respuestas (2)

Debe recordar que aunque la síntesis de hardware es importante, la verdadera razón de la existencia de Verilog (y VHDL para el caso) es la simulación.

Estos lenguajes están diseñados para permitir a los usuarios modelar y comprender su hardware, a menudo incluso antes de que se cree. Permiten analizar sistemas completos y ajustar sus diseños a la perfección. Entonces, el modelo de hardware se puede transformar en algo sintetizable. Con el modelo de diseño, el modelo de síntesis y las pruebas adecuadas, el usuario puede estar seguro de que la definición de hardware propuesta implementa completamente su diseño.

Todas las características locas (y no tan locas) de Verilog que aún no está usando, están ahí para hacer que escribir modelos de hardware sea (relativamente) fácil.

Problemas como la síntesis de pestillos no deseados plagaron a Verilog. Afortunadamente, SystemVerilog, el sucesor de Verilog, corrige estos problemas:

  • En SystemVerilog, el sucesor de Verilog, always_ffse utiliza para la síntesis de lógica secuencial, always_latchpara la síntesis de lógica bloqueada y always_combpara la síntesis de lógica combinacional en lugar de los alwaysbloques generales.

  • Estos bloques verifican e informan automáticamente si la lógica incorrecta está en el bloque durante la compilación, es decir, si la lógica bloqueada está en el always_combbloque en lugar de la lógica combinacional debido a la falta de condiciones si o caso.

  • SystemVerilog también tiene diferentes tipos de declaraciones if y case como priorityy uniqueque ayudan a sintetizar la lógica combinacional como los decodificadores prioritarios y no prioritarios.