Lenguaje de descripción del 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 los circuitos electrónicos y, más comúnmente, la lógica digital. circuitos
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 conexiones (una especificación de 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 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 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.
Comparación con lenguajes de flujo de control
Ciertamente, es posible representar la semántica del hardware usando lenguajes de programación tradicionales como C++, que operan en la semántica del flujo de control en lugar del flujo de datos, aunque para funcionar como tales, los programas deben complementarse 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 elementos no utilizados.
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 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 tiempo en el texto. Los sintetizadores lógicos digitales, por ejemplo, generalmente usan los bordes del reloj como la forma de cronometrar el circuito, ignorando cualquier construcción de cronometraje. La capacidad de tener un subconjunto sintetizable del lenguaje no hace en sí mismo un lenguaje de descripción de hardware.
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.
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 funciones de lenguaje de cálculo de diseño compatibles con la planificación de plantas 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 diagrama de bloques". 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 de 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.
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.
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 escribir 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 circuitos repetitivos en el lenguaje HDL. Los editores de texto especiales ofrecen características 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.
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.
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 puerta, la lista de redes pasa a la etapa de back-end. Dependiendo de la tecnología física (FPGA, matriz de compuertas ASIC, celda estándar ASIC), los HDL pueden desempeñar o no un papel importante 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 cada vez más con 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.
Simulación y depuración de 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 (llamado modelo) pase la verificación del diseño, un hito importante que valida la función (especificación) prevista del diseño 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 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 pines/señales para las E/S del modelo y una forma de onda de reloj. El código del banco de pruebas está dirigido por eventos: el ingeniero escribe instrucciones HDL para implementar la señal de restablecimiento (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 reinicio-alternancia 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 (independientes 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 con 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 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.
Verificación de diseño con HDLs
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 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 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.
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 demostrarse 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 reducir el espacio de solución.
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.
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 (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 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.
El alto nivel de abstracción de los modelos SystemC se adapta bien a la exploración de arquitectura temprana, ya que las modificaciones arquitectónicas se pueden evaluar fácilmente sin preocuparse 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. 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 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.
También es posible diseñar módulos de hardware usando MATLAB y Simulink usando la herramienta MathWorks HDL Coder o DSP Builder para Intel FPGA o Xilinx System Generator (XSG) de Xilinx.
Ejemplos de HDL
HDL para el 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 de Spectre |
Verilog-AMS (Verilog for Analog and Mixed-Signal) | Una extensión estándar de Accellera de IEEE Std 1364 Verilog para simulación analógica y de signos mixtos |
VHDL-AMS (VHDL con extensión Analog/Mixed-Signal) | Una extensión estándar IEEE (IEEE Std 1076.1) de VHDL para simulación analógica y de signos mixtos |
HDL para el diseño de circuitos digitales
Las dos variedades de HDL más utilizadas y mejor admitidas en la industria son Verilog y VHDL.
Nombre | Descripción |
---|---|
Lenguaje de Expresión Booleana Avanzada (ABEL) | HDL obsoleto hecho por Data I/O Corporation en 1983 |
Altera Hardware Descripción Idioma (AHDL) | un idioma propietario de Altera |
AHPL | Un lenguaje de programación de hardware |
Amaranth | basado en Python |
Bluespec | HDL de alto nivel basado en Haskell (no integrado DSL) |
Sistema BluespecVerilog (BSV) | basado en Bluespec, con Verilog HDL como sintaxis, por Bluespec, Inc. |
C-to-Verilog | Conversor de C a Verilog |
Chisel (Constructing Hardware in a Scala Embedded Language) | basado en Scala (DSL subido) |
Choque de choque Un lenguaje moderno, funcional, de descripción de hardware | El choque es un lenguaje funcional de descripción de hardware que presta tanto su sintaxis como semántica del lenguaje de programación funcional Haskell |
COLAMO (Angulo común orientado para la arquitectura de múltiples objetos) | a idioma propietario de “Supercomputers and Neurocomputers Research Center” Co Ltd. |
Confluencia | un HDL funcional; ha sido suspendido |
CoWareC | un HDL basado en C por CoWare. Ahora descontinuado a favor de SystemC |
CUPL (Compilador para Lógica Programable Universal) | a idioma propietario de los dispositivos lógicos, Inc. |
ELLA | ya no en uso común |
ESys.net | . Marco NET escrito en C# |
Handel-C | un lenguaje de diseño similar a C |
Hardcaml | basado en OCaml (DSL removido). Pruébalo en línea. |
HHDL | basado en Haskell (DSL removido). |
Hardware Únase a Java (HJJ) | basado en Join Java |
HML (Hardware ML) | basado en el estándar ML |
Hydra | basado en Haskell |
Impulso C | otro C-como HDL |
ISPS | HDL original de CMU, ya no en uso común |
ParC (Parallel C++) | kusu extendido con hilos de estilo HDL y comunicación para la programación del paralelo de tareas |
JHDL | basado en Java |
KARL | KAiserslautern Regístrate Idioma (capítulo en), un lenguaje descriptivo de hardware Pascalish, ya no en uso común. |
Lava | basado en Haskell (DSL removido). |
Lola | un lenguaje simple utilizado para la enseñanza |
M | Un HDL de Mentor Graphics |
MyHDL | basado en Python (DSL removido) |
PALASM | para dispositivos Array Logic (PAL) programables |
PipelineC | Un lenguaje de descripción de hardware similar a C añadiendo una tubería automática de alta síntesis como una función de construcción/compilador de lenguaje. |
PyMTL | basado en Python, de la Universidad Cornell |
PyRTL | basado en Python, de la Universidad de California, Santa Barbara |
ROCCC (Riverside Optimizing Compiler for Configurable Computing) | Fuente libre C a la herramienta HDL |
RHDL | basado en el lenguaje de programación Ruby |
ROHD (Rapid Open Hardware Development framework) | un marco para el diseño y verificación de hardware, escrito en Dart |
Ruby (idioma de descripción de hardware) | |
SystemC | una clase estandarizada de bibliotecas C++ para el modelado de alto nivel de comportamiento y transacción de hardware digital a un alto nivel de abstracción, es decir, a nivel de sistema |
SystemVerilog | a superset of Verilog, with enhancements to address system-level design and verification |
SpinalHDL | Based on Scala (embedded DSL) |
SystemTCL | SDL basado en Tcl. |
THDL++ (Templated HDL inspirado en C++) | Ampliación de VHDL con herencia, plantillas avanzadas y clases de política |
Verik | Kotlin reinterpretó con la semántica de un HDL. Se transpila a SystemVerilog. |
TL-Verilog (Transaction-Level Verilog) | Ampliación de Verilog/SystemVerilog con construcciones para tuberías y transacciones. |
Verilog | Una de las HDL más utilizadas y bien apoyadas |
VHDL (VHSIC HDL) | Una de las HDL más utilizadas y bien apoyadas |
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 de texto basados en el lenguaje.
Nombre | Descripción |
---|---|
PHDL (PCB HDL) | Un HDL de código abierto y libre para definir la conectividad del circuito impreso |
EDAsolver | Un HDL para resolver diseños esquemáticos basados en limitaciones |
SKiDL | Módulo de python de código abierto para diseñar circuitos electrónicos |
Contenido relacionado
Computación ubicua
Separador decimal
Dispositivo semiconductor