Articulo de referencia

lenguaje de descripción de hardware

En ingeniería informática , un lenguaje de descripción de hardware ( HDL ) es un lenguaje informático especializado que se utiliza para describir la estructura y el comportamien...

En ingeniería informática , un lenguaje de descripción de hardware ( HDL ) es un lenguaje informático especializado que se utiliza para describir la estructura y el comportamiento de los circuitos electrónicos , generalmente para diseñar circuitos integrados de aplicación específica (ASIC) y para programar matrices de puertas programables en campo (FPGA).

Un lenguaje de descripción de hardware permite una descripción precisa y formal de un circuito electrónico, lo que posibilita el análisis y la simulación automatizados del mismo. También permite sintetizar una descripción HDL en una lista de conexiones (una especificación de los componentes electrónicos físicos y cómo se conectan entre sí), que luego se puede colocar y enrutar para producir el conjunto de máscaras utilizadas para crear un circuito integrado .

Un lenguaje de descripción de hardware se parece mucho a un lenguaje de programación como C o ALGOL ; es una descripción textual que consta de expresiones, sentencias y estructuras de control. Una diferencia importante entre la mayoría de los lenguajes de programación y los lenguajes de descripción de hardware es que estos últimos incluyen explícitamente la noción de tiempo.

Los lenguajes de descripción de hardware (HDL) forman parte integral de los sistemas de automatización del diseño electrónico (EDA), especialmente para circuitos complejos, como circuitos integrados de aplicación específica , 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 (véase la ley de Moore ), los diseñadores de circuitos necesitaban descripciones de lógica digital que se realizaran a un alto nivel sin estar vinculadas a una tecnología electrónica específica, como la lógica acoplada por emisor (ECL), la lógica transistor-transistor (TTL) o el semiconductor complementario de óxido metálico ( CMOS ). Se crearon lenguajes de descripción de hardware (HDL) para implementar la abstracción a nivel de transferencia de registros , un modelo del flujo de datos y la temporización de un circuito. [ 1 ]

Existen dos lenguajes principales de descripción de hardware: VHDL y Verilog . En ellos, se dan tres tipos diferentes de descripción: de flujo de datos , de comportamiento y estructural . Ejemplo de flujo de datos en VHDL:

BIBLIOTECA IEEE ; USAR IEEE.STD_LOGIC_1164. TODO ;ENTIDAD not1 ES PUERTO ( a : ENTRADA STD_LOGIC ; b : SALIDA STD_LOGIC ); FIN not1 ;ARQUITECTURA conductual DE not1 ES COMIENZO b <= NOT a ; FIN conductual ;

Estructura de HDL

Los lenguajes de descripción de hardware (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 concurrente , la sintaxis y la semántica de los 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 primario del hardware. Los lenguajes cuya única característica es expresar la conectividad de circuitos entre una jerarquía de bloques se clasifican propiamente como lenguajes de lista de conexiones (netlist) utilizados en el diseño electrónico asistido por computadora (ECA) . Los HDL se pueden usar para expresar diseños en arquitecturas estructurales, de comportamiento o de transferencia de registros para la misma funcionalidad de circuito; en los dos últimos casos, el sintetizador decide la arquitectura y la disposición de las puertas lógicas .

Los lenguajes de descripción de hardware (HDL) se utilizan para escribir especificaciones ejecutables para hardware. Un programa diseñado para implementar la semántica subyacente de las instrucciones del lenguaje y simular el transcurso del tiempo proporciona al diseñador de hardware la capacidad de modelar un componente antes de su fabricación física. Es esta ejecutabilidad la que da a los HDL la apariencia de ser lenguajes de programación , cuando en realidad se clasifican más precisamente como lenguajes de especificación o lenguajes de modelado . Existen simuladores capaces de soportar el modelado de eventos discretos (digital) y de tiempo continuo (analógico), y hay HDL disponibles para cada uno.

Comparación con lenguajes de control de flujo

Ciertamente es posible representar la semántica del hardware utilizando lenguajes de programación tradicionales como C++ , que operan con semántica de flujo de control en contraste con el flujo de datos , aunque para funcionar como tal, los programas deben complementarse con extensas y complejas bibliotecas de clases . Sin embargo, en general, los lenguajes de programación de software no incluyen la capacidad de expresar el tiempo explícitamente y, por lo tanto, no pueden funcionar como lenguajes de descripción de hardware. Antes del debut de System Verilog en 2002, la integración de C++ con un simulador lógico era una de las pocas maneras de utilizar la programación orientada a objetos en la verificación de hardware. System Verilog es el primer HDL importante que ofrece orientación a objetos y recolección de basura.

Utilizando el subconjunto adecuado del lenguaje de descripción de hardware, un programa llamado sintetizador, o herramienta de síntesis lógica , puede inferir operaciones lógicas de hardware a partir de las instrucciones del lenguaje y generar una lista de conexiones equivalente de primitivas de hardware genéricas para implementar el comportamiento especificado. Los sintetizadores generalmente ignoran la expresión de cualquier construcción de temporización en el texto. Los sintetizadores de lógica digital, por ejemplo, suelen usar flancos de reloj para temporizar el circuito, ignorando cualquier construcción de temporización. La capacidad de tener un subconjunto sintetizable del lenguaje no lo convierte automáticamente en un lenguaje de descripción de hardware.

Historia

Los primeros lenguajes de descripción de hardware aparecieron a finales de la década de 1960, con una apariencia similar a la de lenguajes más tradicionales. [ 2 ] El primero que tuvo un efecto duradero se describió en 1971 en el texto Computer Structures de C. Gordon Bell y Allen Newell . [ 3 ] Este texto introdujo el concepto de nivel de transferencia de registros , utilizado por primera vez en el lenguaje ISP para describir el comportamiento del PDP-8 de Digital Equipment Corporation (DEC) . [ 4 ]

El lenguaje se popularizó con la introducción de los módulos de nivel RT (RTM) del PDP-16 de DEC y un libro que describía su uso. [ 5 ] Posteriormente surgieron al menos dos implementaciones del lenguaje ISP básico (ISPL e ISPS). [ 6 ] [ 7 ] ISPS era muy adecuado para describir las relaciones entre las entradas y las salidas del diseño y fue rápidamente adoptado por equipos comerciales de DEC y por varios equipos de investigación en los EE. UU. y entre sus aliados en la Organización del Tratado del Atlántico Norte ( OTAN ).

Los productos RTM nunca tuvieron éxito comercial y DEC dejó de comercializarlos a mediados de la década de 1980, a medida que nuevos métodos se volvían más populares, sobre todo la integración a muy gran escala (VLSI).

Un trabajo independiente realizado alrededor de 1979 en la Universidad de Kaiserslautern produjo un lenguaje llamado KAiserslautern Register Transfer Language (KARL), que incluía características de lenguaje de cálculo de diseño que admitían la planificación de la distribución de chips VLSI y el diseño de hardware estructurado. Este trabajo también fue la base del lenguaje gráfico interactivo hermano de KARL, ABL, cuyo nombre era una sigla de "un lenguaje de diagramas de bloques". [ 8 ] ABL fue implementado a principios de la década de 1980 por el Centro Studi e Laboratori Telecomunicazioni ( CSELT ) en Turín, Italia, produciendo el editor de diseño gráfico VLSI ABLED. A mediados de la década de 1980, un consorcio internacional financiado por la Comisión de la Unión Europea implementó un marco de diseño VLSI basado en KARL y ABL. [ 9 ]

A finales de la década de 1970, el diseño con dispositivos lógicos programables (PLD) se popularizó, aunque estos diseños se limitaban principalmente al diseño de máquinas de estados finitos . En 1980 , Data General utilizó estos mismos dispositivos para diseñar el Data General Eclipse MV/8000 , y comenzó a crecer la necesidad comercial de un lenguaje que pudiera integrarse bien con ellos. En 1983, Data I/O presentó ABEL para satisfacer esa necesidad.

En 1985, cuando el diseño pasó a VLSI, Gateway Design Automation introdujo Verilog , e Intermetrics lanzó la primera versión completa del lenguaje de descripción de hardware VHSIC ( VHDL ). VHDL se desarrolló a petición del Programa de Circuitos Integrados de Muy Alta Velocidad (VHSIC) del Departamento de Defensa de los Estados Unidos , y se basó en el lenguaje de programación Ada y en la experiencia adquirida con el desarrollo anterior de ISPS. [ 10 ] Inicialmente, Verilog y VHDL se utilizaron para documentar y simular diseños de circuitos ya capturados y descritos en otro formato (como archivos esquemáticos ). La simulación HDL permitió a los diseñadores trabajar en un nivel de abstracción superior al de 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 los Estados Unidos, VHDL fue patrocinado como estándar IEEE (IEEE Std 1076), y la primera versión estandarizada de VHDL por el IEEE, IEEE Std 1076-1987, fue aprobada en diciembre de 1987. Posteriormente, Cadence Design 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 década siguiente.

La introducción de la síntesis lógica para lenguajes de descripción de hardware (HDL) los catapultó del segundo plano al primer plano del diseño digital. Las herramientas de síntesis compilaban archivos de código fuente HDL (escritos en un formato restringido llamado RTL) en una descripción de lista de conexiones fabricable en términos de puertas lógicas 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 listas de conexiones RTL sintetizadas eran casi siempre más grandes y de menor rendimiento. Un diseño de circuito de un diseñador experto, utilizando la captura de esquemas y el diseño manual, que requerían mucho trabajo, casi siempre superaba a su equivalente sintetizado lógicamente, pero la ventaja de productividad que ofrecía la síntesis pronto desplazó la captura de esquemas digitales precisamente a aquellas áreas que resultaban problemáticas para la síntesis RTL: circuitos de altísima velocidad, bajo consumo o asíncronos.

En pocos años, VHDL y Verilog se consolidaron como los lenguajes de descripción de hardware (HDL) dominantes en la industria electrónica, mientras que los HDL más antiguos y menos capaces fueron desapareciendo gradualmente. Sin embargo, VHDL y Verilog comparten muchas limitaciones, como su inadecuación para la simulación de circuitos analógicos o de señal mixta . Se introdujeron HDL especializados (como Confluence) con el objetivo explícito de solucionar las limitaciones específicas de Verilog y VHDL, aunque ninguno pretendía reemplazarlos.

A lo largo de los años, se ha invertido mucho esfuerzo en mejorar los lenguajes de descripción de hardware (HDL). La última versión de Verilog, denominada formalmente IEEE 1800-2005 SystemVerilog, introduce numerosas características nuevas (clases, variables aleatorias y propiedades/aserciones) para satisfacer la creciente necesidad de una mejor aleatorización de los bancos de pruebas , jerarquía de diseño y reutilización. También se está desarrollando una futura revisión de VHDL , que se espera que incorpore las mejoras de SystemVerilog.

Diseño mediante HDL

Como resultado de las mejoras de eficiencia logradas con HDL, la mayor parte del diseño de circuitos digitales modernos se basa en él. La mayoría de los diseños comienzan con un conjunto de requisitos o un diagrama arquitectónico de alto nivel. Las estructuras de control y decisión suelen prototiparse en diagramas de flujo o introducirse en un editor. El proceso de redacción de la descripción HDL depende en gran medida de la naturaleza del circuito y de la preferencia del diseñador por el estilo de codificación. HDL es simplemente el "lenguaje de captura", que a menudo comienza con una descripción algorítmica de alto nivel, como un modelo matemático en C++. Los diseñadores suelen utilizar lenguajes de scripting como Perl para generar automáticamente estructuras de circuitos repetitivas en HDL. Los editores de texto especializados ofrecen funciones para la indentación automática, el resaltado de sintaxis y la expansión basada en macros de la declaración de entidades, arquitecturas y señales.

El código HDL se somete a una revisión o auditoría. Para su preparación para la síntesis, la descripción HDL se somete a una serie de verificadores automatizados. Estos verificadores informan sobre desviaciones de las directrices de codificación estandarizadas, identifican posibles construcciones de código ambiguas antes de que puedan causar interpretaciones erróneas y comprueban errores lógicos comunes, como puertos flotantes o salidas en cortocircuito . Este proceso ayuda a resolver errores antes de la síntesis del código.

En la jerga de la industria, el diseño HDL generalmente finaliza en la etapa de síntesis. Una vez que la herramienta de síntesis ha mapeado la descripción HDL en una lista de conexiones de compuertas, esta se transfiere a la etapa de procesamiento posterior. Dependiendo de la tecnología física ( FPGA , matriz de compuertas ASIC , celda estándar ASIC ), los lenguajes HDL pueden o no desempeñar un papel significativo en el flujo de procesamiento posterior. En general, a medida que el flujo de diseño avanza hacia una forma físicamente realizable, la base de datos de diseño se carga progresivamente con información específica de la tecnología, que no puede almacenarse en una descripción HDL genérica. Finalmente, se fabrica o programa un circuito integrado para su uso.

Simulación y depuración de código HDL

La capacidad de simular programas HDL es fundamental para el diseño. La simulación permite que una descripción HDL de un diseño (denominada modelo) supere la verificación del diseño , un hito importante que valida la función prevista del diseño (especificación) comparándola con la implementación del código en la descripción HDL. También permite la exploración arquitectónica. Un diseñador puede experimentar con diferentes opciones de diseño escribiendo múltiples variaciones de un diseño base y comparando su comportamiento en la simulación. Por lo tanto, la simulación es crucial para el éxito del diseño HDL.

Para simular un modelo HDL, un diseñador escribe un entorno de simulación de alto nivel (denominado banco de pruebas ). Como mínimo, un banco de pruebas contiene una instancia del modelo (denominado dispositivo bajo prueba o DUT), declaraciones de pines/señales para la entrada/salida (E/S) del modelo y una forma de onda de reloj. El código del banco de pruebas se basa en eventos: un diseñador escribe instrucciones HDL para implementar la señal de reinicio (generada por el banco de pruebas), modelar transacciones de interfaz (como lectura/escritura en el bus del host) y monitorizar la salida del DUT. Un simulador HDL —el programa que ejecuta el banco de pruebas— mantiene el reloj del simulador, que es la referencia principal para todos los eventos en la simulación del banco de pruebas. Los eventos ocurren solo en los instantes dictados por el HDL del banco de pruebas (como un interruptor de reinicio codificado en el banco de pruebas) o en reacción (por parte del modelo) a estímulos y eventos desencadenantes. Los simuladores HDL modernos cuentan con interfaces gráficas de usuario completas , con un conjunto de herramientas de depuración. Estas funciones permiten al usuario detener y reiniciar la simulación en cualquier momento, insertar puntos de interrupción del simulador (independientemente del código HDL) y supervisar o modificar cualquier elemento de la jerarquía del modelo HDL. Los simuladores modernos también pueden vincular el entorno HDL con bibliotecas compiladas por el usuario mediante una interfaz PLI / VHPI definida . La vinculación depende del sistema ( x86 , SPARC, etc., con Windows , Linux o Solaris ), ya que el simulador HDL y las bibliotecas de usuario se compilan y vinculan fuera del entorno HDL.

La verificación del diseño suele ser la parte más laboriosa del proceso, debido a la discrepancia entre la especificación funcional del dispositivo , la interpretación que el diseñador hace de dicha especificación y la imprecisión del lenguaje HDL. La mayor parte del ciclo inicial de prueba y depuración se lleva a cabo en el entorno del simulador HDL , dado que la fase inicial del diseño está sujeta a cambios frecuentes e importantes en el circuito. Una descripción HDL también puede prototiparse y probarse en hardware; para ello, se suelen utilizar dispositivos lógicos programables . El prototipado en hardware es comparativamente más caro que la simulación HDL, pero ofrece una visión realista del diseño. El prototipado es la mejor manera de comprobar la interconexión con otros dispositivos y prototipos de hardware. Incluso aquellos que se ejecutan en FPGA lentas ofrecen tiempos de simulación mucho más cortos que la simulación HDL pura.

Verificación de diseño con lenguajes de descripción de hardware (HDL)

Históricamente, la verificación del diseño era un proceso laborioso y repetitivo que consistía en escribir y ejecutar casos de prueba de simulación sobre el diseño bajo prueba. A medida que los diseños de chips se han vuelto más grandes y complejos, la tarea de verificación del diseño ha crecido hasta el punto de dominar el cronograma de un equipo de diseño. En busca de formas de mejorar la productividad del diseño, la industria de la automatización del diseño electrónico desarrolló el lenguaje de especificación de propiedades (PEL) .

En términos de verificación formal , una propiedad es una afirmación objetiva sobre el comportamiento esperado o supuesto de otro objeto. Idealmente, para una descripción HDL dada, una o varias propiedades pueden demostrarse como verdaderas o falsas mediante métodos matemáticos formales. En la práctica, muchas propiedades no pueden demostrarse porque ocupan un espacio de soluciones ilimitado . Sin embargo, si se proporciona un conjunto de supuestos o restricciones operativas, un verificador de propiedades puede demostrar (o refutar) ciertas propiedades reduciendo el espacio de soluciones.

Las aserciones no modelan la actividad del circuito, sino que 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 aserciones especificadas e informa sobre la ubicación y la gravedad de cualquier infracción. En un entorno de síntesis, la herramienta de síntesis suele detener la síntesis ante cualquier infracción. La verificación basada en aserciones aún está en sus inicios, pero se espera que se convierta en una parte integral del conjunto de herramientas de diseño HDL.

Lenguajes de programación y lenguajes de programación HDL

Un HDL es muy similar a un lenguaje de programación , pero existen diferencias importantes. La mayoría de los lenguajes de programación son inherentemente procedimentales (de un solo hilo), con soporte sintáctico y semántico limitado para manejar la concurrencia . Los HDL, en cambio, se asemejan a los lenguajes de programación concurrente por su capacidad para modelar múltiples procesos paralelos (como biestables y sumadores ) que se ejecutan automáticamente de forma independiente. Cualquier cambio en la entrada del proceso activa automáticamente una actualización en la pila de procesos del simulador.

Tanto los lenguajes de programación como los HDL son procesados ​​por un compilador (a menudo llamado sintetizador en el caso de los HDL), pero con objetivos diferentes. Para los HDL, "compilar" se refiere a la síntesis lógica ; el proceso de transformar el listado de código HDL en una lista de conexiones de compuertas físicamente realizable . La lista de conexiones resultante puede adoptar diversas formas: una lista de conexiones de "simulación" con información de retardo de compuerta, una lista de conexiones de "transferencia" para la colocación y el enrutamiento posteriores a la síntesis en un chip semiconductor, o un formato genérico estándar de la industria, el formato EDIF ( Electronic Design Interchange Format ) (para su posterior conversión a un archivo en formato JEDEC ).

Por otro lado, un compilador de software convierte el código fuente en un código objeto específico del microprocesador para su ejecución en dicho microprocesador. A medida que los lenguajes de descripción de hardware (HDL) y los lenguajes de programación adoptan conceptos y características mutuas, la frontera entre ellos se difumina. Sin embargo, los HDL puros no son adecuados para el desarrollo de software de aplicaciones de propósito general , del mismo modo que los lenguajes de programación de propósito general no son recomendables para el modelado de hardware.

A medida que los sistemas electrónicos se vuelven más complejos y los sistemas reconfigurables más comunes, crece el interés en la industria por 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 ello: el hardware del sistema embebido 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 se escribe en C o C++ y se compila de forma nativa para el sistema anfitrión de desarrollo; a diferencia de la programación dirigida a la CPU embebida, que requiere la simulación de la CPU embebida en el sistema anfitrión o una CPU emulada.

El alto nivel de abstracción de los modelos de SystemC resulta idóneo para la exploración temprana de la arquitectura , ya que las modificaciones arquitectónicas pueden evaluarse fácilmente sin preocuparse demasiado por los problemas de implementación a nivel de señal. Sin embargo, el modelo de subprocesos utilizado en SystemC se basa en memoria compartida , lo que provoca que el lenguaje no gestione bien la ejecución paralela ni los modelos de bajo nivel.

Síntesis de alto nivel

En cuanto a su nivel de abstracción, los lenguajes de descripción de hardware (HDL) se han comparado con los lenguajes ensamblador . Se están realizando esfuerzos para elevar el nivel de abstracción del diseño de hardware con el fin de reducir la complejidad de la programación en HDL, creando un subcampo llamado síntesis de alto nivel .

Empresas como Cadence , Synopsys y Agility Design Solutions promueven SystemC como una forma de combinar lenguajes de alto nivel con modelos de concurrencia para permitir ciclos de diseño más rápidos para matrices de puertas programables en campo (FPGA) que los que se pueden lograr con los lenguajes de descripción de hardware (HDL) tradicionales. Existen enfoques basados ​​en C o C++ estándar (con bibliotecas u otras extensiones que permiten la programación paralela) en las herramientas Catapult C de Mentor Graphics y en 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.

La suite de diseño CoreFire de Annapolis Micro Systems , Inc. [ 11 ] y LabVIEW FPGA de National Instruments proporcionan 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 el mismo objetivo, pero están dirigidos a hacer que los ingenieros de hardware existentes sean más productivos, en lugar de hacer que las FPGA sean más accesibles para los ingenieros de software existentes .

También es posible diseñar módulos de hardware usando MATLAB y Simulink usando la herramienta MathWorks HDL Coder [ 12 ] o DSP Builder para FPGAs de Intel [ 13 ] o Xilinx System Generator (XSG) de Xilinx . [ 14 ]

Ejemplos de lenguajes de descripción de hardware (HDL)

Lenguajes de descripción de hardware (HDL) para el diseño de circuitos analógicos

Lenguajes de descripción de hardware (HDL) para el diseño de circuitos digitales

Las dos variedades de HDL más utilizadas y con mayor soporte en la industria son Verilog y VHDL .

Lenguajes de descripción de hardware (HDL) para el diseño de placas de circuitos impresos

Existen varios proyectos para definir la conectividad de las placas de circuitos impresos mediante métodos de entrada de texto basados ​​en lenguaje. Entre ellos, han surgido nuevos enfoques que se centran en mejorar la legibilidad, la reutilización y la validación. Estas metodologías modernas emplean lenguajes de diseño de código abierto específicamente adaptados a la electrónica, adoptando un marcado declarativo para especificar las funcionalidades que deben lograr los circuitos. Este cambio integra los principios del desarrollo de software en el diseño de hardware , agilizando el proceso y haciendo hincapié en la automatización, la reutilización y la validación.

Véase también

Referencias

  1. Ciletti, Michael D. (2011). Diseño digital avanzado con Verilog HDL (2.ª  ed.). Prentice Hall. ISBN 9780136019282.
  2. Barbacci, M. "Una comparación de lenguajes de transferencia de registros para describir computadoras y sistemas digitales", Universidad Carnegie-Mellon, Departamento de Ciencias de la Computación, marzo de 1973
  3. Bell, CG; Newell, A. (1971). Estructuras informáticas: lecturas y ejemplos . McGraw-Hill. ISBN 0-07-004357-4.
  4. Reilly, ED (2003). Hitos en informática y tecnología de la información . Greenwood Press. pág . 183. ISBN  1-57356-521-0.
  5. Bell, CG; Grason, J.; Newell, A. (1972). Diseño de computadoras y sistemas digitales . Digital Press. LCCN 72-89566 . OCLC 440245727 .  
  6. Barbacci, MC (1976). La manipulación simbólica de descripciones informáticas: compilador y simulador ISPL (Informe). Departamento de Ciencias de la Computación, Universidad Carnegie-Mellon. doi : 10.1184/R1/6610790.v1 .
  7. Barbacci, MC; Barnes, GE; Cattell, RGG; Siewiorek, DP (1977). El lenguaje de descripción de computadoras ISPS (Informe). Departamento de Ciencias de la Computación, Universidad Carnegie-Mellon. doi : 10.1184/R1/6610637.v1 .
  8. Girardi, G.; Hartenstein, R. (1983). Especificación ABL (Informe). CSELT y Universidad de Kaiserslautern .
  9. 1 2 Hartenstein, Reiner W. (2012) [1993], "KARL y ABL" , en Mermet, J. (ed.), Fundamentos y estándares en lenguajes de descripción de hardware , NATO Science Series E, vol. 249, Springer, pp. 447–, ISBN   9789401119146
  10. Barbacci, MC; Grout, S.; Lindstrom, G.; Maloney, MP (1984). Ada como lenguaje de descripción de hardware : un informe inicial (Informe). Departamento de Ciencias de la Computación, Universidad Carnegie-Mellon. CiteSeerX 10.1.1.938.8003 . doi : 10.1184/R1/6602984.v1 .  
  11. "Herramienta de software de aplicación para programación de FPGA basada en VHDL" . Annapolis Micro Systems, Inc. Consultado el 1 de diciembre de 2018 .
  12. "Código VHDL - HDL Coder - MATLAB y Simulink" . Mathworks.com. 30 de abril de 2011. Archivado del original el 7 de julio de 2012. Consultado el 11 de agosto de 2012 .
  13. "Procesamiento de señales digitales (DSP) Builder - Intel® FPGAs" . Intel . Consultado el 20 de septiembre de 2021 .
  14. "Generador de sistemas para DSP" . Xilinx.com. Archivado del original el 12 de julio de 2012. Consultado el 11 de agosto de 2012 .
  15. Historia de Haskell: ser perezoso con las clases §12.4.2
  16. "Marco de compilación de hardware Chisel/FIRRTL" .
  17. COLAMO
  18. «Lenguaje de nivel superior COLAMO – НИЦ супер-ЭВМ и нейрокомпьютеров» .
  19. Eurich, JP; Roth, G. (1990). "EDIF crece". IEEE Spectrum . 27 (11): 68– 72. Bibcode : 1990IEEES..27k..68E . doi : 10.1109/6.62219 . S2CID 381119 . 
  20. Hardcaml
  21. Li, Yanbing; Leeser, M. (1995). "HML: Un lenguaje innovador de descripción de hardware y su traducción a VHDL". Actas de ASP-DAC'95/CHDL'95/VLSI'95 con EDA Technofair . págs. 691–696 . doi : 10.1109/ASPDAC.1995.486388 . ISBN  4-930813-67-0. S2CID 14198160 . 
  22. Lava de Chalmers
  23. Xilinx Lava
  24. Lava de Kansas
  25. Lava de York
  26. "Marco de desarrollo rápido de hardware abierto (ROHD)" . GitHub . 17 de noviembre de 2021.
  27. TL-Verilog
  • HCT – Herramienta de complejidad HDL, utilizada para determinar la complejidad del diseño.