Emulação de hardware - Hardware emulation

Ikos NSIM-64 Acelerador de simulação de hardware.

No projeto de circuito integrado , a emulação de hardware é o processo de imitar o comportamento de uma ou mais peças de hardware (normalmente um sistema em projeto) com outra peça de hardware, normalmente um sistema de emulação de propósito especial. O modelo de emulação é geralmente baseado em um código-fonte de linguagem de descrição de hardware (por exemplo, Verilog ), que é compilado no formato usado pelo sistema de emulação. O objetivo normalmente é depurar e verificar o funcionamento do sistema que está sendo projetado. Freqüentemente, um emulador é rápido o suficiente para ser conectado a um sistema de destino funcional no lugar de um chip ainda a ser construído, de forma que todo o sistema possa ser depurado com dados ativos. Este é um caso específico de emulação dentro do circuito .

Às vezes, a emulação de hardware pode ser confundida com dispositivos de hardware, como placas de expansão com processadores de hardware que auxiliam nas funções de emulação de software, como placas-filha mais antigas com chips x86 para permitir que sistemas operacionais x86 sejam executados em placas-mãe de famílias de processadores diferentes.

Introdução

A maior porção de silício de circuito integrado respins e revisões são devidos, pelo menos em parte a erros funcionais e erros inadvertidamente introduzidas na RTL fase do processo de concepção. Portanto, a verificação funcional abrangente é a chave para reduzir os custos de desenvolvimento e entregar um produto no prazo. A verificação funcional de um projeto é mais frequentemente realizada usando simulação lógica e / ou prototipagem em matrizes de portas programáveis ​​em campo (FPGAs). Existem vantagens e desvantagens para cada um e frequentemente ambos são usados. A simulação lógica é fácil, precisa, flexível e de baixo custo. No entanto, a simulação muitas vezes não é rápida o suficiente para projetos grandes e quase sempre muito lenta para executar o software do aplicativo no projeto de hardware. Os protótipos baseados em FPGA são rápidos e baratos, mas o tempo necessário para implementar um projeto grande em vários FPGAs pode ser muito longo e está sujeito a erros. Mudanças para corrigir falhas de projeto também levam muito tempo para serem implementadas e podem exigir mudanças na fiação da placa. Com as ferramentas tradicionais de fornecedores, os protótipos FPGA têm pouca capacidade de depuração, sondar os sinais dentro dos FPGAs em tempo real é muito difícil e recompilar os FPGAs para mover as sondas leva muito tempo. Isso está mudando com o surgimento de ferramentas de depuração de protótipo FPGA mais avançadas que removem as limitações na visibilidade do sinal. O compromisso usual é usar simulação no início do processo de verificação, quando bugs e correções são frequentes, e prototipagem no final do ciclo de desenvolvimento quando o design está basicamente completo e a velocidade é necessária para obter testes suficientes para descobrir quaisquer bugs restantes no nível do sistema . A prototipagem FPGA também é popular para testar software.

A aceleração da simulação pode resolver as deficiências de desempenho da simulação até certo ponto. Aqui, o design é mapeado em um acelerador de hardware para ser executado muito mais rápido e o testbench (e qualquer código de design comportamental) continua a ser executado no simulador na estação de trabalho. Um canal de alta largura de banda e baixa latência conecta a estação de trabalho ao acelerador para trocar dados de sinal entre o testbench e o design. Pela lei de Amdahl , o dispositivo mais lento da cadeia determinará a velocidade alcançável. Normalmente, este é o testbench do simulador. Com um testbench muito eficiente (escrito em C ou baseado em transação), o canal pode se tornar o gargalo. Em alguns casos, um testbench de nível de transação é capaz de alimentar tantos dados para o design que está sendo emulado quanto estímulo "ao vivo".

A emulação dentro do circuito melhora um pouco os tempos de implementação da prototipagem FPGA e fornece uma capacidade de depuração abrangente e eficiente. A emulação faz isso às custas da velocidade de execução e do alto custo (US $ 1 milhão +) em comparação com os protótipos FPGA (US $ 75 mil). Olhando para a emulação de outra direção, melhora o desempenho da aceleração substituindo o estímulo "ao vivo" pelo teste simulado. Esse estímulo pode vir de um sistema-alvo (o produto que está sendo desenvolvido) ou de um equipamento de teste. Com velocidade de 10.000 a 100.000 vezes superior à da simulação, a emulação torna possível testar o software do aplicativo e, ao mesmo tempo, fornecer um ambiente de depuração de hardware abrangente.

Simulações de depuração vs. emulações / prototipagem

É importante notar que a simulação e a prototipagem envolvem dois estilos diferentes de execução. A simulação executa o código RTL em série, enquanto um protótipo é executado totalmente em paralelo. Isso leva a diferenças na depuração. Na simulação:

  • O usuário pode definir um ponto de interrupção e parar a simulação para inspecionar o estado do projeto, interagir com o projeto e retomar a simulação.
  • O usuário pode interromper a execução “no meio do ciclo”, por assim dizer, com apenas parte do código executado.
  • O usuário pode ver qualquer sinal no design e o conteúdo de qualquer local da memória a qualquer momento.
  • O usuário pode até mesmo fazer backup do tempo (se salvou o (s) ponto (s) de verificação ) e executar novamente.

Com um protótipo:

  • O usuário emprega um analisador lógico para visibilidade e, portanto, pode ver apenas um número limitado de sinais que determinou antecipadamente (por corte nas pontas de prova). Isso está mudando com o surgimento de ferramentas de protótipo FPGA que fornecem visibilidade total para 10.000 sinais internos, como o Certus.
  • O destino não para quando o analisador lógico é acionado, portanto, cada vez que o usuário altera as sondas ou a condição de acionamento, ele precisa redefinir o ambiente e começar novamente do início.
  • As sondas são adicionadas diretamente ao projeto RTL para disponibilizar sinais específicos para observação. Quando o sistema é executado, a ponta de prova baseada em RTL conectada a cada um dos sinais instrumentados coleta o valor do sinal a cada ciclo de clock. Os dados são armazenados em um buffer de rastreamento na RAM do bloco FPGA. Um analisador conectado ao protótipo baixa as informações, dando ao usuário visibilidade offline do sistema para uma depuração eficiente.

Aceleração e emulação são mais parecidas com prototipagem e silício em termos de execução e depuração RTL, uma vez que todo o design é executado simultaneamente como será no silício. Como o mesmo hardware é freqüentemente usado para fornecer aceleração de simulação e emulação no circuito, esses sistemas fornecem uma combinação desses dois estilos de depuração muito diferentes.

Emuladores de hardware de última geração fornecem um ambiente de depuração com muitos recursos que podem ser encontrados em simuladores lógicos e, em alguns casos, até ultrapassam suas capacidades de depuração:

  • O usuário pode definir um ponto de interrupção e interromper a emulação para inspecionar o estado do design, interagir com o design e retomar a emulação. O emulador sempre para nos limites do ciclo.
  • O usuário tem visibilidade de qualquer sinal ou conteúdo de memória no projeto, sem a necessidade de configurar sondas antes da execução. Embora a visibilidade também seja fornecida para o tempo passado, a quantidade de tempo que ela pode mostrar no passado pode ser limitada em alguns casos à profundidade da memória de rastreamento do emulador.
  • O usuário pode até mesmo fazer backup do tempo (se salvou o (s) ponto (s) de verificação ) e executar novamente.
  • Devido ao seu alto custo, os emuladores estão fora do alcance de muitos desenvolvedores, levando ao surgimento de plataformas avançadas de prototipagem FPGA e ferramentas de depuração.

Emulação e lógica de 2 estados

Outra diferença entre simulação e aceleração e emulação é uma consequência dos aceleradores usarem hardware para implementação - eles têm apenas dois estados lógicos - agindo da maneira que o silício agirá quando fabricado. Isso implica:

  • Eles não são úteis para analisar a inicialização do estado X.
  • Eles não podem analisar a resolução de força, ou pelo menos isso deve ser feito estaticamente em tempo de compilação.
  • Os emuladores não modelam a temporização precisa do circuito e, portanto, provavelmente não encontrarão nenhuma condição de corrida ou violações de configuração e tempo de espera.

Essas tarefas são realizadas corretamente durante a simulação lógica ou com uma ferramenta de análise de tempo estática .

Emulação versus prototipagem

A principal distinção tradicional entre um emulador e um sistema de prototipagem FPGA é que o emulador fornece um ambiente de depuração rico, enquanto um sistema de prototipagem tem pouca ou nenhuma capacidade de depuração e é usado principalmente após o design ser depurado para criar várias cópias para análise do sistema e desenvolvimento de software. Novas ferramentas que permitem visibilidade total do sinal RTL com um pequeno impacto FPGA LUT, permitem profundidade de captura profunda e fornecem análise de domínio de clock e multi-chip estão surgindo para permitir depuração eficiente, comparável ao emulador.

Veja também

Referências

  • Electronic Design Automation For Integrated Circuits Handbook , de Lavagno, Martin e Scheffer, ISBN   0-8493-3096-3 Um levantamento do campo, do qual o resumo acima foi derivado, com permissão.

Leitura adicional