lenguaje de descripción de hardware
Inglés: hardware description language
Cualquier lenguaje de una clase de lenguajes de computadora, modelado o especificación para la descripción formal y el diseño de circuitos electrónicos lógicos analógicos o digitales.
HDL: código que describe circuitos en lugar de ejecutarse en ellos
Un lenguaje de descripción de hardware es una notación formal para especificar la estructura y el comportamiento de los circuitos electrónicos antes de su construcción. A diferencia de los lenguajes de programación convencionales que se ejecutan secuencialmente en un procesador, los HDL describen lo que es un circuito en lugar de lo que hace. La descripción se puede sintetizar en hardware real, generalmente en una configuración para un dispositivo lógico programable (FPGA) o como entrada para una herramienta de "place-and-route" para un circuito integrado de aplicación específica (ASIC).
Los dos HDL dominantes en uso industrial son Verilog y VHDL. Verilog se originó en la década de 1980 como un lenguaje propietario antes de ser lanzado como un estándar IEEE; tiene una sintaxis que recuerda vagamente a C y es preferido en muchas casas de diseño y empresas de semiconductores estadounidenses. VHDL, estandarizado por IEEE en 1987, tiene una sintaxis similar a Ada y es más prolijo; permanece arraigado en los sectores de defensa, aeroespacial e industrial europeo. Ambos pueden describir circuitos en múltiples niveles de abstracción: a nivel de transferencia de registros (RTL), donde el comportamiento se expresa en términos de señales y transiciones de estado; a nivel de puerta, especificando puertas lógicas individuales y sus conexiones; o de forma comportamental, como descripciones algorítmicas.
Simulación y Síntesis
El valor fundamental de un HDL es que permite a un diseñador simular el circuito antes de comprometerse con la fabricación. Un simulador lógico lee la descripción HDL y evalúa cómo responde el circuito a los estímulos de entrada a lo largo del tiempo. Esta simulación puede revelar violaciones de temporización, errores lógicos y condiciones de carrera que de otro modo consumirían semanas de prototipado o pruebas de prototipos. Una vez que la simulación es exitosa, el código fuente HDL se alimenta a una herramienta de síntesis, que optimiza la descripción y la asigna a los recursos lógicos disponibles en el dispositivo de destino. Las herramientas de síntesis realizan minimización lógica, mapeo tecnológico y "place-and-route", produciendo netlists y bitstreams de configuración.
Un error común es escribir HDL que simula correctamente pero sintetiza hardware que se comporta de manera diferente. Esto a menudo surge de construcciones HDL que no tienen un correlato físico: un bucle "for" en código de comportamiento, por ejemplo, debe desplegarse completamente en lógica paralela en el momento de la síntesis, lo que puede consumir mucha más área de la que el diseñador anticipó. De manera similar, la semántica de la asignación de señales difiere entre los modos de simulación y síntesis; las asignaciones de bloqueo y no bloqueo en Verilog son fuentes notorias de errores que pasan la simulación pero fallan en el hardware.
El nombre lenguaje de descripción de hardware refleja que estas herramientas describen configuraciones de hardware, no algoritmos a ejecutar. La barrera entre el diseño HDL y la ingeniería de software es real: un ingeniero de software embebido que escribe C para un microcontrolador está resolviendo problemas computacionales, mientras que un diseñador de HDL está componiendo lógica combinacional y secuencial que se ejecutará en paralelo. Los flujos modernos de EDA (automatización de diseño electrónico) integran ambos; un diseño de FPGA puede incluir un núcleo de procesador "soft" (descrito en HDL) ejecutando código C embebido junto con bloques lógicos hechos a mano, todo especificado en un proyecto HDL unificado.
Fuentes
- Fuente de la definiciónWiktionary