Em eletrônica, uma linguagem de descrição de hardware ou LDH é qualquer linguagem de uma classe de linguagens de computador, linguagem de especificação ou linguagem de modelagem para uma descrição formal e design de circuitos eletrônicos, e mais comumente, a lógica digital. Pode descrever o funcionamento do circuito, a sua concepção e organização, e ainda testá-lo para verificar seu funcionamento por meio de simulação.

LDHs são padrões de expressões baseados em texto, da estrutura espacial, temporal e comportamental dos sistemas eletrônicos. Como outras linguagens de programação, LDHs incluem anotações explícitas para expressar a simultaneidade bem como sintaxe e semântica próprias. No entanto, em contraste com a maioria dos softwares de linguagem de programação, LDHs também incluem uma noção implícita de tempo, como um atributo primário de hardware. Linguagem cuja única característica é a de expressar a conectividade do circuito entre uma hierarquia de blocos que estão adequadamente classificadas como uma linguagem netlist utilizada no computer-aided design (CAD).

LDHs são usados para escrever especificações executáveis de algum pedaço de hardware. Um programa de simulação, concebido para implementar a semântica subjacente das declarações de linguagem, juntamente com o progresso da simulação de time, fornece o designer de hardware com a capacidade de modelar uma peça de hardware antes de ser criado fisicamente. É isso que dá executabilidade na LDH a ilusão de serem linguagens de programação, quando eles são mais precisamente, classificados como linguagens de especificação ou linguagens de modelagem. Simuladores capaz de suportar eventos discretos (digital) e de time contínuo (analógico) na modelagem existente, e LDHs direcionados para cada uma que esta disponível.

É certamente possível representar a semântica hardware utilizando linguagens de programação tradicionais, como C + +, embora a função de tais programas devem ser aumentados com bibliotecas de classe extensa e de difícil manejo. No entanto, linguagens de programação de software não incluem qualquer capacidade de expressar explicitamente time, e é por isso que eles não funcionam como uma linguagem de descrição de hardware. Antes da introdução recente de SystemVerilog, C + + integrado com um simulador de lógica era uma das poucas maneiras de usar OOP na verificação de hardware. SystemVerilog é uma LDHs importante para oferecer orientação a objetos e garbage collection.

Usando o subconjunto próprio de praticamente qualquer linguagem (descrição de hardware ou software de programação), um programa chamado de sintetizador (ou ferramenta de síntese) pode-se inferir operações lógicas de hardware a partir das declarações de linguagem e produzir um netlist equivalente de hardware genérico primitivo para implementar o comportamento especificado. Sintetizadores geralmente ignoram a expressão de qualquer timing construído no texto. Sintetizadores de lógica digital, por exemplo, geralmente usa a banda do time como caminho para o time do circuito, ignorando quaisquer construções de timing. A capacidade de ter um subconjunto sintetizado da linguagem não quer dizer q seja uma linguagem de descrição de hardware.

História As primeiras linguagens de descrição de hardware foram ISP (Processador de Conjunto de Instruções), desenvolvido na Carnegie Mellon University, e KARL, desenvolvido na Universidade de Kaiserslautern, ambos por volta de 1977. ISP, entretanto, foi mais como uma linguagem de programação de software usado para descrever as relações entre as entradas e as saídas do projeto. Portanto, ela poderia ser usada para simular o design, mas não para sintetizá-lo. KARL a inclusão de características de design de linguagem cálculo apoio VLSI floorplanning chip e hardware design estruturado, que foi também a base da ABL KARL da linguagem gráfica interativa irmã, implementado no início de 1980 como o editor de design gráfico VLSI abled, pelas telecomunicações centro de pesquisa CSELT em Torino, Itália. Em meados dos anos 1980, um quadro design VLSI foi implementado em torno KARL ABL e por um consórcio internacional financiado pela Comissão da União Europeia (capítulo em ). Em 1983 Data-I / O introduziram ABEL. Foi alvo para descrever dispositivos lógicos programáveis e foi basicamente usado para projetar máquinas de estado finito.

O primeiro LDH moderno, Verilog, foi apresentado pelo Gateway Design Automation em 1985. Cadence Design Systems mais tarde adquiriu os direitos para Verilog-XL, o LDH-simulador que se tornaria o padrão de-facto (de simuladores de Verilog) para a próxima década. Em 1987, um pedido do Departamento de Defesa dos EUA, levou ao desenvolvimento de VHDL (Linguagem de Descrição de Hardware VHSIC, onde VHSIC é Very High Speed Integrated Circuit). VHDL foi baseada na linguagem de programação Ada. Inicialmente, Verilog e VHDL foram usadas para documentar e simular projetos de circuitos já capturado e descrito de outra forma (como um arquivo de esquema.) LDH-simulação habilitam engenheiros a trabalhar em um nível maior de abstração do que a simulação no nível de esquema, e assim aumentou a capacidade de design de centenas de transistores para milhares [ carece de fontes? ].

A introdução da lógica de síntese para LDHs empurrou a LDHs do fundo para o primeiro plano de design digital. Ferramentas de síntese compilada LDH-source files (escrito em um formato limitado chamado RTL) em uma descrição netlist manufacturable gate / transistor-level. Gravação de arquivos RTL sintetizados requer prática e disciplina por parte do designer; comparado a um esquema tradicional layout, sintetizado-RTL netlists eram quase sempre maior em área e mais lento em desempenho [ carece de fontes? ]. O design do circuito feito por um engenheiro qualificado, utilizando mão de obra intensiva schematic-capture/hand-layout, quase sempre superam o seu equivalente logicamente sintetizado, mas vantagem na produtividade da síntese rapidamente deslocado a captura digital esquemática exatamente nas áreas que eram problemáticas para síntese-RTL-: extremamente alta velocidade, baixo consumo de energia, ou circuitos assíncronos. Em resumo, a síntese lógica impulsiona a tecnologia LDH em um papel central para o desenho digital.

Dentro de alguns anos, tanto VHDL e Verilog emergiu como o LDHs dominante na indústria de eletrônicos, enquanto LDHs mais velhos e menos capazes gradualmente desapareceu de uso. Mas VHDL e Verilog compartilham muitas das mesmas limitações: nem HDL é adequado para analógico / circuito de sinal misto de simulação. Não possui construções de linguagem para descrever estruturas lógica gerada recursivamente. LDHs especializados (como Confluence) foram introduzidas com o objetivo explícito de fixação de um limite Verilog / VHDL específicos, embora nenhum deles nunca foram destinados a substituir VHDL / Verilog. Ao longo dos anos, muito esforço foi canalizado para melhorar LDHs. A mais recente iteração do Verilog, formalmente conhecido como IEEE 1800-2005 SystemVerilog, introduz muitos novos recursos (classes, variáveis aleatórias e propriedades / afirmações) para abordar a crescente necessidade de melhor randomização testbench, hierarquia, design e reutilização. A futura revisão do VHDL também está em desenvolvimento, e é esperado para coincidir com melhorias SystemVerilog.

Design utilizando LDH Ganhos de eficiências são realizados utilizando a LDH isso significa que a maioria do design de circuito digital moderno gira em torno dele. As maiorias dos projetos começam como um conjunto de requisitos ou um diagrama de alto nível arquitetônico. Estruturas de controle e decisão são muitas vezes protótipo em aplicações de fluxograma, ou inserido em um editor do diagrama de estado. O processo de escrever a descrição do LDH é altamente dependente da natureza do circuito e da preferência do estilo de codificação do designer. O LDH é apenas a captura da "linguagem", muitas vezes começando com uma descrição de alto nível, tais como algoritmos MATLAB ou C + + modelo matemático. Designers costumam usar linguagens de script (como Perl) para gerar automaticamente estruturas de circuito repetitivo na linguagem LDH. Editores de texto especiais oferecem recursos para o recuo automático, sintaxe dependentes de coloração, e baseado em macro expansão da entidade/arquitetura. /sinal de declaração.

O código de LDH, em seguida, passa por uma revisão de código ou de auditoria. Em preparação para a síntese, a descrição LDH está sujeita a um conjunto de peças automatizadas. Os relatórios do verificadores desviam das diretrizes do código padronizado, identificar potenciais construções de códigos ambíguos antes que possam causar má interpretação, e verificar se há erros de codificação de lógica comum, tais como portas pendentes ou saídas de curto-circuito. Este processo ajuda na resolução de erros antes que o código seja sintetizado.

No jargão do setor, design LDH geralmente termina na fase de síntese. Uma vez que a ferramenta de síntese mapeou a descrição da LDH em uma porta netlist, este netlist é passado de netlist off para a fase de back-end. Dependendo da tecnologia física (FPGA, ASIC gate array, ASIC células standard), LDHs podem ou não desempenhar um papel significativo no fluxo de back-end. Em geral, como o fluxo de projeto progride para uma forma física de realização, o banco de dados de design se torna progressivamente mais carregado de tecnologia de informações específicas, que não podem ser armazenados em uma descrição LDH genérica. Finalmente, um circuito integrado é fabricado ou programado para o uso.

Simulação e depuração do código LDH Essencial para a concepção de LDH é a capacidade de simular programas de LDH. Simulação permite uma descrição de um projeto (chamado de modelo) para passar uma verificação do projeto, um marco importante que válida à função pretendida pelo design (especificação) contra a implementação do código na descrição do LDH. Também as licenças de exploração de arquitetura. O engenheiro pode experimentar com opções de design, escrevendo diversas variações de um projeto base, em seguida, comparando seu comportamento em simulação. Assim, a simulação é fundamental para o sucesso de design de LDH.

Para simular um modelo de LDH, um engenheiro escreve um ambiente de simulação de alto nível (chamado de testbench). No mínimo, um testbench contém uma instanciação do modelo (chamado o dispositivo em teste ou DUT), pino / declarações sinal para o modelo I / O, e uma forma de onda de time. O código testbench é orientado a eventos: o engenheiro escreve declarações de LDH para implementar a (testbench gerados) sinal-reset, para operações de interface modelo (como um host bus - leitura / escrita), e para monitorar a saída do DUT. Um simulador de LDH - o programa que executa o testbench - mantém o time do simulador, que é a referência principal para todos os eventos na simulação testbench. Eventos ocorrem apenas nos instantes ditados pelo testbench de LDH (como um reset-toggle codificado no testbench), ou em reação (pelo modelo) a estímulos e eventos desencadeantes. Simuladores de LDH modernos têm um full-featured interface gráfica completa, com um conjunto de ferramentas de depuração. Estas permitem que o usuário pare e reinicie a simulação a qualquer momento, inserindo um simulador de breakpoints (independente do código LDH), e monitora ou modifica qualquer elemento na hierarquia do modelo LDH. Simuladores modernos também podem vincular o meio ambiente para o usuário de LDH – bibliotecas compiladas, através de um definido PLI / VHPIinterface. Vinculação é dependente do sistema (Win32 / Linux / SPARC), como o simulador de LDH e bibliotecas do usuário são compiladas e ligadas fora do ambiente de LDH.