Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Los HDL forman parte integral de los sistemas de automatización de diseño electrónico (EDA),
especialmente para circuitos complejos, como circuitos integrados de aplicaciones específicas,
microprocesadores y dispositivos lógicos programables.
Motivación
Debido a la creciente complejidad de los circuitos electrónicos digitales desde la década de
1970 (consulte la ley de Moore), los diseñadores de circuitos necesitaban realizar descripciones
de lógica digital a un alto nivel sin estar vinculados a una tecnología electrónica específica,
como ECL., TTL o CMOS. Los HDL se crearon para implementar la abstracción del nivel de
transferencia de registros, un modelo del flujo de datos y la temporización de un circuito.
Hay dos lenguajes principales de descripción de hardware: VHDL y Verilog. Hay diferentes tipos
de descripción en ellos: "flujo de datos, conductual y estructural". Ejemplo de flujo de datos de
VHDL:
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.TODOS;ENTIDAD no1 ES PORT() a :
INTRODUCCIÓN STD_LOGIC; b : Fuera. STD_LOGIC; );FIN no1;ARQUITECTURA
conductual OF no1 ESBEGIN b . NO a;FIN conductual;
Estructura de HDL
Los HDL son expresiones estándar basadas en texto de la estructura de los sistemas
electrónicos y su comportamiento a lo largo del tiempo. Al igual que los lenguajes de
programación concurrentes, la sintaxis y la semántica de HDL incluyen notaciones explícitas
para expresar la concurrencia. Sin embargo, a diferencia de la mayoría de los lenguajes de
programación de software, los HDL también incluyen una noción explícita de tiempo, que es un
atributo principal del hardware. Los lenguajes cuya única característica es expresar la
conectividad de circuitos entre una jerarquía de bloques se clasifican correctamente como
lenguajes de listas de conexiones utilizados en el diseño eléctrico asistido por computadora.
HDL se puede usar para expresar diseños en arquitecturas estructurales, de comportamiento o
de nivel de transferencia de registro para la misma funcionalidad de circuito; en los dos últimos
casos, el sintetizador decide la arquitectura y el diseño de la puerta lógica.
Los HDL se utilizan para escribir especificaciones ejecutables para hardware. Un programa
diseñado para implementar la semántica subyacente de las declaraciones del lenguaje y
simular el progreso del tiempo proporciona al diseñador de hardware la capacidad de modelar
una pieza de hardware antes de crearla físicamente. Es esta ejecutabilidad la que da a los HDL
la ilusión de ser lenguajes de programación, cuando se clasifican con más precisión como
lenguajes de especificación o lenguajes de modelado. Existen simuladores capaces de admitir
el modelado de eventos discretos (digitales) y de tiempo continuo (analógicos), y hay
disponibles HDL específicos para cada uno.
Historia
Los primeros lenguajes de descripción de hardware aparecieron a fines de la década de 1960 y
parecían lenguajes más tradicionales. El primero que tuvo un efecto duradero se describió en
1971 en el texto Computer Structures de C. Gordon Bell y Allen Newell. Este texto introdujo el
concepto de nivel de transferencia de registro, utilizado por primera vez en el lenguaje ISP para
describir el comportamiento del PDP-8 de Digital Equipment Corporation (DEC).
El lenguaje se generalizó más con la introducción de los módulos de nivel RT (RTM) PDP-16 de
DEC y un libro que describe su uso. Siguieron al menos dos implementaciones del lenguaje ISP
básico (ISPL e ISPS). ISPS fue adecuado para describir las relaciones entre las entradas y las
salidas del diseño y fue rápidamente adoptado por los equipos comerciales de DEC, así como
por una serie de equipos de investigación tanto en los EE. UU. como entre sus aliados de la
OTAN.
A fines de la década de 1970, el diseño que usaba dispositivos lógicos programables (PLD) se
hizo popular, aunque estos diseños se limitaban principalmente al diseño de máquinas de
estado finito. El trabajo en Data General en 1980 usó estos mismos dispositivos para diseñar el
Data General Eclipse MV/8000, y comenzó a crecer la necesidad comercial de un lenguaje que
pudiera corresponder bien con ellos. En 1983, Data I/O introdujo ABEL para satisfacer esa
necesidad.
En 1985, cuando el diseño cambió a VLSI, Gateway Design Automation presentó Verilog e
Intermetrics lanzó la primera versión completa del lenguaje de descripción de hardware VHSIC
(VHDL). VHDL se desarrolló a instancias del programa VHSIC del Departamento de Defensa de
los Estados Unidos y se basó en el lenguaje de programación Ada, así como en la experiencia
adquirida con el desarrollo anterior de ISPS. Inicialmente, Verilog y VHDL se usaban para
documentar y simular diseños de circuitos ya capturados y descritos en otra forma (como
archivos esquemáticos). La simulación HDL permitió a los ingenieros trabajar a un nivel más
alto de abstracción que la simulación a nivel esquemático y, por lo tanto, aumentó la capacidad
de diseño de cientos de transistores a miles. En 1986, con el apoyo del Departamento de
Defensa de EE. UU., VHDL fue patrocinado como un estándar IEEE (IEEE Std 1076) y la primera
versión estandarizada por IEEE de VHDL, IEEE Std 1076-1987, fue aprobada en diciembre de
1987. Diseño de cadencia Posteriormente, Systems adquirió Gateway Design Automation por
los derechos de Verilog-XL, el simulador HDL que se convertiría en el estándar de facto de los
simuladores Verilog durante la próxima década.
La introducción de la síntesis lógica para los HDL hizo que los HDL pasaran de un segundo plano
al primer plano del diseño digital. Las herramientas de síntesis compilaron archivos fuente HDL
(escritos en un formato restringido llamado RTL) en una descripción de lista de conexiones
fabricable en términos de puertas y transistores. Escribir archivos RTL sintetizables requería
práctica y disciplina por parte del diseñador; En comparación con un diseño esquemático
tradicional, las netlists RTL sintetizadas casi siempre tenían un área más grande y un
rendimiento más lento. El diseño de un circuito por parte de un ingeniero experto, utilizando
una captura esquemática/diseño manual que requiere mucha mano de obra, casi siempre
superaría a su equivalente sintetizado lógicamente, pero la ventaja de productividad que tenía
la síntesis pronto desplazó la captura esquemática digital exactamente a aquellas áreas que
eran problemáticas para Síntesis RTL: circuitos asíncronos, de baja potencia o de velocidad
extremadamente alta.
En unos pocos años, VHDL y Verilog surgieron como los HDL dominantes en la industria
electrónica, mientras que los HDL más antiguos y menos capaces desaparecieron gradualmente
del uso. Sin embargo, VHDL y Verilog comparten muchas de las mismas limitaciones, como que
no son adecuados para la simulación de circuitos analógicos o de señal mixta. Los HDL
especializados (como Confluence) se introdujeron con el objetivo explícito de solucionar las
limitaciones específicas de Verilog y VHDL, aunque ninguno tuvo la intención de reemplazarlos.
A lo largo de los años, se ha invertido mucho esfuerzo en mejorar los HDL. La última iteración
de Verilog, conocida formalmente como IEEE 1800-2005 SystemVerilog, presenta muchas
características nuevas (clases, variables aleatorias y propiedades/afirmaciones) para abordar la
creciente necesidad de una mejor aleatorización del banco de pruebas, jerarquía de diseño y
reutilización. También se está desarrollando una revisión futura de VHDL y se espera que
coincida con las mejoras de SystemVerilog.
El código HDL luego se somete a una revisión de código o auditoría. En preparación para la
síntesis, la descripción de HDL está sujeta a una serie de verificadores automáticos. Los
verificadores informan las desviaciones de las pautas de código estandarizadas, identifican
posibles construcciones de código ambiguas antes de que puedan causar una mala
interpretación y verifican errores de codificación lógica comunes, como puertos flotantes o
salidas en cortocircuito. Este proceso ayuda a resolver errores antes de que se sintetice el
código.
La verificación del diseño suele ser la parte del proceso de diseño que más tiempo consume,
debido a la desconexión entre la especificación funcional de un dispositivo, la interpretación de
la especificación por parte del diseñador y la imprecisión del lenguaje HDL.. La mayor parte del
ciclo inicial de prueba/depuración se lleva a cabo en el entorno del simulador de HDL, ya que la
etapa inicial del diseño está sujeta a cambios de circuito importantes y frecuentes. Una
descripción HDL también se puede crear prototipos y probar en hardware; a menudo se
utilizan dispositivos lógicos programables para este propósito. La creación de prototipos de
hardware es comparativamente más costosa que la simulación HDL, pero ofrece una vista del
diseño del mundo real. La creación de prototipos es la mejor manera de comparar la interfaz
con otros dispositivos de hardware y prototipos de hardware. Incluso aquellos que se ejecutan
en FPGA lentos ofrecen tiempos de simulación mucho más cortos que la simulación HDL pura.
Las aserciones no modelan la actividad del circuito, pero capturan y documentan la intención
del diseñador en el código HDL. En un entorno de simulación, el simulador evalúa todas las
afirmaciones especificadas e informa la ubicación y la gravedad de cualquier infracción. En un
entorno de síntesis, la herramienta de síntesis suele funcionar con la política de detener la
síntesis ante cualquier infracción. La verificación basada en afirmaciones aún está en sus
inicios, pero se espera que se convierta en una parte integral del conjunto de herramientas de
diseño de HDL.
Tanto los lenguajes de programación como los HDL son procesados por un compilador (a
menudo llamado sintetizador en el caso de HDL), pero con diferentes objetivos. Para HDL,
"compilar" se refiere a la síntesis lógica; el proceso de transformar la lista de códigos HDL en
una netlist de puerta físicamente realizable. La salida de netlist puede tomar cualquiera de
muchas formas: una "simulación" netlist con información de retardo de puerta, una
"transferencia" netlist para la colocación y el enrutamiento posteriores a la síntesis en una
matriz de semiconductores, o un Formato de intercambio de diseño electrónico (EDIF) genérico
estándar de la industria (para la conversión posterior a un archivo de formato JEDEC).
Por otro lado, un compilador de software convierte la lista de código fuente en un código
objeto específico del microprocesador para su ejecución en el microprocesador de destino. A
medida que los HDL y los lenguajes de programación toman prestados conceptos y
características, el límite entre ellos se vuelve menos claro. Sin embargo, los HDL puros no son
adecuados para el desarrollo de software de aplicaciones de propósito general, al igual que los
lenguajes de programación de propósito general no son deseables para el modelado de
hardware.
Sin embargo, a medida que los sistemas electrónicos se vuelven cada vez más complejos y los
sistemas reconfigurables se vuelven cada vez más comunes, existe un deseo creciente en la
industria de contar con un lenguaje único que pueda realizar algunas tareas tanto de diseño de
hardware como de programación de software. SystemC es un ejemplo de este tipo: el
hardware del sistema integrado se puede modelar como bloques arquitectónicos no detallados
(cajas negras con entradas de señal modeladas y controladores de salida). La aplicación de
destino está escrita en C o C++ y compilada de forma nativa para el sistema de desarrollo del
host; en lugar de apuntar a la CPU integrada, que requiere una simulación de host de la CPU
integrada o una CPU emulada.
Empresas como Cadence, Synopsys y Agility Design Solutions están promocionando SystemC
como una forma de combinar lenguajes de alto nivel con modelos de simultaneidad para
permitir ciclos de diseño más rápidos para FPGA de lo que es posible con los HDL tradicionales.
Los enfoques basados en C o C++ estándar (con bibliotecas u otras extensiones que permiten la
programación paralela) se encuentran en las herramientas Catapult C de Mentor Graphics y las
herramientas Impulse C de Impulse Accelerated Technologies.
Una iniciativa similar de Intel es el uso de Data Parallel C++, relacionado con SYCL, como
lenguaje de síntesis de alto nivel.
CoreFire Design Suite de Annapolis Micro Systems, Inc. y LabVIEW FPGA de National
Instruments brindan un enfoque de flujo de datos gráfico para la entrada de diseño de alto
nivel y lenguajes como SystemVerilog, SystemVHDL y Handel-C buscan lograr lo mismo
objetivo, pero tienen como objetivo hacer que los ingenieros de hardware existentes sean más
productivos, en lugar de hacer que los FPGA sean más accesibles para los ingenieros de
software existentes.
Ejemplos de HDL
HDL para el diseño de circuitos analógicos
Nombre Descripción
Nombre Descripción
Lenguaje de Expresión HDL obsoleto hecho por Data I/O Corporation en 1983
Booleana Avanzada (ABEL)
Nombre Descripción
PHDL (PCB Un HDL de código abierto y libre para definir la conectividad del circuito
HDL) impreso