Art: Vorlesung

Credits: 3 CP

Prüfer / Betreuer

Bereich: Robotik, Computational and Computer Engineering

Fachrichtung: Technische Informatik, Elektrotechnik/Datentechnik

Voraussetzungen:

  • Grundlagen der digitalen Logik (bspw. Digitaltechnik (DT))
  • Grundlagen der Rechnerarchitektur (Rechnerorganisation (RO) und AER)

Empfohlen werden zudem grundlegendes Wissen über Compiler und Linux-Systeme.

Inhalt

FPGAs wurden in den letzten Jahren sehr erfolgreich zur Umsetzung anwendungsspezifischer Beschleuniger in heterogenen Systemen eingesetzt. Allerdings ist die Programmierung mit konventionellen Hardware-Beschreiubungssprachen wie Verilog oder VHDL nach wie vor mühsam.

Als Alternative spielen High-Level Synthese Werkzeuge, die Hardware auch aus Hochsprachen wie C/C++ erzeugen können, eine zunehmend wichtigere Rolle bei der Implementierung solcher Beschleuniger. Im Rahmen dieser Veranstaltung erwerben Sie nützliches Hintergrundwissen zu den grundlegenden Algorithmen der High-Level Synthese sowie Kenntnisse beim praktischen Entwurf und der Optimierung von FPGA-Designs mittels High-Level Synthese-Werkzeugen.

Darüber hinaus lernen Sie relevante Techniken zur Integration von FPGA-basierten Beschleunigern in heterogene Systeme kennen. Im Rahmen der mit dieser Veranstaltung verbunden Praxisphase implementieren Sie einen FPGA-basierten Beschleuniger für ein vorgegebenes Problem und setzen diesen auf einem typischen heterogenen System in echter Hardware um.

Corona-Update

Die Vorlesung wird trotz der aktuellen Corona-Pandemie stattfinden, allerdings in vollständig digitaler Form. Details zur Organisation der Vorlesung in diesem Semester können Sie dem Orga-Video entnehmen. Die Kommunikation findet vollständig über den Moodle-Kurs statt, bitte tragen Sie sich unbedingt in diesen Kurs ein!

Beginn: 20.04.2020

Sprechstunde: TBA

Links: Moodle

Materialien

Der VL-Block 7 zum Thema TaPaSCo ist in einer entsprechenden YouTube-Playlist verfügbar. Die Playlist finden Sie hier:

YouTube-Playlist: TaPaSCo Tutorial @ ARC 2019

Vorlesungsfolien

Organisation der Veranstaltung
Organisation der Übung
Block 1: Einleitung
Block 1: Einleitung (Handout)
Block 2: LLVM Refresher
Block 3: HLS Grundlagen
Block 3: HLS Grundlagen (Handout)
Block 4: Optimierungen
Block 4: Optimierungen (Handout)
Block 5: Scheduling
Block 5: Scheduling (Handout)
Block 6: Modulo Scheduling
Block 6: Modulo Scheduling (Handout)

Aufzeichnungen

Die Folien und der Vortrag werden bis auf weiteres aufgezeichnet. Dabei kann es gelegentlich durch die Tücke der Technik zu Störungen oder Ausfällen kommen. Wir bitten diese zu entschuldigen und hoffen, sie in erneuten Durchgängen zu vermeiden. Die Aufzeichungen selbst sind platzsparend im H.264-Format komprimiert. Zum Abspielen empfehlen wir VLC.

Organisation der Veranstaltung
Organisation der Übung
Block 1 - Einleitung - Teil 1
Block 1 - Einleitung - Teil 2
Block 2 - LLVM Refresher
Block 3 - HLS Grundlagen - Toolflow
Block 3 - HLS Grundlagen - Datenstrukturen
Block 3 - HLS Grundlagen - Algorithmische Schritte
Block 4 - Optimierungen - Coding Styles
Block 4 - Optimierungen - Datatypes
Block 4 - Optimierungen - Interfaces
Block 4 - Optimierungen - Throughput
Block 4 - Optimierungen - Latency
Block 4 - Optimierungen - Datatypes (Tutorial)
Block 4 - Optimierungen - Interfaces (Tutorial)
Block 4 - Optimierungen - Array Partitioning (Tutorial)
Block 5 - Scheduling
Block 6 - Modulo Scheduling - Pipelining
Block 6 - Modulo Scheduling - Scheduling
Block 6 - Modulo Scheduling - ModuloSDC
Block 6 - Modulo Scheduling - ModuloSDC (Beispiel)
Block 6 - Modulo Scheduling in Vivado HLS (Tutorial)
Tutorial 1 - Virtuelle Machine aufsetzen
Tutorial 2 - Beispiel Programm
Tutorial 3 - Vivado HLS
Tutorial 4 - TaPaSCo HLS
Tutorial 5 - TaPaSCo Compose
Tutorial 6 - Ultra96