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.
- Papier-ID: 2406.04373
- Titel: VerilogReader: LLM-Aided Hardware Test Generation
- Autoren: Ruiyang Ma, Yuxin Yang, Ziqian Liu, Jiaxi Zhang, Min Li, Junhua Huang, Guojie Luo
- Klassifizierung: cs.SE cs.AI
- Veröffentlichungsdatum: 3. Juni 2024 (arXiv-Preprint)
- Papierlink: https://arxiv.org/abs/2406.04373
- Open-Source-Code: https://github.com/magicYang1573/llm-hardware-test-generation
Die Testgenerierung ist seit jeher ein kritischer und arbeitsintensiver Prozess in der Hardwareverifikation. In den letzten Jahren haben große Sprachmodelle (LLM) mit ihren fortgeschrittenen Verständnis- und Reasoning-Fähigkeiten neue Ansätze in diesem Bereich eingeführt. Diese Forschung untersucht die Integration von LLM in den Coverage-Driven Generation (CDG)-Prozess, wobei das LLM als Verilog-Code-Leser fungiert, um die Code-Logik genau zu verstehen und Stimuli zu generieren, die unerforschte Code-Branches erreichen können. Die Autoren vergleichen das Framework mit zufälligen Tests unter Verwendung einer selbst entworfenen Verilog-Benchmark-Suite. Die Experimente zeigen, dass das Framework bei Designs im Verständnisbereich des LLM zufällige Tests übertrifft, und es werden Prompt-Engineering-Optimierungen vorgeschlagen, um den Verständnisbereich und die Genauigkeit des LLM zu verbessern.
- Bedeutung der Hardwareverifikation: Mit der zunehmenden Komplexität von Hardware wird die Hardwareverifikation im Entwicklungsprozess immer wichtiger. Nicht erkannte Hardwarefehler können zu schwerwiegenden Folgen und enormen wirtschaftlichen Verlusten führen.
- Bestehende Verifikationsmethoden: Ingenieure verwenden hauptsächlich zwei Verifikationsmethoden:
- Formale Verifikation: Verwendung mathematischer Techniken zum Nachweis der Systemkorrektheit
- Dynamische Verifikation: Generierung vielfältiger Testfälle zur Simulation des zu testenden Designs (DUT)
- Herausforderungen bei der Testgenerierung: Die Erreichung von Abdeckungszielen erfordert hochwertige Testeingaben, was Verifikationsingenieuren eine enorme Arbeitsbelastung auferlegt.
- Automatisierungsbedarf: Um menschliche Eingriffe zu reduzieren, ist Coverage-Driven Generation (CDG) zu einer Schlüsseltechnologie für die automatisierte Hardwaretestgenerierung geworden.
- LLM-Chancen: Die starken Fähigkeiten von LLM im Verständnis und Reasoning bieten neue Möglichkeiten für die Hardwaretestgenerierung.
- Differenzierte Positionierung: Im Gegensatz zu früheren Arbeiten, die sich auf funktionale Abdeckungspunkte konzentrierten, konzentriert sich dieses Papier auf Code-Coverage als grundlegenderes Testziel und positioniert das LLM als "VerilogReader".
- Open-Source-Framework: Erstmals ein Framework veröffentlicht, das LLM in den CDG-Prozess integriert, wobei das LLM als VerilogReader zur Verständnis von Verilog-Code und Coverage verwendet wird, mit dem Ziel, Tests mit geschlossener Code-Coverage zu generieren.
- Prompt-Optimierungsmodul: Vorschlag der Module Coverage Explainer und DUT Explainer zur Anreicherung von Prompts, um das LLM-Verständnis von Design und Testabsicht zu verbessern und die Skalierbarkeit des Frameworks zu erhöhen.
- Benchmark-Suite: Erstellung einer Benchmark-Suite mit 24 Verilog-Designs auf einfacher, mittlerer und komplexer Ebene. Experimente zeigen, dass das Framework bei einfachen und mittleren DUTs zufällige Tests übertrifft.
- Erkundung von Fähigkeitsgrenzen: Klare Definition der maximalen Fähigkeitsgrenzen aktueller LLM beim Verilog-Lesen.
Die Aufgabe dieses Papiers besteht darin, das LLM zur Verständnis der Verilog-Code-Logik und des aktuellen Abdeckungsstatus zu nutzen, um Multi-Zyklus-Eingabereize zu generieren, die nicht abgedeckte Code-Branches auslösen können, um die Code-Coverage zu verbessern.
Das gesamte Framework verwendet einen iterativen CDG-Prozess mit den folgenden Kernkomponenten:
- LLM-Kern: Generiert in jeder Iteration JSON-formatierte Multi-Zyklus-Eingaben
- Eingabe-Decoder: Dekodiert JSON-formatierte Eingaben in Hardware-Reize
- Coverage-Monitor: Stellt aktuelle Code-Coverage-Informationen bereit
- Erklärer-Module: Einschließlich Coverage Explainer und DUT Explainer
Verwendet einen Zwei-Runden-Frage-Antwort-Mechanismus:
- Erste Runde: Informiert das LLM über Testziele, stellt DUT-Informationen und Coverage-Daten bereit, LLM antwortet in natürlicher Sprache
- Zweite Runde: Leitet das LLM an, die Antwort in standardisiertes JSON-Format umzuwandeln
Konvertiert komplexe Coverage-Berichte in ein für LLM verständliches Format:
- Originalformat: Verilator-Coverage-Bericht mit eindeutigen Identifikatoren und Hit-Zählern
- Annotiertes Format: Mit dem verilator_coverage-Tool erstellter kommentierter Bericht
- LLM-lesbares Format: Speziell entworfenes Format, das nicht abgedeckte Zeilen mit dem Flag 'TO BE COVERED' markiert
Bietet zwei Funktionen zur Verbesserung des LLM-Verständnisses des DUT:
- Design-Beschreibung: Bietet natürlichsprachliche Erklärungen der DUT-Funktionalität und internen Logik
- Test-Anleitung: Bietet ergänzende Informationen und grundlegende Test-Logik-Regeln zur Erstellung spezifischer DUT-Tests
- Code-Coverage-Fokus: Erstmalige Anwendung von LLM auf Hardware-Code-Coverage statt funktionaler Abdeckungspunkte
- Stufenweise Verarbeitung: Zerlegung der Testgenerierungsaufgabe in zwei Phasen: DUT-Verständnis und Eingabe-Logik-Reasoning
- Natürlichsprachliche Markierung: Verwendung natürlichsprachlicher Markierungen für nicht abgedeckte Zeilen, um das LLM-Reasoning zu vereinfachen
- Zwei-Runden-Interaktion: Förderung des schrittweisen Denkprozesses des LLM durch Zwei-Runden-Frage-Antwort
Selbst erstellte Benchmark-Suite mit 24 Verilog-Designs in drei Schwierigkeitsstufen:
- Einfache Ebene (s01-s10): 10 grundlegende kombinatorische Logikschaltungen (Multiplexer, ALU usw.)
- Mittlere Ebene (m01-m08): 8 sequenzielle Logikschaltungen (FSM, Zähler, Arbiters usw.)
- Komplexe Ebene (c01-c06): 6 großflächige FSM-Schaltungen (16-128 Zustände)
- Hauptmetrik: Gesamtlänge der Eingabereize, die zur Erreichung vollständiger Coverage erforderlich sind (in Taktzyklen gemessen)
- Coverage: Prozentsatz der Zeilenabdeckung
- Zeiteffizienz: Anzahl der Iterationen zur Erreichung der Zielabdeckung
- Zufälliger Test: Als Basis-Vergleichsmethode
- Verschiedene Coverage-Berichtsformate: Originalformat, annotiertes Format, LLM-lesbares Format
- Sprachmodelle: OpenAI GPT-4 und GPT-4-Turbo-0125
- Simulator: Verilator
- Code-Analyse: Pyverilog
- Experimentwiederholungen: Jedes Experiment wird 5-mal wiederholt, um die Zufälligkeit des LLM zu berücksichtigen
Experimentelle Ergebnisse mit GPT-4 auf mittleren DUTs zeigen:
- LLM-lesbare Coverage-Berichte sind deutlich besser als Original- und annotierte Formate
- Ursprüngliche unleserliche Coverage-Berichte stellen die größte Herausforderung für das LLM dar
- Das natürlichsprachliche Flag 'TO BE COVERED' verbessert das Verständnis effektiv
Experimentelle Ergebnisse auf einfachen und mittleren DUTs zeigen:
- Das LLM-Framework erreicht 100% Coverage mit deutlich weniger Eingaben
- Zufällige Tests können bei sequenziellen Designs mit schwer erreichbaren Branches oft nicht innerhalb einer Minute vollständige Coverage erreichen
- GPT-4 und GPT-4-Turbo zeigen ähnliche Leistung bei Hardwaretestgenerierungsaufgaben
- Design-Beschreibung: Von LLM generierte Design-Beschreibungen verbessern das Design-Verständnis während der Testgenerierung
- Test-Anleitung: Inkonsistente Effekte, in einigen Designs (m05, m06) wird sogar die Eingabevielfalt reduziert
Experimentelle Ergebnisse für komplexe FSM-Ebene zeigen:
- 16-Zustands-FSM: Nähert sich nach 20 Iterationen 100% Zeilenabdeckung
- 64+ Zustands-FSM: Coverage kann 50% nicht überschreiten
- Mit zunehmender DUT-Größe sinkt die Testgenerierungsqualität dramatisch
- LLM zeigt hervorragende Leistung bei einfachen und mittelmäßig komplexen Designs
- Aktuelle LLM haben deutliche Einschränkungen bei der Verarbeitung großflächiger Verilog-Designs
- Angemessenes Prompt-Engineering kann die LLM-Leistung erheblich verbessern
- Das Coverage-Berichtsformat ist für das LLM-Verständnis entscheidend
- Erkundung des Eingaberaums basierend auf heuristischen Methoden
- Verwendung des Coverage-Status als grundlegendes Feedback zur Generierung neuer Testfälle
- Nutzung von Schaltkreisstrukturinformationen (Kontroll-/Datenflussgraphen, Modulverbindungsgraphen) zur Testgenerierungsleitung
- RTL-Schreiben: Automatische Generierung von Hardware-Beschreibungssprachencodes
- Assertion-Generierung: Generierung von Verifikationsassertionen
- Fehlerkorrektur: Korrektur von Fehlern in Hardwaredesigns
- Funktionale Verifikation: Arbeiten zur Verifikation von Funktionsabdeckungspunkten von Zhang et al.
Im Gegensatz zu früheren Arbeiten, die sich auf hochrangige funktionale Testplanungsbeschreibungen konzentrierten, konzentriert sich dieses Papier auf grundlegendere Code-Coverage-Ziele und erfordert ein tiefes LLM-Verständnis der Verilog-Code-Logik.
- LLM kann einfache und mittelmäßig komplexe Verilog-Designs effektiv verstehen und gezielte Testeingaben generieren
- Angemessenes Prompt-Engineering (besonders Coverage-Erklärung) ist entscheidend für die LLM-Leistung
- Aktuelle LLM haben deutliche Einschränkungen bei der Verarbeitung großflächiger, komplexer Hardwaredesigns
- Größenbeschränkung: Bei Designs mit über 100 Codezeilen sinkt die LLM-Leistung erheblich
- Strukturverständnis: LLM haben Schwierigkeiten, die hochgradig strukturierte Natur von Verilog zu verstehen
- End-to-End-Anwendung: Die direkte Anwendung von LLM in industriellen Hardwaredesigns bleibt herausfordernd
- Verbesserter DUT Explainer: Bereitstellung umfassenderer hochrangiger Design-Abstraktionen und Verifikationsabsichten
- Multimodale Fusion: Kombination von LLM und Graph Neural Networks (GNN), wobei LLM für semantische Interpretation und GNN für Strukturinformationen verwendet werden
- Hierarchische Verarbeitung: Anleitung des LLM aus makroskopischer Perspektive zur Bewältigung von Testgenerierungsaufgaben
- Hohe Innovativität: Erstmalige Anwendung von LLM auf Hardwarecode-Coverage-Testgenerierung mit klarer Positionierung
- Systematischer Ansatz: Vorschlag eines vollständigen Frameworks mit mehreren Optimierungsmodulen
- Umfangreiche Experimente: Konstruktion einer mehrstufigen Benchmark-Suite mit angemessenem Experimentdesign
- Open-Source-Beitrag: Bereitstellung eines Open-Source-Frameworks zur Förderung der Feldentwicklung
- Grenzenerkundung: Klare Definition der Grenzen aktueller LLM-Fähigkeiten
- Größenbeschränkung: Nur bei relativ einfachen Designs wirksam, noch weit entfernt von praktischen Industrieanwendungen
- Benchmark-Einschränkung: Selbst erstellte Benchmarks könnten unvollständig sein, Vergleich mit industriellen Standard-Benchmarks fehlt
- Kostenanalyse: Detaillierter Vergleich der LLM-Aufrufskosten mit traditionellen Methoden fehlt
- Theoretische Analyse: Mangelnde tiefgreifende theoretische Analyse, warum LLM bei dieser Aufgabe wirksam sind
- Akademischer Wert: Eröffnet neue Anwendungsrichtungen für LLM im Hardwareverifikationsbereich
- Praktisches Potenzial: Hat praktischen Anwendungswert in Bildung und Verifikation mittlerer Designs
- Inspirationskraft: Bietet wertvolle Baselines und Ideen für nachfolgende Forschung
- Bildungsumgebung: Geeignet für automatisierte Testgenerierung in Hardwaredesign-Kursen
- Prototyp-Verifikation: Anwendbar für schnelle Verifikation in frühen Designphasen
- Designs mittlerer Größe: Praktischer Wert für Verilog-Module unter 100 Zeilen
- Hilfswerkzeug: Kann als Hilfswerkzeug für Verifikationsingenieure zur Verringerung der Arbeitsbelastung dienen
Das Papier zitiert 19 verwandte Arbeiten, die formale Verifikation, dynamische Verifikation, CDG-Methoden und LLM-Anwendungen im Hardwarebereich abdecken und eine solide theoretische Grundlage für die Forschung bieten.
Gesamtbewertung: Dies ist eine innovative Arbeit im Schnittstellenbereich zwischen LLM und Hardwareverifikation. Obwohl es bei der Skalierung noch Einschränkungen gibt, bietet es wertvolle Erkundungen und Grundlagen für die Feldentwicklung. Das Papier hat eine systematische Methodik, umfangreiche Experimente und klare Open-Source-Beiträge mit gutem akademischem Wert und Inspirationskraft.