Test generation has been a critical and labor-intensive process in hardware design verification. Recently, the emergence of Large Language Model (LLM) with their advanced understanding and inference capabilities, has introduced a novel approach. In this work, we investigate the integration of LLM into the Coverage Directed Test Generation (CDG) process, where the LLM functions as a Verilog Reader. It accurately grasps the code logic, thereby generating stimuli that can reach unexplored code branches. We compare our framework with random testing, using our self-designed Verilog benchmark suite. Experiments demonstrate that our framework outperforms random testing on designs within the LLM's comprehension scope. Our work also proposes prompt engineering optimizations to augment LLM's understanding scope and accuracy.
- ID Articolo: 2406.04373
- Titolo: VerilogReader: Generazione di Test Hardware Assistita da LLM
- Autori: Ruiyang Ma, Yuxin Yang, Ziqian Liu, Jiaxi Zhang, Min Li, Junhua Huang, Guojie Luo
- Classificazione: cs.SE cs.AI
- Data di Pubblicazione: 3 giugno 2024 (preprint arXiv)
- Link Articolo: https://arxiv.org/abs/2406.04373
- Codice Open Source: https://github.com/magicYang1573/llm-hardware-test-generation
La generazione di test è sempre stata un processo critico e laborioso nella verifica del design hardware. Negli ultimi anni, i modelli di linguaggio di grandi dimensioni (LLM) hanno introdotto nuovi approcci in questo campo grazie alle loro avanzate capacità di comprensione e ragionamento. Questo studio esplora l'integrazione di LLM nel processo di generazione di test orientato alla copertura (CDG), dove l'LLM funge da lettore di codice Verilog, comprendendo accuratamente la logica del codice e generando stimoli in grado di raggiungere rami di codice inesplorati. Gli autori confrontano il framework con test casuali utilizzando una suite di benchmark Verilog auto-progettata, dimostrando che il framework supera i test casuali su design entro l'ambito di comprensione dell'LLM, e propongono ottimizzazioni di prompt engineering per migliorare l'ambito di comprensione e l'accuratezza dell'LLM.
- Importanza della Verifica Hardware: Con l'aumento della complessità hardware, la verifica hardware è diventata sempre più critica nel processo di sviluppo. Gli errori hardware non rilevati possono causare conseguenze significative e perdite economiche sostanziali.
- Metodi di Verifica Esistenti: Gli ingegneri adottano principalmente due approcci di verifica:
- Verifica formale: utilizzo di tecniche matematiche per provare la correttezza del sistema
- Verifica dinamica: generazione di diversi casi di test per simulare il design sotto test (DUT)
- Sfide nella Generazione di Test: Il raggiungimento degli obiettivi di copertura richiede input di test di alta qualità, imponendo un onere significativo agli ingegneri di verifica.
- Necessità di Automazione: Per ridurre l'intervento manuale, la generazione di test orientata alla copertura (CDG) è diventata una tecnologia chiave per l'automazione della generazione di test hardware.
- Opportunità degli LLM: Le forti capacità degli LLM nella comprensione e nel ragionamento offrono nuove opportunità nel campo della generazione di test hardware.
- Posizionamento Differenziato: A differenza della ricerca precedente focalizzata su punti di copertura funzionale, questo articolo si concentra sulla copertura del codice, un obiettivo di test più fondamentale, posizionando l'LLM come "VerilogReader".
- Framework Open Source: Primo rilascio open source di un framework che integra LLM nel processo CDG, utilizzando LLM come VerilogReader per comprendere il codice Verilog e la copertura, con l'obiettivo di generare test che raggiungono la chiusura della copertura del codice.
- Modulo di Ottimizzazione dei Prompt: Propone i moduli Coverage Explainer e DUT Explainer per arricchire i prompt, migliorando la comprensione dell'LLM del design e dell'intento dei test, aumentando la scalabilità del framework.
- Suite di Benchmark: Crea una suite di benchmark contenente 24 design Verilog di livello semplice, medio e complesso, dimostrando che il framework supera i test casuali su DUT di livello semplice e medio.
- Esplorazione dei Confini delle Capacità: Definisce chiaramente i confini massimi delle capacità attuali dell'LLM nella lettura di Verilog.
Il compito di questo articolo è utilizzare l'LLM per comprendere la logica del codice Verilog e lo stato di copertura attuale, generando stimoli di input multi-ciclo in grado di attivare rami di codice non coperti, al fine di migliorare la copertura del codice.
L'intero framework adotta un processo CDG iterativo, contenente i seguenti componenti principali:
- Core LLM: Genera input multi-ciclo in formato JSON in ogni iterazione
- Decodificatore di Input: Decodifica gli input in formato JSON in stimoli hardware
- Monitor di Copertura: Fornisce informazioni sulla copertura del codice attuale
- Moduli di Spiegazione: Include Coverage Explainer e DUT Explainer
Adotta un meccanismo di domande e risposte in due turni:
- Primo Turno: Informa l'LLM dell'obiettivo di test, fornisce informazioni DUT e dati di copertura, l'LLM risponde in linguaggio naturale
- Secondo Turno: Guida l'LLM a convertire la risposta in formato JSON standardizzato
Converte report di copertura complessi in formato comprensibile dall'LLM:
- Formato Originale: Report di copertura Verilator, contenente identificatori univoci e conteggi di hit
- Formato Annotato: Report annotato creato utilizzando lo strumento verilator_coverage
- Formato Leggibile dall'LLM: Formato appositamente progettato, aggiungendo il flag 'TO BE COVERED' alle righe non coperte
Fornisce due funzionalità per migliorare la comprensione dell'LLM del DUT:
- Descrizione del Design: Fornisce spiegazioni in linguaggio naturale della funzionalità DUT e della logica interna
- Guida ai Test: Fornisce informazioni supplementari e regole di logica di test di base per la creazione di test specifici per DUT
- Focalizzazione sulla Copertura del Codice: Prima applicazione di LLM alla copertura del codice hardware piuttosto che ai punti di copertura funzionale
- Elaborazione in Fasi: Scompone il compito di generazione di test in due fasi: comprensione DUT e ragionamento sulla logica di input
- Etichettatura in Linguaggio Naturale: Utilizza etichettatura in linguaggio naturale per righe non coperte, semplificando il processo di ragionamento dell'LLM
- Interazione Bidirezionale: Promuove il pensiero progressivo dell'LLM attraverso domande e risposte in due turni
Suite di benchmark auto-costruita contenente 24 design Verilog, divisa in tre livelli di difficoltà:
- Livello Semplice (s01-s10): 10 circuiti logici combinatori di base (multiplexer, ALU, ecc.)
- Livello Medio (m01-m08): 8 circuiti logici sequenziali (FSM, contatori, arbitri, ecc.)
- Livello Complesso (c01-c06): 6 circuiti FSM su larga scala (16-128 stati)
- Metrica Principale: Lunghezza totale degli stimoli di input necessari per raggiungere la copertura completa (misurata in cicli di clock)
- Copertura: Percentuale di copertura delle righe
- Efficienza Temporale: Numero di iterazioni necessarie per raggiungere la copertura target
- Test Casuale: Metodo di confronto di base
- Diversi Formati di Report di Copertura: Formato originale, formato annotato, formato leggibile dall'LLM
- Modello di Linguaggio: OpenAI GPT-4 e GPT-4-Turbo-0125
- Simulatore: Verilator
- Analisi del Codice: Pyverilog
- Ripetizione Esperimenti: Ogni esperimento ripetuto 5 volte per gestire la casualità dell'LLM
I risultati degli esperimenti su DUT di livello medio utilizzando GPT-4 mostrano:
- Il report di copertura leggibile dall'LLM supera significativamente i formati originale e annotato
- Il report di copertura originale illeggibile rappresenta la sfida maggiore per l'LLM
- Il flag 'TO BE COVERED' con etichettatura in linguaggio naturale migliora efficacemente l'effetto di comprensione
I risultati degli esperimenti su DUT di livello semplice e medio mostrano:
- Il framework LLM utilizza significativamente meno input per raggiungere la copertura del 100%
- I test casuali spesso non raggiungono la copertura completa entro un minuto su design sequenziali con rami difficili da raggiungere
- GPT-4 e GPT-4-Turbo mostrano prestazioni simili nei compiti di generazione di test hardware
- Descrizione del Design: La descrizione del design generata dall'LLM migliora la comprensione del design durante la generazione di test
- Guida ai Test: Effetto incoerente, in alcuni design (m05, m06) riduce effettivamente la diversità di input
I risultati degli esperimenti su FSM di livello complesso mostrano:
- FSM a 16 stati: si avvicina alla copertura di linea del 100% dopo 20 iterazioni
- FSM a 64 stati e oltre: la copertura non supera il 50%
- Con l'aumento della dimensione del DUT, la qualità della generazione di test diminuisce drasticamente
- L'LLM mostra prestazioni eccellenti su design di complessità semplice e media
- L'LLM attuale ha limitazioni evidenti nel trattamento di design Verilog su larga scala
- L'ingegneria dei prompt appropriata può migliorare significativamente le prestazioni dell'LLM
- Il formato del report di copertura è critico per la comprensione dell'LLM
- Esplorazione dello spazio di input basata su metodi euristici
- Utilizzo dello stato di copertura come feedback fondamentale per la generazione di nuovi casi di test
- Sfruttamento delle informazioni sulla struttura del circuito (grafi di flusso di controllo/dati, mappe di connessione dei moduli) per guidare la generazione di test
- Scrittura RTL: Generazione automatica di codice di descrizione hardware
- Generazione di Asserzioni: Generazione di asserzioni di verifica
- Correzione di Errori: Correzione di errori nei design hardware
- Verifica Funzionale: Lavoro di verifica dei punti di copertura funzionale di Zhang et al.
A differenza del lavoro precedente focalizzato su descrizioni di piani di test funzionali di alto livello, questo articolo si concentra su obiettivi di copertura del codice più fondamentali, richiedendo all'LLM una comprensione profonda della logica del codice Verilog.
- L'LLM può comprendere efficacemente design Verilog di complessità semplice e media e generare input di test mirati
- L'ingegneria dei prompt appropriata (in particolare la spiegazione della copertura) è critica per le prestazioni dell'LLM
- L'LLM attuale ha limitazioni evidenti nel trattamento di design hardware su larga scala e complessi
- Limite di Scala: Per design complessi con più di 100 righe di codice, le prestazioni dell'LLM diminuiscono significativamente
- Comprensione della Struttura: L'LLM ha difficoltà a comprendere le caratteristiche altamente strutturate di Verilog
- Applicazione End-to-End: L'applicazione diretta dell'LLM nei design hardware di livello industriale rimane ancora una sfida
- Miglioramento del DUT Explainer: Fornire astrazioni di design di livello superiore più complete e intenti di verifica
- Fusione Multimodale: Combinare LLM e reti neurali grafiche (GNN), utilizzando LLM per l'interpretazione semantica e GNN per l'elaborazione delle informazioni strutturali
- Elaborazione Gerarchica: Guidare l'LLM nel trattamento dei compiti di generazione di test da una prospettiva macroscopica
- Forte Innovatività: Prima applicazione di LLM alla generazione di test di copertura del codice hardware, posizionamento chiaro
- Approccio Sistematico: Propone un framework completo, includendo molteplici moduli di ottimizzazione
- Esperimenti Sufficienti: Costruisce una suite di benchmark multi-livello, design sperimentale razionale
- Contributo Open Source: Fornisce un framework open source, promuovendo lo sviluppo del campo
- Esplorazione dei Confini: Definisce chiaramente i confini delle capacità attuali dell'LLM
- Limitazioni di Scala: Efficace solo su design relativamente semplici, ancora lontano dall'applicazione industriale pratica
- Limitazioni del Benchmark: Il benchmark auto-costruito potrebbe non essere sufficientemente completo, mancano confronti con benchmark standard industriali
- Analisi dei Costi: Manca un confronto dettagliato tra i costi di invocazione dell'LLM e i metodi tradizionali
- Analisi Teorica: Manca un'analisi teorica approfondita del perché l'LLM sia efficace in questo compito
- Valore Accademico: Apre una nuova direzione di applicazione dell'LLM nel campo della verifica hardware
- Potenziale Pratico: Ha valore di applicazione pratica nell'educazione e nella verifica di design di piccola e media scala
- Natura Ispirativa: Fornisce baseline e idee preziose per la ricerca successiva
- Ambiente Educativo: Adatto per la generazione automatica di test nei corsi di design hardware
- Verifica di Prototipi: Applicabile alla verifica rapida nella fase di design iniziale
- Design di Piccola e Media Scala: Ha valore pratico per moduli Verilog di meno di 100 righe
- Strumento Ausiliario: Può servire come strumento ausiliario per gli ingegneri di verifica, riducendo parte del carico di lavoro
L'articolo cita 19 riferimenti correlati, coprendo verifica formale, verifica dinamica, metodi CDG, applicazioni di LLM nel campo hardware e altri aspetti, fornendo una base teorica solida per la ricerca.
Valutazione Complessiva: Questo è un lavoro innovativo nel campo dell'intersezione tra LLM e verifica hardware. Sebbene abbia limitazioni nell'applicazione su larga scala, fornisce un'esplorazione preziosa e una base per lo sviluppo del campo. Il metodo dell'articolo è sistematico, gli esperimenti sono sufficienti, il contributo open source è chiaro, con buon valore accademico e significato ispirativo.