Aproveitando Modelos de Linguagem para Verificação de Hardware
Usando modelos de linguagem grandes pra agilizar os processos de verificação de design de hardware.
― 6 min ler
Índice
No mundo da eletrônica, garantir que os designs funcionem certinho é essencial. Esse processo, chamado de verificação, tem como objetivo encontrar erros no design antes de ele ser construído. Uma das maneiras de fazer verificação envolve escrever propriedades formais que descrevem como o design deve se comportar. Mas, escrever essas propriedades pode ser chato e cheio de erros, mesmo para engenheiros experientes.
O Desafio de Escrever Propriedades de Verificação
A verificação de propriedades formais, ou FPV, existe há muitos anos. Ela pode identificar bugs complexos no design de forma eficaz. Os engenheiros costumam escrever propriedades usando uma linguagem específica conhecida como SystemVerilog Assertions (SVA). Porém, criar essas afirmações leva muito tempo e esforço. Até mesmo os usuários mais habilidosos podem ter dificuldade em escrevê-las corretamente.
Com a complexidade crescente dos novos Designs de Hardware, a FPV se tornou mais importante. No entanto, muitos engenheiros hesitam em usá-la por causa da curva de aprendizado complicada e do tempo que é necessário para escrever afirmações precisas. Tentativas anteriores de facilitar esse trabalho focaram em gerar SVA a partir de descrições de design de nível mais alto. Mas, essa abordagem não elimina completamente a necessidade de trabalho manual.
O Papel dos Modelos de Linguagem
Os avanços recentes em modelos de linguagem grandes (LLMs) apresentam uma oportunidade interessante. Esses modelos mostraram potencial para gerar texto parecido com o humano com base em entradas. Pesquisadores estão explorando a possibilidade de usar LLMs para criar automaticamente afirmações a partir de designs de hardware, o que poderia economizar bastante tempo para os engenheiros.
Nesse approach, os LLMs analisariam o código do design e produziriam SVA sem precisar de especificações detalhadas ou conhecimento prévio do design. Isso é especialmente útil em casos onde as especificações não estão disponíveis ou não são claramente definidas.
Estrutura de Verificação de Propriedades Formais
Desenvolvemos uma estrutura que usa FPV para avaliar afirmações geradas por um LLM. O objetivo é verificar se essas afirmações estão corretas para um design específico.
Quando a ferramenta FPV encontra erros, os engenheiros podem revisar os resultados e ajustar os comandos que usam para o LLM. Esse processo ajuda a refinar as regras que orientam o LLM a gerar afirmações melhores ao longo do tempo.
Abordagem para Usar LLMs na Verificação
Para começar, criamos um testbench de FPV para um design de hardware. Nosso objetivo é usar o LLM para gerar afirmações que analisam a correção do design sem precisar fornecer muitos detalhes sobre a funcionalidade.
Inicialmente, usamos o GPT-4, um LLM avançado. Os primeiros experimentos mostraram que, embora ele conseguisse gerar afirmações a partir do código de hardware, muitas continham erros de sintaxe e significado. Ao refinarmos gradualmente os comandos com regras específicas, ensinamos o GPT-4 a produzir SVA mais precisas.
Integramos essas melhorias a uma estrutura de código aberto existente chamada AutoSVA, permitindo a geração tanto de propriedades de segurança quanto de vivacidade.
Experimentando com o GPT-4
O próximo passo envolveu testar nossa abordagem usando o GPT-4. Avaliamos sua produção para determinar quão efetivamente ele gerava afirmações corretas. Cada rodada de teste envolveu a geração de um novo conjunto de propriedades com base no design de hardware, seguida de uma avaliação.
Observamos que o GPT-4 tinha a capacidade de produzir afirmações válidas mesmo a partir de designs incorretos. Isso mostra que ele consegue identificar e contabilizar erros no design em vez de simplesmente replicar o que vê.
Para avaliar a eficácia do nosso método, comparamos as afirmações geradas pelo AutoSVA e nosso fluxo melhorado. Descobrimos que a nova abordagem melhorou significativamente a cobertura do comportamento do design, permitindo uma verificação mais completa.
Descobertas dos Experimentos
Os experimentos levaram a várias descobertas importantes:
Criatividade do GPT-4: A capacidade do modelo de gerar afirmações corretas a partir de códigos de design com falhas destaca seus pontos fortes. Ele não depende apenas da entrada fornecida, mas consegue gerar insights que não são imediatamente óbvios.
Robustez aos Nomes: O modelo não é excessivamente sensível aos nomes usados no design, indicando que ele consegue focar na lógica subjacente em vez de apenas na sintaxe.
Cobertura Aprimorada: As afirmações geradas com a nova estrutura ofereceram uma melhor visão do comportamento do design em comparação ao método original.
Durante os testes, também descobrimos um bug em um design de código aberto amplamente utilizado que havia passado despercebido. Isso destaca ainda mais o potencial do uso de LLMs para verificação em aplicações práticas.
Passos para Melhoria Iterativa
Para melhorar continuamente a saída do modelo, adotamos uma abordagem iterativa. Cada vez que realizamos os testes, analisamos cuidadosamente os resultados. Categorizamos os problemas em vários grupos, focando principalmente em erros de sintaxe, temporização incorreta e erros semânticos.
Problemas de Sintaxe: Os problemas comuns envolviam referências que não estavam devidamente declaradas ou o uso de palavras-chave erradas. Refinamos nossas regras para ajudar o modelo a entender melhor esses aspectos.
Erros de Temporização: A temporização pode ser complicada no design de hardware. Trabalhamos para ensinar ao modelo a maneira correta de raciocinar sobre a temporização nas afirmações, já que ele frequentemente confundia diferentes condições de temporização.
Correções Semânticas: Além de temporização e sintaxe, nos aprofundamos no significado por trás das afirmações. Focamos em garantir que as afirmações refletissem com precisão o comportamento desejado do design.
Conclusão
A incorporação de grandes modelos de linguagem no processo de verificação de hardware traz esperança de simplificar uma tarefa tradicionalmente complexa. Usando esses modelos avançados, os engenheiros podem economizar tempo e reduzir a probabilidade de erros no processo de verificação.
Nossos experimentos mostraram que LLMs como o GPT-4 podem ser ajustados para gerar afirmações corretas a partir de designs de hardware, levando a uma melhor cobertura e identificação de bugs. Essa mudança pode tornar a verificação mais acessível para os engenheiros e melhorar a qualidade dos designs de hardware em geral.
À medida que a tecnologia continua a evoluir, o papel dos LLMs em áreas como eletrônica provavelmente se expandirá, permitindo ainda mais avanços na verificação de design e processos relacionados.
Título: Using LLMs to Facilitate Formal Verification of RTL
Resumo: Formal property verification (FPV) has existed for decades and has been shown to be effective at finding intricate RTL bugs. However, formal properties, such as those written as SystemVerilog Assertions (SVA), are time-consuming and error-prone to write, even for experienced users. Prior work has attempted to lighten this burden by raising the abstraction level so that SVA is generated from high-level specifications. However, this does not eliminate the manual effort of reasoning and writing about the detailed hardware behavior. Motivated by the increased need for FPV in the era of heterogeneous hardware and the advances in large language models (LLMs), we set out to explore whether LLMs can capture RTL behavior and generate correct SVA properties. First, we design an FPV-based evaluation framework that measures the correctness and completeness of SVA. Then, we evaluate GPT4 iteratively to craft the set of syntax and semantic rules needed to prompt it toward creating better SVA. We extend the open-source AutoSVA framework by integrating our improved GPT4-based flow to generate safety properties, in addition to facilitating their existing flow for liveness properties. Lastly, our use cases evaluate (1) the FPV coverage of GPT4-generated SVA on complex open-source RTL and (2) using generated SVA to prompt GPT4 to create RTL from scratch. Through these experiments, we find that GPT4 can generate correct SVA even for flawed RTL, without mirroring design errors. Particularly, it generated SVA that exposed a bug in the RISC-V CVA6 core that eluded the prior work's evaluation.
Autores: Marcelo Orenes-Vera, Margaret Martonosi, David Wentzlaff
Última atualização: 2023-09-28 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2309.09437
Fonte PDF: https://arxiv.org/pdf/2309.09437
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.