(AP1) Trace- und Analyse-Infrastruktur

Die Erfassung und die Analyse von Systemzuständen sind zwei miteinander eng verknüpfte Prozesse. Stand der Technik ist hier die Instrumentierung des Codes sowie die Nutzung von „Embedded Trace“ Strukturen.

Bei der Instrumentierung wird in den funktionalen Programmcode zusätzlicher Code eingefügt, welcher zur Beobachtung des Programms dient. Dabei führt die Instrumentierung des Codes zu Leistungseinbußen und zu einer Änderung des zeitlichen Verhaltens im Programmablauf. Das Entfernen einer Instrumentierung für die auszuliefernde Programmversion würde das Verhalten des Programms verändern, d.h. die mittels Instrumentierung erlangten Testergebnisse sind nicht mehr uneingeschränkt gültig. Genau dieser Weg wird aber in vielen Fällen bei Anwendungen mit hohen Stückzahlen wie z.B. im Automotive-Bereich verfolgt. Um hier den aus der Instrumentierung resultierenden Overhead zu vermeiden, wird das Risiko eines abweichenden Verhaltens zwischen der getesteten und der ausgelieferten Programmversion in Kauf genommen.

Die Hersteller von Mikroprozessoren haben auf die Forderung nach einer effizienten und flexiblen Beobachtbarkeit von SoCs reagiert und statten viele Mikrocontroller / Mikroprozessoren mit entsprechender Funktionalität aus. Dabei werden interne Systemzustände über einen Trace-Port stark komprimiert ausgegeben. Diese Trace-Ausgabe kann über eine integrierte Trigger-Logik gesteuert werden, wobei aufgrund der beschränkten Ressourcen auf dem Chip diese Logik für viele Beobachtungsaufgaben nicht ausreichend ist. Stand der Technik ist hier die Aufzeichnung der ausgegebenen Trace-Daten und spätere Offline-Analyse. Dies hat den entscheidenden Nachteil, dass sehr große Datenmengen anfallen und oftmals keine zeitnahe Reaktion beim Auftreten vorab spezifizierter Systemzustände erfolgen kann.

Projektziel

Das Projekt CONIRAS beschäftigt sich mit der Nutzung von Trace-Daten zur Laufzeit-Analyse und -Verifikation. Im Gegensatz zu herkömmlichen Methoden, die die Daten offline — also nach Beendigung des Programms — analysieren, sollen in diesem Projekt die Daten online — also zur Laufzeit — ausgewertet werden. Dadurch könnten die Einschränkungen der herkömmlichen Methoden durch Akkumulation, Filterung und Komprimierung der anfallenden Trace-Daten überwunden werden.
Dies ist besonders für aktuelle Multicore-Prozessoren interessant. Hier können nicht nur mit größerer Wahrscheinlichkeit Race Conditions auftreten, es fallen auch erheblich mehr Daten an.

FPGA_internal

AP1 stellt dabei die Basis dar, indem die komprimierte Trace-Ausgabe interpretiert und in einen konfigurierbaren Ereignis-Strom umgewandelt wird, auf dem die nachgelagerten Analysen (AP2 und AP3) aufbauen.