stringtranslate.com

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 comportamiento de 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 que permite el análisis y la simulación automatizados del circuito. También permite la síntesis de una descripción HDL en una lista de conexiones (una especificación de componentes electrónicos físicos y cómo están conectados 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, declaraciones y estructuras de control. Una diferencia importante entre la mayoría de los lenguajes de programación y los HDL es que los HDL incluyen explícitamente la noción de tiempo.

Los HDL forman una 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 (ver la ley de Moore ), los diseñadores de circuitos necesitaban que las descripciones de la lógica digital se realizaran a un alto nivel sin estar vinculadas a una tecnología electrónica específica, como ECL , TTL o CMOS . Los HDL se crearon para implementar la abstracción de 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 hay distintos tipos de descripción: "de flujo de datos, de comportamiento y estructural". Ejemplo de flujo de datos de VHDL:

BIBLIOTECA IEEE ; UTILIZAR IEEE.STD_LOGIC_1164. TODOS ;  ENTIDAD not1 ES PUERTO ( a : EN LÓGICA_ESTÁNDAR ; b : SALIDA LÓGICA_ESTÁNDAR ); FIN not1 ;             ARQUITECTURA conductual DE not1 ES COMIENZO 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 concurrente , 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 primario del hardware. Los lenguajes cuya única característica es expresar la conectividad de circuitos entre una jerarquía de bloques se clasifican adecuadamente como lenguajes de lista de conexiones utilizados en el diseño eléctrico asistido por computadora . HDL se puede utilizar para expresar diseños en arquitecturas estructurales, de comportamiento o de nivel de transferencia de registros para la misma funcionalidad del 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 que se cree físicamente. Es esta capacidad de ejecución lo que da a los HDL la ilusión de ser lenguajes de programación , cuando se clasifican con mayor precisión 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 destinados a cada uno de ellos.

Comparación con lenguajes de flujo de control

Ciertamente es posible representar la semántica de hardware utilizando lenguajes de programación tradicionales como C++ , que operan sobre la semántica de flujo de control en lugar del flujo de datos , aunque para funcionar como tal, los programas deben ser ampliados con bibliotecas de clases extensas y difíciles de manejar . Sin embargo, por lo general, los lenguajes de programación de software no incluyen ninguna capacidad para expresar explícitamente el tiempo y, por lo tanto, no pueden funcionar como lenguajes de descripción de hardware. Antes de la introducción de System Verilog en 2002, la integración de C++ con un simulador lógico era una de las pocas formas 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 declaraciones del lenguaje y producir una lista de conexiones equivalente de primitivas genéricas de hardware [ jerga ] para implementar el comportamiento especificado. [ cita requerida ] Los sintetizadores generalmente ignoran la expresión de cualquier construcción de temporización en el texto. Los sintetizadores lógicos digitales, por ejemplo, generalmente usan flancos de reloj como la forma de cronometrar el circuito, ignorando cualquier construcción de temporización. La capacidad de tener un subconjunto sintetizable del lenguaje no hace en sí un lenguaje de descripción de hardware.

Historia

Los primeros lenguajes de descripción de hardware aparecieron a finales de los años 1960, con un aspecto similar al de los lenguajes más tradicionales. [2] El primero que tuvo un efecto duradero fue descrito 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 hizo más común con la introducción de los módulos de nivel RT (RTM) PDP-16 de DEC y un libro que describe su uso. [5] Siguieron 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 los 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 hicieron más populares, especialmente la integración a muy gran escala (VLSI).

Un trabajo independiente realizado alrededor de 1979 en la Universidad de Kaiserslautern produjo un lenguaje llamado KARL ("KAiserslautern Register Transfer Language"), que incluía características del lenguaje de cálculo de diseño que soportaban la planificación de chips VLSI [ jerga ] 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 "A Block diagram Language" (Un lenguaje de diagrama 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 en torno a KARL y ABL. [9]

A finales de los años 70, el diseño con dispositivos lógicos programables (PLD) se hizo popular, aunque estos diseños se limitaban principalmente al diseño de máquinas de estados finitos . El trabajo de Data General en 1980 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 mapearse 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 introdujo 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 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 otra forma (como archivos esquemáticos ). La simulación HDL permitió a los ingenieros trabajar en un nivel de abstracción más alto que la simulación a nivel esquemático y, por lo tanto, aumentó la capacidad de diseño de cientos de transistores a miles. [ cita requerida ] En 1986, con el apoyo del Departamento de Defensa de los EE. UU., VHDL fue patrocinado como estándar IEEE (IEEE Std 1076), y la primera versión estandarizada IEEE de VHDL, IEEE Std 1076-1987, fue aprobada en diciembre de 1987. Cadence Design Systems luego 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 siguiente década.

La introducción de la síntesis lógica para los HDL hizo que estos pasaran de un segundo plano al primer plano del diseño digital. Las herramientas de síntesis compilaban los archivos fuente de los 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 listas de conexiones RTL sintetizadas eran casi siempre más grandes en área y más lentas en rendimiento [ cita requerida ] . Un diseño de circuito de un ingeniero experto, utilizando una captura esquemática/diseño manual que requería 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ó a la captura esquemática digital exactamente a aquellas áreas que eran problemáticas para la síntesis RTL: circuitos de velocidad extremadamente alta, bajo consumo o asincrónicos.

En 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 de su uso. Sin embargo, VHDL y Verilog comparten muchas de las mismas limitaciones, como la de no ser adecuados 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 corregir 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 versió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 de los bancos de pruebas , una mejor jerarquía de diseño y una mejor reutilización. También se está desarrollando una futura revisión de VHDL [ ¿cuándo? ] y se espera que coincida con las mejoras de SystemVerilog.

Diseño utilizando HDL

Como resultado de las mejoras de eficiencia que se han logrado con el uso del lenguaje HDL, la mayoría de los diseños de circuitos digitales modernos giran en torno a él. La mayoría de los diseños comienzan como un conjunto de requisitos o un diagrama arquitectónico de alto nivel. Las estructuras de control y decisión suelen crearse como prototipos en aplicaciones de diagramas de flujo o introducirse en un editor. El proceso de escritura de la descripción en HDL depende en gran medida de la naturaleza del circuito y de la preferencia del diseñador por el estilo de codificación. El lenguaje HDL es simplemente el "lenguaje de captura", que suele comenzar con una descripción algorítmica de alto nivel, como un modelo matemático de C++. Los diseñadores suelen utilizar lenguajes de programación como Perl para generar automáticamente estructuras de circuitos repetitivas en el lenguaje HDL. Los editores de texto especiales ofrecen funciones de sangría automática, coloración dependiente de la sintaxis y expansión basada en macros de la declaración de entidad/arquitectura/señal.

El código HDL se somete luego a una revisión o auditoría. Como preparación para la síntesis, la descripción HDL se somete a una serie de comprobadores automáticos. Los comprobadores informan de las desviaciones respecto de las pautas de código estandarizadas, identifican posibles construcciones de código ambiguas antes de que puedan causar una mala interpretación y comprueban si hay errores de codificación lógica comunes, como puertos flotantes o salidas en cortocircuito . Este proceso ayuda a resolver los errores antes de que se sintetice el código.

En el lenguaje de la industria, el diseño de HDL generalmente termina en la etapa de síntesis. Una vez que la herramienta de síntesis ha mapeado la descripción de HDL en una lista de conexiones de puertas, la lista de conexiones se pasa a la etapa de back-end. Dependiendo de la tecnología física ( FPGA , matriz de puertas ASIC , celda estándar ASIC ), las HDL pueden o no desempeñar un papel significativo en el flujo de back-end. 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 se puede almacenar en una descripción genérica de HDL. 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 esencial para el diseño en HDL. La simulación permite que una descripción HDL de un diseño (denominada modelo) supere la verificación de diseño , un hito importante que valida la función prevista del diseño (especificación) frente a la implementación del código en la descripción HDL. También permite la exploración arquitectónica. El ingeniero puede experimentar con opciones de diseño escribiendo múltiples variaciones de un diseño base y luego comparando su comportamiento en la simulación. Por lo tanto, la simulación es fundamental para el éxito del diseño HDL.

Para simular un modelo HDL, un ingeniero escribe un entorno de simulación de alto nivel (llamado banco de pruebas ). Como mínimo, un banco de pruebas contiene una instancia del modelo (llamado el dispositivo bajo prueba o DUT), declaraciones de pin/señal para la E/S del modelo y una forma de onda de reloj. El código del banco de pruebas está controlado por eventos: el ingeniero escribe declaraciones HDL para implementar la señal de reinicio (generada por el banco de pruebas), para modelar transacciones de interfaz (como una lectura/escritura de host-bus) y para monitorear la salida del DUT. Un simulador HDL (el programa que ejecuta el banco de pruebas) mantiene el reloj del simulador, que es la referencia maestra 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 el modelo) a estímulos y eventos desencadenantes. Los simuladores HDL modernos tienen interfaces gráficas de usuario con todas las funciones , completas con un conjunto de herramientas de depuración. Estos 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 monitorear o modificar cualquier elemento en la jerarquía del modelo HDL. Los simuladores modernos también pueden vincular el entorno HDL a bibliotecas compiladas por el usuario, a través de una interfaz PLI / VHPI definida. La vinculación depende del sistema ( x86 , SPARC , etc. con Windows / Linux / Solaris ), ya que el simulador HDL y las bibliotecas del usuario se compilan y vinculan fuera del entorno HDL.

La verificación del diseño es a menudo la parte que más tiempo lleva del proceso de diseño, 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 [ cita requerida ] del lenguaje HDL. La mayor parte del ciclo inicial de prueba/depuración se lleva a cabo en el entorno del simulador HDL , ya que la etapa inicial del diseño está sujeta a cambios frecuentes e importantes en los circuitos. Una descripción HDL también se puede prototipar 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 cara que la simulación HDL, pero ofrece una vista del mundo real del diseño. La creación de prototipos es la mejor manera de comprobar la interconexión con otros dispositivos de hardware y prototipos de hardware. Incluso los que se ejecutan en FPGAs lentos ofrecen tiempos de simulación mucho más cortos que la simulación HDL pura.

Verificación de diseño con HDL

Históricamente, la verificación del diseño era un ciclo laborioso y repetitivo de escritura y ejecución de casos de prueba de simulación contra el diseño en 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 en que ahora domina el cronograma de un equipo de diseño. En busca de formas de mejorar la productividad del diseño, la industria de automatización del diseño electrónico desarrolló el lenguaje de especificación de propiedades .

En términos de verificación formal , una propiedad es una declaración fáctica sobre el comportamiento esperado o supuesto de otro objeto. Idealmente, para una descripción HDL dada, una propiedad o propiedades pueden probarse como verdaderas o falsas utilizando métodos matemáticos formales. En términos prácticos, muchas propiedades no pueden probarse porque ocupan un espacio de solución ilimitado . Sin embargo, si se proporciona un conjunto de suposiciones o restricciones operativas, un verificador de propiedades puede probar (o refutar) ciertas propiedades al limitar el espacio de solución.

Las afirmaciones 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 afirmaciones especificadas, informando la ubicación y la gravedad de cualquier violación. En un entorno de síntesis, la herramienta de síntesis generalmente opera con la política de detener la síntesis ante cualquier violació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 HDL.

HDL y lenguajes de programación

Un HDL es muy similar a un lenguaje de programación de software , pero existen diferencias importantes. La mayoría de los lenguajes de programación son inherentemente procedimentales (de un solo subproceso), con un soporte sintáctico y semántico limitado para manejar la concurrencia . Los HDL, por otro lado, se parecen a los lenguajes de programación concurrente en su capacidad de modelar múltiples procesos paralelos (como flip-flops y sumadores ) que se ejecutan automáticamente de forma independiente entre sí. 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 HDL), pero con diferentes objetivos. Para los HDL, "compilar" se refiere a la síntesis lógica ; el proceso de transformar la lista de código HDL en una lista de conexiones de compuertas físicamente realizable. La salida de la lista de conexiones puede tomar cualquiera de muchas 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 una matriz de semiconductores o un formato de intercambio de diseño electrónico (EDIF) estándar de la industria genérico (para la conversión posterior a un archivo de formato JEDEC ).

Por otra parte, un compilador de software convierte el listado 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 entre sí, la frontera entre ellos se vuelve menos clara. Sin embargo, los HDL puros no son adecuados para el desarrollo de software de aplicación de propósito general , [ ¿por qué? ] 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 un solo lenguaje 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 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 se escribe en C o C++ y se compila de forma nativa para el sistema de desarrollo del host; a diferencia de apuntar a la CPU integrada, que requiere la simulación del host de la CPU integrada o una CPU emulada.

El alto nivel de abstracción de los modelos de SystemC es adecuado para la exploración temprana de la arquitectura , ya que las modificaciones arquitectónicas se pueden evaluar fácilmente sin preocuparse demasiado por los problemas de implementación a nivel de señal. Sin embargo, el modelo de subprocesamiento utilizado en SystemC se basa en la memoria compartida , lo que hace que el lenguaje no maneje bien la ejecución paralela o los modelos de bajo nivel.

Síntesis de alto nivel

En su nivel de abstracción, los HDL se han comparado con los lenguajes ensambladores . [ cita requerida ] Hay intentos de elevar el nivel de abstracción del diseño de hardware para 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 están promocionando 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 FPGAs de lo que es posible utilizando HDL tradicionales. Los enfoques basados ​​en C estándar o C++ (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 [11] de Annapolis Micro Systems, Inc. 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 orientados a 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 .

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

Ejemplos de HDL

HDL para el diseño de circuitos analógicos

HDL para el diseño de circuitos digitales

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

HDL para el diseño de placas de circuito impreso

Existen varios proyectos para definir la conectividad de las placas de circuito impreso 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 diseñados específicamente para la electrónica y adoptan un marcado declarativo para especificar lo que los circuitos deben lograr. Este cambio integra los principios de 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.ª edición). Prentice Hall. ISBN 9780136019282.
  2. ^ Barbacci, M. "Una comparación de lenguajes de transferencia de registros para describir computadoras y sistemas digitales", Carnegie-Mellon Univ., Departamento de Ciencias de la Computación, marzo de 1973
  3. ^ Bell, CG; Newell, A. (1971). Estructuras de computadoras: lecturas y ejemplos . McGraw-Hill. ISBN 0-07-004357-4.
  4. ^ Reilly, ED (2003). Hitos en la informática y la 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 . Prensa digital. LCCN  72-89566. OCLC  440245727.
  6. ^ Barbacci, MC (1976). La manipulación simbólica de descripciones de computadoras: 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 informática 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. ^ ab 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, págs. 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 de programación de FPGA basada en VHDL". Annapolis Micro Systems, Inc. Recuperado el 1 de diciembre de 2018 .
  12. ^ "Código VHDL - HDL Coder - MATLAB y Simulink". Mathworks.com. 2011-04-30 . Consultado el 2012-08-11 .
  13. ^ "Generador de procesamiento de señales digitales (DSP) - FPGAs Intel®". Intel . Consultado el 20 de septiembre de 2021 .
  14. ^ "Generador de sistemas para DSP". Xilinx.com. Archivado desde el original el 12 de julio de 2012. Consultado el 11 de agosto de 2012 .
  15. ^ Una historia de Haskell: ser perezoso con las clases §12.4.2
  16. ^ "Marco de compilación de hardware Chisel/FIRRTL".
  17. ^ COLAMO [ enlace muerto permanente ]
  18. ^ "Lenguaje de nivel superior COLAMO - НИЦ супер-ЭВМ и нейрокомпьютеров".
  19. ^ Eurich, JP; Roth, G. (1990). "EDIF crece". IEEE Spectrum . 27 (11): 68–72. doi :10.1109/6.62219. S2CID  381119.
  20. ^ Camilla dura
  21. ^ Li, Yanbing; Leeser, M. (1995). "HML: Un lenguaje de descripción de hardware innovador 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.S2CID14198160  .​
  22. ^ Lava de Chalmers
  23. ^ Lava de Xilinx
  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

Enlaces externos