Wenn ein SoC-Hersteller seine Chips von Anfang an so gestaltet, dass sie „einfach und leicht debugbar“ sind, erspart er seinen Kunden in späteren Phasen des Entwicklungsprozesses viele potenzielle Probleme. Ein aus Debugger-Sicht optimal gestalteter Chip bedeutet für den Kunden weniger Aufwand, eine schnellere Markteinführung und vor allem geringere Entwicklungskosten sowie für den Chip-Hersteller einen höheren Absatz, denn jedes fehlgeschlagene Projekt führt zu reduzierten Stückzahlen.
Ein aus Debug-Sicht optimal gestalteter Chip bedeutet für Abnehmer weniger Aufwand, schnellere Markteinführung – und vor allem geringere Entwicklungskosten.
(Bild: Lauterbach)
Ein System-on-Chip (SoC) benötigt Embedded Software, um den effizienten Betrieb und die Koordination seiner integrierten Komponenten zu ermöglichen. Die Software steuert Funktionen, optimiert die Leistung und sorgt für Energieeffizienz, so dass das SoC komplexe Aufgaben bewältigen und spezifische Anforderungen erfüllen kann. Die Integration von Software ist somit ein wichtiger Schritt bei der Entwicklung und Produktion von Embedded-Systemen. Bei der Erstellungdes Codes können jedoch Fehler auftreten, welche die Entwickler mit großem Aufwand, etwa durch Debugging, finden und beseitigen müssen.
Das Debugging eines SoC ist entscheidend für die Beseitigung von Fehlern, die Optimierung der Leistung und die Gewährleistung von Funktionalität und Sicherheit in verschiedenen Anwendungsszenarien. So ermöglicht das Debugging beispielsweise die Identifizierung und Beseitigung von Sicherheitslücken, die durch Design- oder Implementierungsfehler verursacht wurden.
Andere Anwendungsfälle wie Timing- und Anforderungsanalysen - z. B. zur Bewertung der längsten denkbaren Ausführungszeiten - oder Code-Abdeckungsmessungen für funktionale Sicherheitszertifizierungen sind ebenfalls unabdingbar mit Debug-Tools und deren Erweiterungen für Echtzeit-Trace verbunden.
Laut einer Studie der Judge Business School der University of Cambridge [1], UK, verbringen Entwickler fast 50 Prozent ihrer Zeit mit dem Debugging, während der Rest der Zeit für andere Tätigkeiten wie das Schreiben von Code verwendet wird. Phaedrus behauptet, dass bei den meisten Projekten 90 % des Aufwandes auf Debugging und Optimierung entfallen. In den frühen 2000er Jahren führte Nokia eine Studie über 200 Projekte durch und stellte fest, dass durch die Verwendung von Trace im Durchschnitt 75 % der für die Fehlersuche benötigten Zeit eingespart werden konnte. Dies beweist, wie wichtig Debugging für das Schreiben von fehlerfreiem Code und die Entwicklung fehlerfreier Produkte ist.
Um SoCs optimal für das Debugging vorzubereiten, ist eine frühzeitige Zusammenarbeit zwischen Tool-Lieferanten und SoC-Designern unerlässlich. Die Anforderungen an die Debug-Tools ändern sich je nach den Eigenschaften des SoCs - und der Benutzerfreundlichkeit des SoCs, die der Hersteller im Voraus festlegt. Nur eine enge Zusammenarbeit mit den SoC-Herstellern während des Entwicklungsprozesses stellt sicher, dass sie alle Anforderungen an ein modernes und effizientes Debugging erfüllen. Andererseits bieten gründliche Debugging-Prozesse den SoC-Herstellern zahlreiche Vorteile: Senkung der Herstellungskosten, Verkürzung der Markteinführungszeit, Verbesserung der Produktqualität und -sicherheit.
Die Bedeutung von Debugging und Tracing für Time-to-Market
SoC-Hersteller integrieren verschiedene Funktionseinheiten (IP-Blöcke) in ein SoC-Design. Sie müssen sicherstellen, dass alle Komponenten reibungslos zusammenarbeiten und die Leistungsanforderungen des Endsystems erfüllen. Anbieter von geistigem Eigentum (IP) hingegen entwickeln und lizenzieren spezialisierte IP-Blöcke (Intellectual Property, IP). Dabei handelt es sich um vorgefertigte und getestete Designs, die SoC-Anbieter in ihre Chips integrieren können. Damit ein SoC effektiv gedebuggt werden kann, muss es bestimmte Anforderungen erfüllen. Diese Anforderungen beziehen sich sowohl auf die Hardware- als auch auf die Software-Architektur des SoCs. Er muss über spezielle Schnittstellen und Debugging-Ports verfügen, die den Zugriff auf interne Komponenten und Signale ermöglichen.
Debug-Funktionen auf einem SoC sind mit zusätzlichen Kosten verbunden, einschließlich Siliziumfläche und Fertigungsressourcen. Die Vorteile, die sie bieten, machen diese Investition jedoch sowohl für Halbleiteranbieter als auch für ihre Kunden lohnenswert. Schnelleres Debugging verkürzt die Entwicklungszeit und beschleunigt die Markteinführung. Integrierte Debugging-Funktionen sind für die Aufrechterhaltung einer gleichbleibenden Qualität unerlässlich, insbesondere in sicherheitskritischen Branchen wie der Automobilindustrie, bei Luft- und Raumfahrtanwendungen wie Flugzeugen und Satelliten, in der Medizintechnik, der Robotik, bei Cloud-Diensten und im Internet der Dinge, wo eine hohe Zuverlässigkeit entscheidend ist. Moderne Debugging-Lösungen beinhalten auch Sicherheitsfunktionen, um unbefugten Zugriff zu verhindern und Angriffe auf das System zu minimieren. Dadurch wird das SoC im Feld geschützt und das Vertrauen der Kunden in die Sicherheit des Produkts gestärkt.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.
Debugging ist der Prozess, bei dem Entwickler gezielt nach Fehlern oder Problemen im Code oder in der Hardware eines Systems suchen und diese beheben, indem sie den Status und die Werte von Variablen analysieren oder die Programmausführung an bestimmten Punkten anhalten (z. B. mit Haltepunkten).
Tracing hingegen ist die kontinuierliche Aufzeichnung der Ausführungssequenz eines Programms oder der Datenflüsse im SoC, um die Systemleistung zu analysieren oder die Ursachen komplexer Probleme zu verstehen. Während das Debugging oft interaktiv und selektiv durchgeführt wird, bietet Tracing eine umfassendere und zeitlich vollständige Sicht auf die Prozesse im System, wodurch das Laufzeitverhalten mehrerer IPs gleichzeitig überwacht werden kann. Ein SoC sollte daher in der Lage sein, die Trace-Informationen zu erfassen, die zur Analyse der Programmausführung erforderlich sind. Dazu gehören:
Programmablaufverfolgung: Zeichnet den Fortschritt der Programmausführung auf, um zu sehen, welche Anweisungen vom Prozessor ausgeführt wurden und um zu überwachen, welche Entscheidungen in einer Verzweigung getroffen wurden und, was vielleicht noch wichtiger ist, nicht getroffen wurden.
Daten-Trace: Die Datenverfolgung bezieht sich auf die Verfolgung und Aufzeichnung von Lade- und Speicheroperationen während der Programmausführung. Es gibt Aufschluss über die Datenflüsse innerhalb eines SoC, insbesondere über Lese- und Schreibvorgänge im Speicher. Daten-Trace benötigt in der Regel eine hohe Bandbreite und ist daher in den meisten Anwendungsprozessoren oder komplexen SoCs nicht implementiert.
System-Trace: Überträgt Trace-Daten auf Systemebene von embedded-Systemen und ermöglicht die Echtzeitüberwachung von Prozessoraktivitäten, Speicherzugriffen und Interaktionen zwischen Komponenten.
Bus-Trace: Bus-Trace bezieht sich auf die Erfassung und Aufzeichnung des Datenverkehrs, der über interne Kommunikationsbusse im SoC läuft.
Event-Trace: Zeichnet wichtige Ereignisse im System auf, wie z. B. Interrupts, Kontextwechsel oder Systemaufrufe. Ob ein Event-Trace verfügbar ist, hängt von der jeweiligen IP ab.
Trace-Visualisierung in der TRACE32-PowerView-Software.
(Bild: Lauterbach)
Viele moderne Chips verfügen über einen Trace-Port oder einen Embedded Trace Buffer, der in der Lage ist, in Echtzeit nicht-intrusive Informationen über den Programmfluss und Datenoperationen zu liefern. Damit lässt sich herausfinden, wo sich der Code befunden hat, wie lange die Dinge gedauert haben, um Taskwechsel und Unterbrechungen zu analysieren und Berichte zur Codeabdeckung zu erstellen. Wenn man sich das traditionelle Debugging als eine Reihe von Schnappschüssen vorstellt, dann ist das trace-basierte Debugging ein Video mit Zeitstempeln. Entwickler verwenden Zeitstempel, um die Latenzzeit zwischen Ereignissen zu messen und Engpässe oder Verzögerungen zu identifizieren. In Multicore- oder verteilten Systemen ermöglichen Zeitstempel die Synchronisierung verschiedener Komponenten, um sicherzustellen, dass die Aktionen zeitlich korrekt ausgeführt werden.
Wie entwirft man debug-freundliche SoCs?
Ein SoC muss bestimmte Anforderungen erfüllen, um optimal für das Debugging vorbereitet zu sein. Dazu gehören integrierte Debug-Schnittstellen, spezielle Hardware-Module zur Überwachung und Steuerung des SoCs, Trace-Mechanismen und die Unterstützung durch die Software-Toolchain. Diese Funktionen ermöglichen es den Entwicklern, Fehler zu identifizieren, Leistungsprobleme zu analysieren und letztendlich ein qualitativ hochwertiges und zuverlässiges Produkt zu liefern.
Zweck des SoC: Vor Beginn der Entwicklung sollte klar sein, für welche Anwendungen das entsprechende SoC entworfen werden soll. Denn davon hängt ab, welche Peripheriekomponenten auf dem SoC untergebracht werden sollen. Mit zunehmender Anzahl der Cores müssen beispielsweise Debugging-Lösungen so gestaltet werden, dass sie auch bei großen Core-Zahlen effizient arbeiten. Dies gilt zum Beispiel für parallele Debugging-Sitzungen oder die detaillierte Analyse von Zuständen und Wechselwirkungen. SoC-Hersteller sollten auch überlegen, wie bestimmte Modi und Szenarien gedebuggt werden können.
Bei Multi-Core-SoCs muss die Trace-Lösung in der Lage sein, Daten von mehreren Cores und Subsystemen zu synchronisieren, um eine kohärente Analyse zu ermöglichen. Die Trace-Puffer müssen ausreichend dimensioniert sein, um Datenverluste während der Datenerfassung zu vermeiden. Die kontinuierliche Aufzeichnung ist besonders wichtig für Echtzeitanalysen.
CPU-Anforderungen: Der Prozessor muss Debug-Funktionen integrieren, z. B. Hardware-Breakpoints, die es ermöglichen, die Ausführung des Programms an einem bestimmten Punkt zu unterbrechen. Watchpoints überwachen Speicherzugriffe und halten den Programmablauf an, wenn auf bestimmte Speicheradressen zugegriffen wird. Benchmark- und Ereigniszähler können entweder unabhängig sein oder in das Trace-Subsystem einfließen. Breakpoints und Watchpoints sind Teil der mitgelieferten IP. Darüber hinaus muss der Prozessor in der Lage sein, Anweisungen schrittweise auszuführen und den Status von Unterbrechungen und deren Auswirkungen auf die Systemleistung mit der Unterbrechungsüberwachung zu überwachen. Kein Code sollte ohne Kontrolle durch den Benutzer ausgeführt werden. Das Debugging sollte daher ab der ersten Anweisung nach dem Reset möglich sein. Dies ist oft eine wichtige Voraussetzung, z. B. für Anwendungen im Automobilbereich, wo eine Fehlersuche nach Reset fast immer erforderlich ist.
Multicore-Debug & Trace-Funktionen: Multicore-SoCs stellen höhere Anforderungen an das Debugging als Single-Core-Architekturen, insbesondere aufgrund der gleichzeitigen Ausführung mehrerer Cores und der Interaktionen zwischen ihnen. Effektives Debugging in solchen Architekturen erfordert Cross-Triggering zwischen den Cores, erweiterte Überwachungsfunktionen für die Inter-Core-Kommunikation, spezielle Mechanismen zur Erkennung von Synchronisationsproblemen (z. B. Race Conditions und Deadlocks) sowie umfassende Traces wie System-Tracing (z. B. über MIPI STP) und Performance-Analysen, um Timing- und Performance-Probleme zu identifizieren. Beim Debugging oder Tracing kann es erforderlich sein, dass ein Ereignis, das auf einem Kern auftritt, eine Aktion auf einem anderen Kern oder einer anderen Hardwareeinheit auslöst. Cross-Triggering ermöglicht diese Interaktion durch den Austausch von Signalen oder Triggern zwischen den Kernen.
Standardisierte Schnittstellen wie das Debug-over-I3C der MIPI Alliance können die Integration von Trace- und Debug-Funktionalitäten enorm beschleunigen.
(Bild: MIPI Alliance)
Debugging-Schnittstelle und Standards: Low-Level-Schnittstellen: Verschiedene Organisationen haben Debug- und Trace-Standards definiert, damit nicht jeder SoC-Hersteller eine eigene Lösung entwickeln muss.
Die Debug-Schnittstellen JTAG (Joint Test Action Group; IEEE 1149.1) und Compact JTAG (IEEE 1149.7) bieten ein umfassendes Ökosystem für Test, Debugging und Programmierung. Ein weiteres Beispiel ist die RISC-V Foundation, die Debug- und Trace-Spezifikationen für RISC-V-basierte CPUs definiert hat.
Ein weiteres Beispiel ist die MIPI Alliance [2], die standardisierte Schnittstellen für das Debugging wie Debug Over I3C oder Debug Over USB [3] gefördert hat. Die MIPI Alliance definiert auch mehrere Schnittstellen für Tracing, wie Debug Over USB™ oder Debug Over IPSockets [4]. MIPI bietet eine mehrschichtige Debug-Lösung.
Arm CoreSight Debug und Trace: Arm hat sein eigenes Debug- und Trace-Ökosystem speziell für die effiziente Überwachung, Analyse und Diagnose von SoCs mit Arm-Prozessoren entwickelt. Es bietet eine umfassende Infrastruktur, die Entwicklern einen tiefen Einblick in die Funktionsweise eines Systems ermöglicht.
Open Source: Bei der Verwendung von Open-Source-Tools zum Beispiel für das Debugging von RISC-V SoCs gibt es einige wichtige Punkte zu beachten. Diese betreffen sowohl rechtliche und sicherheitstechnische Aspekte als auch technische und organisatorische Herausforderungen, darunter Sicherheit, die Wartung, Support und Garantie, die Anpassungsfähigkeit und Flexibilität, die Integration in bestehende Toolchains, langfristige Skalierbarkeit und rechtliche und haftungsrechtliche sowie kommerzielle Aspekte. Open-Source-Tools bieten Flexibilität, erfordern aber oft zusätzliche Integration und Wartung. Es ist wichtig, diese Tools verantwortungsbewusst zu nutzen und ihre langfristige Nachhaltigkeit zu gewährleisten, indem man sich aktiv an der Community beteiligt und Updates sorgfältig überwacht. Ein Unternehmen, das Open Source einsetzt, muss immer noch Ressourcen aufwenden, um die Open-Source-Lösung zu entwickeln und zu pflegen.
Im zweiten und letzten Teil dieses Artikels werden weitere wichtige Überlegungen für Debug-freundliche SoC-Designs angestellt, bevor dann das perfekte SoC für optimale Debug-Unterstützung skizziert werden wird. (sg)