UnivIS
Informationssystem der Friedrich-Alexander-Universität Erlangen-Nürnberg © Config eG 
FAU Logo
  Sammlung/Stundenplan    Modulbelegung Home  |  Rechtliches  |  Kontakt  |  Hilfe    
Suche:       
 Lehr-
veranstaltungen
   Personen/
Einrichtungen
   Räume   Forschungs-
bericht
   Publi-
kationen
   Internat.
Kontakte
   Examens-
arbeiten
   Telefon &
E-Mail
 
 
 Darstellung
 
Druckansicht

 
 
Einrichtungen >> Technische Fakultät (TF) >> Department Informatik (INF) >> Lehrstuhl für Informatik 2 (Programmiersysteme) >>

Gesamtsystemsimulation für FPGAs mit TaPaSCo (i2X00201)

Art der Arbeit:
Master-Projekt
Betreuer:
Mayer, Florian
Lehrstuhl für Informatik 2 (Programmiersysteme)
Telefon +49-9131-85-27923, Fax +49-9131-85-28809, E-Mail: florian.andrefranc.mayer@fau.de

Philippsen, Michael
Lehrstuhl für Informatik 2 (Programmiersysteme)
Telefon +49-9131-85-27625, Fax +49-9131-85-28809, E-Mail: michael.philippsen@fau.de

Beschreibung der Arbeit:
Hintergrund

Das Forschungsprojekt ORKA-HPC am Lehrstuhl für Informatik 2 [2], beschäftigt sich mit der Entwicklung eines Übersetzerprototyps, welcher OpenMP-Programme ohne Benutzerintervention in möglichst schnelle heterogene Host-FPGA-Systeme übersetzt.
ORKA-HPC benutzt den Task Parallel System Composer (TaPaSCo) für den Aufbau des FPGA-Gesamtsystems. Er ist ein open-source Werkzeug für die automatisierte Generierung von vollständigen FPGA-Systemen [3]. Als Eingabe muss der FPGA-Entwickler lediglich VHDL oder C-Code bereitstellen. Der TaPaSCo-Composer synthetisiert daraus zunächst mithilfe der Hersteller-Tools (Xilinx [6]) sog. IPs (Berechnungs-Kernel bzw. Hardware-Bausteine) für das FPGA, die allerdings ohne die passende Infrastruktur (z.B. Speicheranbindung, PCI-Controller, Bussystem) auf dem FPGA noch nicht isoliert sind. Aus diesem Grund erzeugt TaPaSCo in einer zweiten Phase auch diese Infrastruktur und bettet danach die vorher synthetisierten IPs darin ein.

Thema

Die in Isolation (in der ersten Phase) erzeugten Hardware-Bausteine, können mithilfe der FPGA-Synthesewerkzeuge ebenfalls in Isolation simuliert und so auf Korrektheit der Implementierung überprüft werden.
Aktuell gibt es jedoch keine Möglichkeit, ein TaPaSCo-Gesamtsystem zu simulieren. Dadurch ist es i.A. sehr schwer, Fehler zu beheben, die z.B. durch ein Falschbenutzen des FPGA-Bus entstehen; wenn beispielsweise die Nachrichten den richtigen Bus-Empfänger verfehlen oder gar fehlerhafte Bus-Nachrichtenpakete abgesendet werden. Noch schwieriger sind Leistungsanalysen, um bspw. herauszufinden, welche Flaschenhälse im System vorliegen und wo sich diese befinden. Gründe für einen Gesamtsystem-Simulator gibt es also genug.
Dieses Masterprojekt beschäftigt sich damit, TaPaSCo um einen Systemsimulator zu ergänzen, welcher das Gesamtsystem taktzyklentreu simulieren kann.

Teilprobleme

TaPaSCo produziert nicht nur eine sofort nutzbare FPGA-Konfiguration (Bitstream), sondern zudem eine Verilog-Beschreibung dieser Konfiguration. Prinzipiell lassen sich Verilog-Dateien zwar mit dem in Vivado enthaltenen taktzyklentreuen Hardware-Simulator testen, im Falle einer TaPaSCo-Hardware ist dies jedoch wenig zielführend, da diese unter anderem aus einem Hardware-Block (IP) für PCIe [5] und einem Speicherverwaltungsbaustein besteht [4]. Sowohl PCIe- als auch Speicher-Controller sind nur Wrapper-Blöcke, die die eigentliche Hardware auf dem FPGA erst nutzbar machen. Daher sind beide Controller nicht ohne die von ihnen genutzten, proprietären ASIC-Blöcke simulierbar.
Ein wesentlicher Teil der Arbeit besteht daher darin, Verilog-Adaptercode zu implementieren, der an die Stelle des PCIe- und Speicher-Controllers gesetzt werden kann.
Die Schnittstelle der Adapterblöcke, welche den restlichen Teilen des TaPaSCo-Systems zugewandt sind (Berechnungs-IPs, Bus-Controller, …), darf sich nicht ändern. Diejenige Schnittstelle, die bei den ursprünglichen Blöcken (PCIe/Speicher) mit realer Hardware kommunizierte, muss hingegen durch eine Software-Schnittstelle ausgetauscht werden.
Ferner ist diese Software-Schnittstelle noch mit der Host-Bibliothek von TaPaSCo zu verbinden, damit die aus den Host-Codes an das TaPaSCo-System zu übertragenen Daten ihren Weg in die Simulation finden. Alternativ kann der TaPaSCo-Kernel-Treiber für den gleichen Zweck erweitert werden. Aus beiden Alternativen kann frei gewählt werden, die Wahl muss aber begründet werden. Für den Bau dieser Host-zu-Simulator-Schnittstelle soll außerdem das Direct-Programming-Interface (DPI) von SystemVerilog benutzt werden, da dieses in Xilinx Vivado bereits integriert ist [1]. (Mittels DPI kann Verilog-Code C-Funktionen aufrufen, welche wiederum Verilog-Funktionen/Tasks zurückrufen können.)

Meilensteine

1. Aufbau eines TaPaSCo-Testsystems.
2. Austausch des PCIe/Speicher-Controllers durch ein Dummy-Interface (ohne Funktion).
3. Testlauf des ersten Simulationsprototyps (ohne Ergebnisse).
4. Ausbau der Dummy-Interfaces auf AXI-Seite für den Datentransfer (PCIe->Speicher und Speicher <-> AXI-Master).
5. Testlauf des zweiten Simulationsprototyps nun mit Dummy-Werten für den Speichertransfer (PCIe->Speicher) und den Speicheraustausch (Speicher <-> AXI-Master).
6. Implementation der Host-Schnittstelle für den Datenaustausch zwischen TaPaSCo-Kernel-Treiber und der Simulation.
7. Testlauf und Leistungserfassung des dritten Prototyps.
8. Schriftliche Ausarbeitung (in Deutsch oder Englisch)

Zur Arbeit gehört außerdem ein Vortrag im Kolloquium des Lehrstuhls gegen Ende der Bearbeitungszeit.

Bei Interesse stehe ich Ihnen gerne für ein persönliches Gespräch zur Verfügung, um die genaue Aufgabenstellung mit Ihnen gemeinsam zu präzisieren.

Ferner bietet sich ggf. die Gelegenheit, dass Sie im Rahmen einer HiWi-Tätigkeit Ihre Vorkenntnisse zur Vorbereitung auf diese Abschlussarbeit ausbauen.

Literatur

[1] Direct Programming Interface (DPI): https://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_4/ug900-vivado-logic-simulation.pdf
[2] ORKA-HPC: https://www.cs2.tf.fau.de/forschung/projekte/orka/
[3] TaPaSCo: https://github.com/esa-tu-darmstadt/tapasco
[4] Ultrascale+ MIG IP: https://www.xilinx.com/support/documentation-navigation/design-hubs/dh0061-ultrascale-memory-interface-ddr4-ddr3-hub.html
[5] UltraScale+ PCIe IP: https://www.xilinx.com/products/technology/pci-express.html#usplus_pcie
[6] Xilinx-HLS: https://www.xilinx.com/products/design-tools/vivado/integration/esl-design.html

Weitere Informationen zur Arbeit:
https://i2git.cs.fau.de/i2public/ausschreibungen-mayer/-/blob/master/tapasco-whole-system-simulation/aushang_plain.pdf
Bearbeitungszustand:
Die Arbeit ist noch offen.

UnivIS ist ein Produkt der Config eG, Buckenhof