DSy - Debugging Eingebetteter Systeme
Final Report Abstract
Eingebettete Systeme spielen inzwischen in nahezu allen Bereichen des täglichen Lebens eine große Rolle als versteckte Computer, die verschiedenste Geräte steuern. Dies reicht von Handys bis hin zu Autos. Beim Entwurf eingebetteter Systeme sind Debugging und Diagnose zentrale Schwierigkeiten, da bei Fehlersuche und -beseitigung ein hoher zeitlicher Aufwand entsteht. Konventionelle Debugger unterstützen im Wesentlichen die handgesteuerte Analyse eines Programmes durch schrittweise Ausführung und Datenintrospektion. Im Bereich Diagnose existieren Werkzeuge, die eine gewisse Fehlerlokalisierung auf Basis ausgewählter Fehlermodelle erlauben. Jenseits dieser unterstützten Analyse fehlt die weiterführende Automatisierung wie sie bei anderen Entwurfsschritten wie Kompilation oder Synthese selbstverständlich ist. Zielsetzung des Projektes war also eine stärkere Automatisierung im Debugging für Eingebettete Systeme bereitzustellen. Bei der Debugging-Automatisierung wird grundsätzlich zwischen der Fehlerursache (engl. fault) und dem beobachtbaren Fehlersymptom (engl. error) sowie einem eventuellen Versagen des Systems (engl. failure) unterschieden. In einem hierarchisch organisierten System kann dabei das Versagen eines Teilsystems auf höherer Ebene zunächst als Fehlerursache abstrahiert werden. Beim Debugging muss jedoch wiederum die Fehlerursache im versagenden Teilsystem gefunden werden. Außerdem wird meist zwischen der Lokalisierung der Fehlerursache, also dem Finden der fehlerhaften Stelle im System beziehungsweise in der Entwurfsbeschreibung des Systems, und deren Korrektur, also der Ersetzung der Fehlerursache durch eine Realisierung, die zu korrektem Verhalten führt, unterschieden. Hierdurch ist die Modellierung im Debugging-Bereich ein inhärent schweres Problem. Es kann eine Vielzahl sehr verschiedener möglicher Fehlerursachen vorliegen, die zum Beispiel (systematische) physikalische Probleme aus der Fertigung, Fehler in der funktionalen Beschreibung oder Passungsprobleme bei der Komposition von Komponenten umfassen. Je nach System kann das Symptom bei gleicher Fehlerursache sehr unterschiedlich sein und umgekehrt auch ein Fehlersymptom durch unterschiedliche Ursachen hervorgerufen werden. Eine genaue Modellierung von Ursachen und Symptomen erlaubt typischer Weise eine genauere Bestimmung der Ursache bei gegebenem Symptom. Im Rahmen des Projektes wurde gezeigt, wie unterschiedlichste Fehlerarten geeignet modelliert werden konnen. Mit dieser Modellierung ist eine automatische Lokalisierung der jeweiligen Ursachen auf Basis der Symptome möglich. Ebenso wurden erstmals unterschiedliche Paradigmen für automatische Debuggingverfahren verglichen, so dass deren Schwächen und Stärken theoretisch und praktisch gezeigt wurden. Ein Kernthema des Projektes waren aber die Debugging-Verfahren selbst, die während des Entwurfes eingesetzt werden. Hierbei wurde oft auf formale Beweismethoden zurückgegriffen, die vollautomatisch Problemlösungen berechnen können. Gleichzeitig wurde Wert darauf gelegt, dass die Debugging-Verfahren in einem gängigen Entwurfsablauf eingesetzt werden können. Dort werden meist sogenannte Testbenches eingesetzt, die zur Simulation dienen, und mit dem Ansatz für das Debugging genutzt werden können. Andererseits bietet die formale Modellierung für das Debugging die Grundlage einen Entwurf zu optimieren, so zum Beispiel für eine hohe Verlässlichkeit. Formale Beweismethoden konnen zwar vollautomatisch arbeiten, können dafür aber oft nur relativ kleine Systeme behandeln. Im Gegensatz dazu kann eine Analyse der Simulationsdaten einer Testbench auch größere Entwürfe betrachten und gleichzeitig das Debugging unterstützten. Wenn dann noch eine detaillierte Beschreibung des Systems gegen eine abstraktere, aber übersichtlichere Beschreibung gestellt wird, hilft das zusätzlich beim Debugging. In Ergänzung zum ursprünglichen Projektplan wurde der Bereich Design Understanding erfolgreich untersucht. Dabei wird ein Entwerfer darin unterstützt, unbekannten Quellcode leichter zu verstehen. Für Software ist dies bereits seit mehreren Jahrzehnten ein gängiges Problem; für Hardware dagegen sind diese Untersuchungen neu. Schließlich wurde die Diagnose untersucht, in deren Rahmen nach physikalischen Fehlern in einem bereits gefertigten System gesucht wird. Hierzu existieren bereits zahlreiche Ansätze, die aber bisher die Variationen, die während der Fertigung auftreten, ignorieren. Für die Diagnose müssen zunächst die Auswirkungen dieser Variationen modelliert werden, um auf diesen Modellen Fehlerursachen finden zu können. Insgesamt wurde das Thema Debugging umfassend untersucht. Es wurden Methoden, Modelle und Verfahren entworfen, die sowohl während der Entwurfsphase als auch nach der Fertigung eingesetzt werden können; es wurden Hardware und Software betrachtet; unterschiedliche Verfahren und Modellierungen wurden verglichen. Zudem wurde der neue Bereich des Design Understanding für Hardware erschlossen.
Publications
-
Automated design debugging in a testbench-based verification environment. In EUROMICRO Symposium on Digital System Design (DSD), pages 479–486, 2011
Mehdi Dehbashi, André Sülflow, and Goerschwin Fey
-
Model-based diagnosis versus error explanation. In ACM/IE-EE Int’l Conference on Formal Methods and Models for Codesign (MEMOCODE), pages 43–52, 2012
Heinz Riener and Goerschwin Fey
-
On modeling and evaluation of logic circuits under timing variations. In EUROMICRO Symposium on Digital System Design (DSD), pages 431–436, 2012
Mehdi Dehbashi, Goerschwin Fey, Kaushik Roy, and Anand Raghunathan
-
Automated design debugging in a testbench-based verification environment. Microprocessors and Microsystems (MICPRO), 37(2):206–217, 2013
Mehdi Dehbashi, André Sülflow, and Goerschwin Fey
-
Debug automation for logic circuits under timing variations. IEEE Design and Test of Computers (DT), 30(6):60–69, 2013
Mehdi Dehbashi and Goerschwin Fey
-
Improving fault tolerance utilizing hardwaresoftware-co-synthesis. In Design, Automation and Test in Europe (DATE), pages 939–942, 2013
Heinz Riener, Stefan Frehse, and Goerschwin Fey
-
A simulation based approach for automated feature localization. IEEE Transactions on Computer Aided Design of Circuits and Systems (TCAD), 33(12):1886–1899, 2014
Jan Malburg, Alexander Finder, and Goerschwin Fey
-
metaSMT: A unified interface to SMT-LIB2. In Forum on Specification and Design Languages (FDL), 2014
Heinz Riener, Mathias Soeken, Clemens Werther, Goerschwin Fey, and Rolf Drechsler
-
Transaction-based online debug for NoC-based multiprocessor SoCs. Microprocessors and Microsystems (MICPRO), 39(3):157–166, 2015
Mehdi Dehbashi and Goerschwin Fey
-
Debugging hardware designs using dynamic dependency graphs. Microprocessors and Microsystems (MICPRO), 47(Part B):347–359, 2016
Jan Malburg, Alexander Finder, and Goerschwin Fey
-
Towards making fault injection on abstract models a more accurate tool for predicting RT-level effects. In IEEE Annual Symposium on VLSI (ISVLSI), 2017
Tino Flenker, Jan Malburg, Görschwin Fey, Serhiy Avramenko, Massimo Violante, and Matteo Sonza Reorda