Statemate ist ein High-Level-Spezifikationswerkzeug, das u.a. bei der Software-
und Hardwareerstellung im Auto- und Flugzeugbau eingesetzt wird. An der
Abteilung Entwurf integrierter Schaltungen wurde es erfolgreich zur
Modellierung und Simulation des RISC-Prozessors TOOBSIE2 eingesetzt.
Die Implementierung des Systemverhaltens erfolgt nicht ausschließlich
durch Programmtext à la C oder Pascal, sondern durch zwei Arten von
hierarchischen, parallelen Charts.
Activity-Charts besitzen eine den Datenflußdiagrammen
ähnliche Semantik und beschreiben die Struktur eines Modells sowie die
Datenflüsse zwischen den Strukturkomponenten. Bild 1 zeigt eine
Strukturzerlegung eines einfachen Prozessors in die Komponenten Memory,
Controller, Alu, Rfile sowie einige Register. Die Pfeile geben den
Datenfluß zwischen den Komponenten an.
Bild 1 Ein Activity-Chart
Statecharts
stellen erweiterte Zustandsübergangsdiagramme dar und
spezifizieren das zeitabhängige Verhalten des Systems. Bild 2 zeigt die
Realisierung des Kontrollers für einen Prozessor. Statemate erlaubt die
Angabe komplexer Schaltbedingungen für die Transitionen.
Bild 2 Ein Statechart
Statemate-Modelle können entweder interaktiv oder durch
Simulationssteuerprogramme ausgeführt und getestet werden. Zusätzlich
gibt es Tools, die die Modelle auf Vollständigkeit und Korrektheit sowie
Eigenschaften wie z.B. Verklemmungsfreiheit untersuchen. Code-Generatoren
erlauben die Generierung von Verilog- oder C-Code.
Auf dem Gebiet des Systementwurfes mit grafischen Beschreibungssprachen sind einige Studien- und
Diplomarbeiten an Informatik- und Elektrotechnikstudenten zu vergeben.
Statemate- oder Speedchart-Kenntnisse sind keine Voraussetzung, schaden jedoch nicht.
3.1 Forschungsprojekt SCOT
Nach der Erstellung und dem Test der Statechart-Modelle kann mit
speziellen Code-Generatoren eine C-Implementierung
abgeleitet werden. Dies ist wünschenswert, da auf diese Weise sehr
schnell eine verhaltensgleiche Implementierung entsteht.
Das entstehende Programm kann auf
handelsüblichen Mikroprozessoren ausgeführt werden.
Im Forschungsprojekt SCOT (Statechart Compilation for
Optimized reactionTime) haben wir einen optimierenden
Code-Generator entwickelt, der die Reaktionszeit deutlich verkürzt.
Bild 3 zeigt die Umsetzung eines
Statechart-Modells in eine Software-Realisierung (C-Programm). Das Statechart-Modell wird von einem Parser in ein Zwischenformat überführt, auf dem der Optimierer leichter arbeiten kann. Er bestimmt die
Datenabhängigkeiten, schätzt die Knotenlaufzeiten und
führt in Abhängigkeit der Laufzeiten Optimierungen
durch. Dabei entsteht ein weiteres Zwischenformat, das
in C-Code abgebildet wird. Der C-Code kann dann mit Hilfe handelsüblicher C-Compiler für das entsprechende Zielsystem übersetzt werden.
Bild 3 Vom Statechart-Modell zum C-Programm mit SCOT
Zu vergebende Arbeiten:
Optimierte Umsetzung von Statechart-Modellen in effiziente Software-Implementierungen
Wir haben das erste Zwischenformat (siehe Bild 3) weiterentwickelt,
so daß mehr Optimierungsfreiraum entsteht. Der vorhandene
Optimierer soll soweit adaptiert werden, daß
die neuen Freiheitsgrade in die Optimierung einbezogen
werden.
Der Optimierer verfügt über eine relativ simple Optimierungsstrategie.
Es sollen daher fortgeschrittene Verfahren wie Simulated-Annealing oder
Branch-and-Bound-Algorithmen implementiert werden, die zu einem besseren
Ergebnis führen. Wir können uns auch gern auf
andere Verfahren einigen.
Erstellung von Statechart-Modellen und Untersuchung ihrer optimierten Umsetzung
Der SCOT-Code-Generator kann die meisten, jedoch nicht alle Statechart-Elemente
transformieren.
Da er nun fertiggestellt ist, soll die
Optimierung mit realistischen, größeren Modellen getestet werden.
Dazu müssen einige Statechart-Modelle erstellt werden,
die diejenigen Statechart-Elemente enthalten, die der
Codegenerator verarbeiten kann. Die Auswahl der
Modelle wird mit Euch abgestimmt; wenn Ihr schon
immer mal irgendein (sinnvolles) Modell erstellen wolltet: nur zu!
Die Optimierung der Modelle soll ausgewertet werden.
Entscheidend dabei ist, welche Modellteile optimiert
wurden oder warum keine Optimierung erfolgen konnte.
Implementierung einer Komponente zur Laufzeit-Ergebnisüberprüfung in einen Code-Generator
Jedes größere Softwareprodukt enthält Fehler. Um diese
Fehler im SCOT-Code-Generator zu finden, sollen die
Ausgaben des generierten C-Programms mit denen des
Statechart-Modells verglichen werden. Dies ist automatisiert möglich,
da die Statechart-Ausführungsergebnisse
komfortabel über eine Schnittstelle abgefragt werden
können. Dazu soll ein Modul entwickelt und in den C-Code-Generator
integriert werden, das in das erzeugte C-Programm Schnittstellen-Abfragen für die Variablen einbaut
und die Ergebnisse mit den C-Variablen vergleicht. Das C-Programm wird also parallel zu der Statechart-Simulation
ausgeführt, wobei beide Prozesse ihre Variablenwerte nach jedem Schritt vergleichen.
3.2 Forschungsprojekt Patroclos
Wir entwickeln zusammen mit dem IBR in einem größeren Projekt ein flexibles Hochleistungskommunikationssystem. Dazu wollen wir parallele, hierarchische Automaten mit dem CAD-Werkzeug Speedcharts modellieren. Aus den Modellen kann dann auf Knopfdruck ein Chip erzeugt werden.
Zu vergebende Arbeiten:
Echtzeit-Darstellung und Überwachung eines Chipzustandes
Aus einem Statechart kann mit einem Syntheseprogramm
ein konfigurierbarer Schaltkreis (FPGA) automatisiert
abgeleitet werden, welcher in einer Schaltung mit anderen Bausteinen Daten austauscht (Bild 4). Möchte
der Chart-Modellierer zur Laufzeit wissen, ob sich der
Chip wie gewünscht verhält, muß der interne Zustand
des FPGAs (Variablenwerte) über ein spezielles Interface
ausgelesen werden. Aus den Daten wird der Zustand des
Statecharts rekonstruiert, auf dessen Basis der Modellierer
bewerten kann, ob sich sein Modell wie gewünscht
verhält.
Es soll ein Programm entwickelt werden, das aus den
ausgelesenen Daten den Zustand des Statecharts rekonstruiert. Dazu müssen
die ausgelesenen Daten analysiert
und ggf. modifiziert werden. Die Funktionsfähigkeit
wird anhand eines realistischen Statechart-Modells zur
Hochleistungskommunikation getestet.
Bild 4 In-Circuit-Debugging von Statecharts
Parallele Kommunikationsautomaten mit Speedcharts
Speedcharts ist ein State-of-the-Art Modellierungswerkzeug, das erfolgreich in der Industrie eingesetzt wird. Die Modellierung erfolgt mit parallelen, hierarchischen Speedcharts. Bild 5 zeigt einen Datenempfänger in Speedcharts. Der Empfänger wartet im Zustand IDLE, bis die Übertragung beginnt (Bedingung GO=1). Danach liest er in jedem Schritt einen Wert, falls STROBE=1 gilt. Dabei wird als Aktion die Variable LEN erhöht. TRANSFER wird verlassen, wenn GO=0 ist. Die Zahlen geben die Transitionsprioritäten an.
Bild 5 Ein Datenempfänger in Speedcharts
Wir suchen mehrere Studien- und Diplomarbeiter, die die Kommunikationsautomaten mit Speedcharts modellieren und testen. Die Automaten sind bereits in einer grafischen Beschreibungssprache beschrieben worden.
Wie man sieht, fassen wir den Lötkolben nur in Ausnahmefällen an. Ich habe absichtlich keine Unterscheidung in Studien- und Diplomarbeiten vorgenommen. Studienarbeiten sind vom Umfang geringer als Diplomarbeiten und daher wird das Gebiet entsprechend verkleinert. Selbstverständlich integrieren wir bei der genauen Themengestaltung Eure Wünsche und Ideen.
Die Liste enthält nicht alle offenen Arbeiten. Wenn Ihr Interesse habt und in der Nähe seid, schaut doch einfach mal (auch außerhalb meiner Sprechstunde) vorbei und informiert Euch über zu vergebende Arbeiten oder unsere Forschungsgebiete (Gaußstraße 11, Raum 008).