Eckdaten

Da die Komplexität der SoCs zunimmt, gleichzeitig aber die Debug-Methodik damit nicht Schritt halten kann, entwickelt sich das Debugging zu einer immer größeren Herausforderung. Mit der neuen Indago-Debug-Plattform lässt sich nun der Zeitaufwand zum Finden der Fehler um die Hälfte reduzieren. Diese Technologie hilft, Spekulationen und unnötige Iterationen im Debug-Prozess zu vermeiden.

Durch die heutzutage immer größeren und komplexeren Designs werden durchschnittlich 50 % des gesamten Verifikationsaufwands für das Debugging einschließlich Fehlersichtung und Analyse des Simulations-Outputs aufgewendet. Da die Debug-Methodik bisher nicht Schritt halten konnte, nutzen die meisten Verifikationsingenieure noch immer denselben konventionellen Prozess (Bild 1), der seit mehr als 20 Jahren zum Einsatz kommt. Häufig analysieren sie RTL-Signale (Register-Transfer Level) und Meldungen in den Protokolldateien in einem Post-Prozess. Allerdings erfordert dieser Ansatz in der Regel mehrere Debug-Iterationen. Basierend auf automatisierter Ursachenanalyse (RCA, Root-Cause Analysis) und Big-Data-Erfassung erhöht die in diesem Artikel vorgestellte Debug-Methodik die Effizienz der Fehlersuche erheblich.


Bild 1: Ein konventioneller Debug-Flow erfordert mehrere Iterationen, um jedes Mal mehr Daten zu sammeln.

Bild 1: Ein konventioneller Debug-Flow erfordert mehrere Iterationen, um jedes Mal mehr Daten zu sammeln.Cadence

Was ist die Debug-Effizienz?

Bei der Ermittlung der Debug-Effizienz gilt es, folgende Aspekte zu beachten:

  • Zyklen des Verifikationswerkzeugs: Simulationsdurchsatz auf einem bestimmten Server.
  • Ingenieurszyklen: Zeit, die ein Ingenieur für die Analyse der Simulationsdaten und die Fehlerisolation benötigt.

Da die Designkomplexität weiter zunimmt, geht die Leistung des Verifikationswerkzeugs zu einem geringeren Teil in die gesamte Debug-Leistung ein. Simulationen lassen sich neben anderen täglichen Aufgaben automatisiert durchführen. Die Analyse erfordert dagegen die volle Aufmerksamkeit und entwickelt sich folglich zunehmend zum Engpass, den man durch eine Erhöhung der Debug-Effizienz ausgleichen muss. Wichtigstes Ziel im Hinblick auf eine Erhöhung der Debug-Leistung ist deshalb eine möglichst effiziente Nutzung der Ingenieurszyklen.

Ursachenanalyse heute

Ein Ingenieur führt heute normalerweise eine Simulation aus und die Testbench ermittelt das Fehlverhalten des Designs. Aktuell verfügbare Debug-Techniken identifizieren mögliche Fehlerursachen wie beispielsweise Fehlermeldungen (printf), Signalaufzeichnungen, Breakpoints / Einzelschritt-Ausführung.

Um diese Techniken zu nutzen, ist es erforderlich, die Simulation mehrfach zu wiederholen. Oftmals drucken Anwender zu wenige Informationen aus oder vergessen es, relevante Signale aufzuzeichnen. Diese Iterationszyklen müssen Ingenieure unter Umständen mehrere Male wiederholen, bis genug Informationen gesammelt sind, um den Fehler zu finden. In einem normalen Szenario kann jede Iteration einige Minuten bis Stunden dauern.

Erfassung und Analyse großer Datenmengen

Die Bezeichnung Big Data bezieht sich allgemein auf eine weitgehend passive Erfassung eines umfassenden Satzes von Datenpunkten, der eine leistungsfähige und detaillierte Analyse zu sehr niedrigen Kosten ermöglicht. Bei der Verifikation lassen sich mit einem Big-Data-Ansatz die kompletten Debug-Daten (Meldungen, Signale, Ausführungsreihenfolge des Quellcodes, Call Stack, aktive Threads, und so weiter) auf einmal betrachten. Damit besteht die Möglichkeit, die Simulation immer wieder erneut abzuspielen und zu analysieren. Dadurch können Verifikationsingenieure

  • tiefergehenden Fragen nachgehen, was wirklich während des Simulationslaufes geschehen ist,
  • die Kausalität untersuchen und
  • mögliche Korrelationen identifizieren, die bei einem messungsbasierenden Ansatz unbemerkt geblieben wären.
Bild 2: Ein Big-Data-Flow zeichnet die vollständigen Daten für die komplette Simulation in einem Durchlauf auf.

Bild 2: Ein Big-Data-Flow zeichnet die vollständigen Daten für die komplette Simulation in einem Durchlauf auf. Cadence

Beim konventionellen Ansatz ist es erforderlich, immer wieder zwischen der Protokolldatei und der Signalanalyse hin- und herzuspringen. Sind nicht ausreichend Debug-Informationen verfügbar, müssen Ingenieure außerdem den Quellcode bearbeiten, um weitere Print-Befehle hinzuzufügen, und dann die Simulation erneut ausführen. Sind die kompletten aufgezeichneten Informationen für die Analyse dagegen über eine einzige Datenbasis verfügbar, ergibt sich ein deutlicher Zeitgewinn (Bild 2). Anstatt eines Kontextwechsels ist somit ein nahtloser Übergang vom Debug der Testbench zum RTL-Code möglich, wobei jeweils gleichwertige Details zur Verfügung stehen. Mit diesem Ansatz lassen sich Fehler in wenigen Minuten, anstatt in Stunden oder gar Tagen finden. Durch die reduzierte Anzahl der Debug-Iterationen lassen sich zudem die vorhandenen Simulationslizenzen besser nutzen. Anstatt viele Debug-Iterationen auszuführen, stehen die Lizenzen für die Suche neuer Fehler durch weitere Regressionsläufe zur Verfügung.

Integrierte, einheitliche Plattform zur Aufdeckung grundlegender Designfehler

Die neue Indago Debug Platform von Cadence basiert auf einer patentierten, automatisierten RCA-Technologie und Big-Data-Erfassungstechniken. Durch Erhöhung des Abstraktionsgrades ermöglicht sie eine Beschleunigung des Debugvorgangs bis zur doppelten Geschwindigkeit gegenüber konventionellen Methoden. Die Plattform unterstützt das Debugging von der IP- bis zur SoC-Ebene. Sie arbeitet mit Verifikations-Engines von Cadence und anderen Anbietern zusammen und stellt eine einheitliche, konsistente Debug-Plattform für RTL, Testbench, Verifikations-IP und Embedded-Software-Debug zur Verfügung. Anlaufzeiten beim Wechsel zwischen verschiedenen Debug-Aspekten innerhalb der jeweiligen Umgebung sind minimal, da die Plattform einheitlich und synchronisiert ist. Cadence liefert die Plattform mit drei integrierten Apps:

  • Indago Debug Analyzer App, die RCA von der eTestbench (IEEE 1647) über System-C (IEEE 1666) auf System-Verilog (IEEE 1800) erweitert und interaktive Post-Prozess-Funktionen zur Verfügung stellt.
  • Indago Embedded Software Debug App, die das Quellcode-Debugging von Software und Hardware synchronisiert, um auch Fehler in Embedded-Softwareanwendungen zu finden. Diese App wurde für die Simulationsplattform Cadence Incisive und die Emulationsplattform Cadence Palladium XP optimiert.
  • Indago Protocol Debug App, die ein intuitives Debugging durch Visualisierung fortschrittlicher Protokolle wie DDR4, ARM AMBA AXI und ACE auf Basis der Verifikations-IP von Cadence (VIP) ermöglicht.

Nach Meinung vieler Ingenieure ist die natürlichste Weise des Debuggings, vom Fehler aus rückwärts zu arbeiten. Im Gegensatz zu anderen aktuellen Debug-Lösungen, die auf RTL für RCA beschränkt sind, unterstützt die Indago Debug Platform Root-Cause-Analyse sowohl auf RTL- als auch auf Testbench-Ebene. Dadurch ist das Debugging eines Fehlers in der System-Verilog- oder eTestbench genauso einfach möglich wie im RTL-Design.

Wenn zum Beispiel eine UVM-Fehlermeldung während der Simulation auftritt, ist es interessant, welche Bedingungen zu dieser Fehlermeldung geführt haben oder warum die Variablen innerhalb der Fehlermeldung die jeweiligen Werte angenommen haben. Bei der Big-Data-Erfassung und -Analyse nutzt die Indago Debug Platform leistungsfähige Algorithmen, um die ausgewählten Debug-Punkte zu analysieren. An jedem Punkt identifiziert die Plattform kausale Beziehungen für typische Debug-Fragen und präsentiert sie über ein intuitives RCA-GUI. Mit der RCA-Komponente können sich Anwender intuitiv durch das vollständige Fehlerszenario klicken, nahtlos in den Testbench- oder RTL-Code eintauchen und somit schnell die Fehlerursache diagnostizieren. Dabei wird jede in der RCA-Komponente getroffene Debug-Entscheidung in einem Untersuchungsbaum gespeichert, sodass sich der Debug-Weg jederzeit zurückverfolgen lässt.

Vollständige Analyse

Da die Indago Debug Platform die gesamte Ausführungsreihenfolge des Quellcodes aufzeichnet, ist es möglich, an jedem Punkt im RCA-Prozess den vollständigen Call-Stack, die aktiven Threads und die lokalen Variablenwerte zu untersuchen sowie Einzelschritte vorwärts oder rückwärts auszuführen, um die Simulationsergebnisse erneut abzuspielen. Mit den RCA-Tools der Plattform verstehen Anwender das vollständige Szenario besser und können Fehler viel schneller diagnostizieren als mit konventionellen Ansätzen. Sobald die grundlegenden Fehler oder Ursachen gefunden sind, können Anwender das Design modifizieren und anschließend die Verifikations-Iteration ein einziges Mal wiederholen.