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 y, más comúnmente, los circuitos lógicos digitales.
Un lenguaje de descripción de hardware permite una descripción formal y precisa de un circuito electrónico que permite el análisis y la simulación automatizados de un circuito electrónico. También permite la síntesis de una descripción HDL en una lista de redes (una especificación de los 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 que se utilizan 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 lógicas digitales se realizaran a un alto nivel sin estar atados 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 registro , un modelo del flujo de datos y la sincronización de un circuito. [1]
Hay dos lenguajes de descripción de hardware principales: VHDL y Verilog . Hay diferentes tipos de descripción en ellos: "flujo de datos, comportamental y estructural". Ejemplo de flujo de datos de VHDL:
BIBLIOTECA IEEE ; USE IEEE.STD_LOGIC_1164. TODOS ;ENTIDAD no1 ES PUERTO ( a : IN STD_LOGIC ; b : OUT STD_LOGIC ; ); END not1 ;ARQUITECTURA conductual DE Not1 ES COMENZAR b <= NO una ; END 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 HDL incluyen notaciones explícitas para expresar 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 lista de redes 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 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 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 admitir modelado de eventos discretos (digital) y de tiempo continuo (analógico), y hay disponibles HDL específicos para cada uno.
Comparación con lenguajes de flujo de control
Ciertamente, es posible representar la semántica de hardware usando lenguajes de programación tradicionales como C ++ , que operan en la semántica de flujo de control en oposición al flujo de datos , aunque para funcionar como tal, los programas deben aumentarse con bibliotecas de clases extensas y difíciles de manejar . Generalmente, sin embargo, 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.
Usando el subconjunto apropiado 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 netlist 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 tiempo en el texto. Los sintetizadores lógicos digitales, por ejemplo, generalmente usan bordes de reloj como la forma de cronometrar el circuito, ignorando cualquier construcción de sincronización. La capacidad de tener un subconjunto sintetizable del lenguaje no constituye en sí mismo 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, pareciendo 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 registro , utilizado por primera vez en el lenguaje ISP para describir el comportamiento del PDP-8 de Digital Equipment Corporation (DEC) . [4]
El lenguaje se generalizó 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 estaba bien adaptado para describir las relaciones entre las entradas y las salidas del diseño y fue rápidamente adoptado por equipos comerciales en DEC, así como por varios equipos de investigación tanto en los EE. UU. Como entre sus aliados de la OTAN .
Los productos RTM nunca despegaron comercialmente y DEC dejó de comercializarlos a mediados de la década de 1980, cuando las nuevas técnicas y, en particular , la integración a muy gran escala (VLSI) se hicieron más populares.
Un trabajo separado realizado alrededor de 1979 en la Universidad de Kaiserslautern produjo un lenguaje llamado KARL ("KAiserslautern Register Transfer Language"), que incluía características de lenguaje de cálculo de diseño que soportaban la planificación de piso de chips VLSI [ jerga ] y diseño de hardware estructurado. Este trabajo también fue la base del lenguaje gráfico interactivo de KARL, ABL, cuyo nombre era una inicial de "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 Torino, 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 fines de la década de 1970, 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 en 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 mapearlos bien. 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 VHSIC Hardware Description Language (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. [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 a 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 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 1987. Cadence Design Systems posteriormente 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 HDL empujó a los HDL del fondo 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 . La escritura de archivos RTL sintetizables requirió práctica y disciplina por parte del diseñador; en comparación con un diseño esquemático tradicional, las listas de red 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 calificado, que utiliza captura esquemática / disposición manual intensiva en mano de obra, casi siempre superaría a su equivalente sintetizado lógicamente, pero la ventaja de productividad que tiene la síntesis pronto desplazó la captura esquemática digital a exactamente 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 emergieron 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 no ser 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 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 las HDL. La última iteración de Verilog, formalmente conocida 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, jerarquía de diseño y reutilización del banco de pruebas . También se está desarrollando una revisión futura de VHDL [ ¿cuándo? ] , y se espera que coincida con las mejoras de SystemVerilog.
Diseño usando HDL
Como resultado de las ganancias de eficiencia obtenidas con HDL, la mayoría del diseño de circuitos digitales modernos gira 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 a menudo se crean prototipos en aplicaciones de diagramas de flujo o se ingresan en un editor de diagramas de estado . 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. El 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 C ++. Los diseñadores suelen utilizar lenguajes de secuencias de comandos como Perl para generar automáticamente estructuras de circuito repetitivas en el lenguaje HDL. Los editores de texto especiales ofrecen funciones para 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.
Luego, el código HDL se somete a una revisión o auditoría del código. En preparación para la síntesis, la descripción de HDL está sujeta a una serie de verificadores automatizados. Los verificadores informan desviaciones de las pautas de código estandarizado, identifican posibles construcciones de código ambiguas antes de que puedan causar una mala interpretación y verifican errores comunes de codificación lógica, como puertos flotantes o salidas en cortocircuito . Este proceso ayuda a resolver errores antes de que se sintetice el código.
En el lenguaje de la industria, el diseño HDL generalmente termina en la etapa de síntesis. Una vez que la herramienta de síntesis ha mapeado la descripción HDL en una lista de redes de puerta, la lista de redes se pasa a la etapa de back-end. Dependiendo de la tecnología física ( FPGA , ASIC matriz de puertas , ASIC de células estándar ), HDLs puede o no puede desempeñar un papel significativo en el flujo de fondo. 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 vuelve cada vez más cargada de información específica de la tecnología, que no se puede almacenar en una descripción HDL genérica. Finalmente, se fabrica o programa un circuito integrado para su uso.
Simular y depurar código HDL
Esencial para el diseño HDL es la capacidad de simular programas HDL. La simulación permite que una descripción HDL de un diseño (llamada modelo) pase la verificación del 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 tanto, la simulación es fundamental para el éxito del diseño de 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 instanciación del modelo (llamado 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 bus de host) 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 banco de pruebas HDL (como un 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 , 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 de usuario se compilan y vinculan fuera del entorno HDL.
La verificación del diseño es a menudo la parte del proceso de diseño que consume más tiempo, debido a la desconexión entre la especificación funcional de un dispositivo , la interpretación del diseñador de la especificación y la imprecisión [ cita requerida ] del lenguaje HDL. La mayor parte del ciclo inicial de prueba / depuración se realiza en el entorno del simulador HDL , ya que la etapa inicial del diseño está sujeta a cambios de circuito importantes y frecuentes. Una descripción HDL también puede ser prototipada y probada en hardware; los dispositivos lógicos programables se utilizan a menudo para este propósito. La creación de prototipos de hardware es comparativamente más cara que la simulación HDL, pero ofrece una visión del diseño del mundo real. La creación de prototipos es la mejor manera de verificar 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.
Verificación de diseño con HDL
Históricamente, la verificación del diseño era un bucle laborioso y repetitivo de escribir y ejecutar casos de prueba de simulación contra 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 en que ahora domina el programa de un equipo de diseño. Buscando 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 .
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 se pueden probar 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 reducir el espacio de la 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 infracció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 su infancia, 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 grandes diferencias. La mayoría de los lenguajes de programación son inherentemente procedimentales (de un solo subproceso), con soporte sintáctico y semántico limitado para manejar la concurrencia . Los HDL, por otro lado, se asemejan a los lenguajes de programación concurrentes en su capacidad para 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 el código HDL lista en una puerta físicamente realizable lista de conexiones . La salida de la lista de conexiones puede tomar cualquiera de muchas formas: una lista de conexiones "simulación" con la información de puerta de retardo, una lista de conexiones "handoff" de post-síntesis de colocación y de enrutamiento en un dado semiconductor, o un estándar de la industria genérico formato electrónico Diseño de intercambio (EDIF ) (para la conversión posterior a un archivo de formato JEDEC ).
Por otro lado, un compilador de software convierte el listado de código fuente en un código de 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 aplicaciones de propósito general , [ ¿por qué? ] al igual que los lenguajes de programación de propósito general no son deseables para modelar 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 creciente deseo 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 y controladores de salida modelados). La aplicación de destino está escrita en C o C ++ y compilada de forma nativa para el sistema de desarrollo de host; en lugar de apuntar a la CPU integrada, que requiere una simulación de host de la CPU integrada o una CPU emulada.
El alto nivel de abstracción de los modelos SystemC se adapta bien a la exploración temprana de la arquitectura , ya que las modificaciones arquitectónicas se pueden evaluar fácilmente con poca preocupación 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 en paralelo 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 .
Compañías 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 FPGA de lo que es posible usando 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.
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 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 .
También es posible diseñar módulos de hardware usando MATLAB y Simulink usando la herramienta MathWorks HDL Coder [12] o Xilinx System Generator (XSG) (anteriormente Accel DSP) de Xilinx . [13]
Ejemplos de HDL
HDL para diseño de circuitos analógicos
Nombre | Descripción |
---|---|
HDL-A | Un HDL analógico patentado |
SpectreHDL | Un HDL analógico patentado de Cadence Design Systems para su simulador de circuito Spectre |
Verilog-AMS (Verilog para señal analógica y mixta) | Una extensión estándar de Accellera de IEEE Std 1364 Verilog para simulación analógica y de señal mixta |
VHDL-AMS (VHDL con extensión de señal analógica / mixta) | Una extensión estándar IEEE (IEEE Std 1076.1) de VHDL para simulación analógica y de señal mixta |
HDL para diseño de circuitos digitales
Las dos variedades de HDL más utilizadas y con mejor soporte que se utilizan en la industria son Verilog y VHDL .
Nombre | Descripción |
---|---|
Lenguaje de expresión booleano avanzado (ABEL) | |
Lenguaje de descripción de hardware de Altera (AHDL) | un lenguaje propietario de Altera |
AHPL | Un lenguaje de programación de hardware |
Bluespec | HDL de alto nivel basado en Haskell (no DSL integrado ) [14] |
Sistema Bluespec Verilog (BSV) | basado en Bluespec, con sintaxis similar a Verilog HDL, por Bluespec, Inc. |
C-to-Verilog | Convertidor de C a Verilog |
Chisel (construcción de hardware en un lenguaje integrado Scala) [15] | basado en Scala ( DSL integrado ) |
Clash Clash Un lenguaje de descripción de hardware moderno y funcional | Clash es un lenguaje funcional de descripción de hardware que toma prestada tanto su sintaxis como su semántica del lenguaje de programación funcional Haskell. |
COLAMO (Lenguaje orientado común para la arquitectura de múltiples objetos) [16] | un lenguaje propietario de “Supercomputers and Neurocomputers Research Center” Co Ltd. |
Confluencia | un HDL funcional; Ha sido descontinuado |
CoWareC | un HDL basado en C de CoWare . Ahora descontinuado a favor de SystemC |
CUPL (compilador para lógica programable universal) [17] | un lenguaje propietario de Logical Devices, Inc. |
ELLA | ya no es de uso común |
ESys.net | .NET framework escrito en C # |
Handel-C | un lenguaje de diseño similar a C |
Hardcaml | basado en OCaml (DSL integrado). Pruébelo en línea . |
HHDL | basado en Haskell (DSL integrado). |
Unión de hardware a Java (HJJ) | basado en Join Java |
HML (hardware ML) | basado en el NM estándar [18] |
Hidra | basado en Haskell |
Impulso C | otro HDL tipo C |
ISPS | HDL original de CMU, ya no es de uso común |
ParC (paralelo C ++) | kusu extendido con subprocesos estilo HDL y comunicación para programación paralela de tareas |
JHDL | basado en Java |
KARL | KAiserslautern Register Language (capítulo en), [9] un lenguaje descriptivo de hardware pascal, que ya no es de uso común. |
Lava | basado en Haskell (DSL integrado). [19] [20] [21] [22] |
Lola | un lenguaje sencillo utilizado para la enseñanza |
METRO | Un HDL de Mentor Graphics |
MyHDL | basado en Python ( DSL integrado ) |
nMigen | basado en Python |
PALASMA | para dispositivos PAL ( Programmable Array Logic ) |
PyMTL | basado en Python, de la Universidad de Cornell |
PyRTL | basado en Python, de la Universidad de California, Santa Bárbara |
ROCCC (Compilador de optimización de Riverside para computación configurable) | Herramienta gratuita y de código abierto de C a HDL |
RHDL | basado en el lenguaje de programación Ruby |
Ruby (lenguaje de descripción de hardware) | |
SystemC | una clase estandarizada de bibliotecas C ++ para el modelado de comportamiento y transacciones de alto nivel de hardware digital con un alto nivel de abstracción, es decir, a nivel de sistema |
SystemVerilog | un superconjunto de Verilog, con mejoras para abordar el diseño y la verificación a nivel del sistema |
SpinalHDL | Basado en Scala (DSL integrado) |
SystemTCL | SDL basado en Tcl. |
THDL ++ (HDL con plantilla inspirada en C ++) | Una extensión de VHDL con herencia, plantillas avanzadas y clases de políticas. |
TL-Verilog ( Verilog a nivel de transacción) | Una extensión de Verilog / SystemVerilog con construcciones para pipelines y transacciones . |
Verilog | Uno de los HDL más utilizados y con mejor soporte |
VHDL ( VHSIC HDL) | Uno de los HDL más utilizados y con mejor soporte |
HDL para el diseño de placas de circuito impreso
Existen varios proyectos para definir la conectividad de la placa de circuito impreso utilizando métodos de entrada textual basados en el idioma.
Nombre | Descripción |
---|---|
PHDL (PCB HDL) | Un HDL gratuito y de código abierto para definir la conectividad de la placa de circuito impreso |
EDAsolver | Un HDL para resolver diseños esquemáticos basados en restricciones |
SKiDL | Módulo python de código abierto para diseñar circuitos electrónicos |
Ver también
- Idioma de especificación
- Lenguaje de modelado
- Idioma de verificación de hardware
- SystemC
- SystemVerilog
- Idioma de especificación de propiedad
- OpenVera
- Bluespec
- C a HDL
- Flujo a HDL
- Rosetta-lang
Referencias
- ^ Ciletti, Michael D. (2011). Diseño digital avanzado con Verilog HDL (2ª ed.). Prentice Hall. ISBN 9780136019282.
- ^ 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
- ^ Bell, CG; Newell, A. (1971). Estructuras informáticas: lecturas y ejemplos . McGraw-Hill. ISBN 0-07-004357-4.
- ^ Reilly, ED (2003). Hitos en informática y tecnología de la información . Greenwood Press. pag. 183 . ISBN 1-57356-521-0.
- ^ Bell, CG; Grason, J .; Newell, A. (1972). Diseño de Computadoras y Sistemas Digitales . Prensa digital. LCCN 72-89566 . OCLC 440245727 .
- ^ Barbacci, MC (1976). "La manipulación simbólica de descripciones informáticas: compilador y simulador de ISPL". Departamento de Ciencias de la Computación, Universidad Carnegie-Mellon. doi : 10.1184 / R1 / 6610790.v1 . Cite journal requiere
|journal=
( ayuda ) - ^ Barbacci, MC; Barnes, GE; Cattell, RGG; Siewiorek, DP (1977). "El lenguaje de descripción de la computadora ISPS". Departamento de Ciencias de la Computación, Universidad Carnegie-Mellon. doi : 10.1184 / R1 / 6610637.v1 . Cite journal requiere
|journal=
( ayuda ) - ^ Girardi, G .; Hartenstein, R. (1983). Especificación ABL (Informe). CSELT y Universidad de Kaiserslautern .
- ^ a b Hartenstein, Reiner W. (2012) [1993], "KARL and ABL" , en Mermet, J. (ed.), Fundamentals and Standards in Hardware Description Languages , Nato Science Series E, 249 , Springer, págs. 447–, ISBN 9789401119146
- ^ Barbacci, MC; Grout, S .; Lindstrom, G .; Maloney, diputado (1984). "Ada como lenguaje de descripción de hardware: un informe inicial". Departamento de Ciencias de la Computación, Universidad Carnegie-Mellon. CiteSeerX 10.1.1.938.8003 . doi : 10.1184 / R1 / 6602984.v1 . Cite journal requiere
|journal=
( ayuda ) - ^ "Herramienta de software de aplicación de programación FPGA basada en VHDL" . Annapolis Micro Systems, Inc . Consultado el 1 de diciembre de 2018 .
- ^ "Código VHDL - Codificador HDL - MATLAB & Simulink" . Mathworks.com. 2011-04-30 . Consultado el 11 de agosto de 2012 .
- ^ "Generador de sistema para DSP" . Xilinx.com. Archivado desde el original el 12 de julio de 2012 . Consultado el 11 de agosto de 2012 .
- ^ Una historia de Haskell: ser vago con la clase §12.4.2
- ^ "Marco del compilador de hardware Chisel / FIRRTL" .
- ^ "Idioma de nivel superior COLAMO | НИЦ супер-ЭВМ и нейрокомпьютеров" .
- ^ Eurich, JP; Roth, G. (1990). "EDIF crece". Espectro IEEE . 27 (11): 68–72. doi : 10.1109 / 6.62219 .
- ^ Yanbing Li; 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.
- ^ Lava de Chalmers
- ^ Lava de Xilinx
- ^ Kansas Lava
- ^ York Lava
enlaces externos
- Subcomité técnico de Verilog-AMS
- HCT : la herramienta HDL Complexity, utilizada para determinar la complejidad del diseño.