Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Integrado

Automatizando a Geração de Testes em C para Verificação Abrangente de SoC Embarcados

Os designs de SoC estão se tornando cada vez mais complexos, mas muitas suítes de verificação de nível de sistema ainda consistem em milhares de linhas de código C escritas manualmente — uma abordagem antiquada que contradiz o princípio da automação. Em particular, os testes em C executados em processadores embarcados para validar o dispositivo inteiro antes da fabricação permanecem largamente manuais.

A Automação Impulsiona a Produtividade

A automação da criação de testes aumenta a produtividade em todas as etapas do desenvolvimento de SoC. Métodos de randomização restrita em testbenches UVM geram vetores aleatórios específicos de cenário, melhorando a cobertura no nível de bloco. No entanto, o design permanece uma caixa preta, com estímulo, verificações e código de cobertura escritos separadamente — um processo trabalhoso e propenso a erros para blocos grandes.

Estender esses métodos ao nível de sistema é desafiador porque eles devem integrar código de teste do processador com transações de I/O, tipicamente executadas em emuladores ou protótipos. A verificação completa de SoC requer exercitar os próprios processadores, mas UVM e outras técnicas de randomização restrita geralmente omitem código de processador. Na prática, UVM é aplicada ao SoC substituindo processadores por I/O virtual, deixando o subsistema menos o processador sob teste.

Reconhecendo as deficiências dos testbenches de randomização restrita, engenheiros recorrem a testes C escritos manualmente que rodam em processadores tanto em simulação quanto em emulação de hardware. No entanto, essas plataformas não suportam um SO completo; os testes rodam em modo bare-metal, aumentando o esforço de composição. Execução coordenada multi-core e multi-thread é rara, então comportamentos críticos — concorrência e coerência — recebem verificação limitada.

Geração Automática de Testes em C

A geração automatizada de testes em C libera tempo de engenharia e expande a cobertura. Casos de teste gerados cobrem mais funcionalidades do SoC do que os escritos manualmente, revelando casos de canto difíceis. Testes multi-threaded e multi-processador exercitam todos os caminhos paralelos, validam concorrência, estressam coerência de memória e sincronizam com transações de I/O. Como resultado, a cobertura funcional de nível de sistema rotineiramente excede 90%, superando amplamente abordagens tradicionais.

A ferramenta de geração de testes — Test Suite Synthesis — utiliza um modelo de cenário claro, baseado em grafos, que encapsula o comportamento pretendido do design. Engenheiros podem criar esses modelos em C++ nativo usando o Accellera Portable Stimulus Standard ou visualmente, espelhando diagramas convencionais de fluxo de dados de chip tipicamente esboçados em quadros brancos durante discussões de design.

Cada modelo encapsula estímulo, verificações, métricas de cobertura e dados de debug, dando ao gerador toda informação necessária para produzir testes C de alta qualidade, auto-verificáveis, que exercitam todos os aspectos do design. Modelos hierárquicos e modulares permitem que testes de nível de bloco sejam reutilizados integralmente em modelos de SoC completos e compartilhados entre equipes e projetos. A ferramenta de síntese decompõe um único modelo de intenção em testes concorrentes abrangendo threads e portas de I/O, garantindo sincronização apertada.

Vantagens da Síntese de Suíte de Testes

Um benefício-chave da síntese de suíte de testes é a capacidade de definir metas de cobertura no nível do modelo de intenção. Após especificar a intenção, a ferramenta a analisa para estimar o número de casos de teste necessários e a cobertura funcional esperada.

Em um SoC típico, milhares de testes podem ser gerados. Ao restringir a intenção, engenheiros podem direcionar metas de cobertura específicas e concentrar a ferramenta em áreas críticas. Isso elimina o ciclo iterativo tedioso de configurar testes, rodar verificação, avaliar cobertura e reconfigurar.

Um estudo de caso em um grande SoC de uma empresa líder de semicondutores demonstrou redução de 80% no tempo de composição de testes comparado a testes manuais. A automação gerou casos mais rigorosos, elevando a cobertura de 84% para 97%. Os modelos provaram ser portáteis entre ambientes.

Um único modelo de intenção pode produzir casos de teste para plataformas virtuais, simulação RTL, emulação, protótipos FPGA, ou até mesmo o chip fabricado durante validação pós-silício.

Debug continua sendo um grande consumidor de tempo no nível de SoC. Quando um teste revela um defeito, engenheiros precisam rastrear a falha de volta ao teste originário e ao modelo de cenário subjacente. Ao correlacionar cada caso de teste à sua representação em grafo, testes modulares e auto-contidos permitem isolamento e análise rápidas de bugs.

Cenários de Aplicação

Casos de teste sintetizados podem impulsionar cenários de uso realistas. Por exemplo, considere o SoC de câmera digital ilustrado na Figura 1.

Automatizando a Geração de Testes em C para Verificação Abrangente de SoC Embarcados
Figura 1: Exemplo de SoC de Processamento de Imagem. (Fonte: Breker Verification Systems)

Os componentes de nível de bloco do SoC compreendem dois processadores, dispositivos periféricos e memória. Um grafo simplificado abaixo do diagrama de blocos ilustra os caminhos de alto nível para verificação. Um cenário — representado no caminho superior — lê um JPEG de um cartão SD, roteia para o processador de foto via região de memória, transforma a imagem para exibição, carrega em um segundo bloco de memória e finalmente envia ao controlador de display. Cada bloco de alto nível é hierárquico, contendo numerosas ações e decisões.

A ferramenta de síntese agenda testes randomizados de acordo. Na forma mais simples, testes executam sequencialmente em uma única thread, como ilustrado. O verdadeiro poder emerge quando a ferramenta intercala aplicações através de múltiplas threads e processadores, rodando tantas instâncias concorrentes quanto o design permite e alocando memória em padrões complexos. Uma visão alternativa na figura mostra testes distribuídos em três threads, aproveitando diversas regiões de memória.

Embora a ilustração seja de alto nível, a ferramenta de síntese na verdade achata o grafo hierárquico em milhares de ações e conexões, incorporando decisões randomizadas que passam por um algoritmo solver. À medida que o grafo é percorrido, algoritmos de planejamento de IA analisam saídas desejadas e refinam testes de entrada para alinhamento ótimo. A ferramenta também fornece serviços semelhantes a SO — alocação de memória, acesso a mapa de endereços, tratamento de interrupções — para suportar estruturas de teste completas, então agenda testes aleatoriamente enquanto aloca armazenamento e recursos adequadamente.

Conclusão

Assim como testbenches de randomização restrita removeram esforço manual da verificação de bloco, conteúdo de teste sintetizado para SoCs de processadores embarcados provou reduzir esforço de verificação de nível de sistema. A abordagem agora se estende a verificação de nível de bloco e validação pós-silício. Testes C automatizados incorporam o princípio de "automatize sempre que possível", entregando ganhos dramáticos de cobertura e cronogramas de verificação comprimidos.

Integrado

  1. ST Microelectronics Apresenta MCUs 28 nm FD‑SOI com PCM Embarcado para Powertrain, ADAS e Eletrificação
  2. Analog Devices Mostra IA, Networking Industrial e Soluções de Potência no Embedded World 2019
  3. GIGAIPC IoT Innovations Showcase no Embedded World 2019
  4. Cervoz SSDs M.2 NVMe Ultra-Finos: Armazenamento High-Performance para Aplicações Industriais de Edge
  5. Keysight Revela Sistema Avançado de Teste de Phase Noise N5511A para Aeroespacial, Defesa e Design 5G
  6. ST & YouTransactor Lançam SoC PCI-Secure Alimentando 50k+ Terminais Pagamento Móvel
  7. Bus Sentinel da UltraSoC: Hardware IP Real-Time Segurando Transações Bus SoC
  8. IBASE CMI300‑988: Mini‑ITX PC Ultracompacto com AMD Ryzen Embedded V1807B
  9. Axiomtek Lança eBOX100‑51R‑FL Fanless: Solução Edge Computing Ultracompacta Intel‑Powered
  10. Sistemas Embarcados e Integração de Sistemas: Arquitetura e Conectividade Modernas