Nach positiver Absolvierung der Lehrveranstaltung sind Studierende in der Lage, digitale integrierte Schaltkreise mit modernen Methoden im Team zu entwerfen, zu verifizieren, und für die Wiederverwendbarkeit und Wartbarkeit zu bündeln.
In dieser Laborübung lernen wir die RISC-V-Befehlssatzarchitektur kennen. Wir werden die Implementierung des PicoRV32-Mikroprozessors untersuchen und eine benutzerdefinierte Instruktion hinzufügen. Diese benutzerdefinierte Anweisung implementiert eine approximierte Version eines Multiplikators. Wir vergleichen die exakten/approximierten Versionen des Mikroprozessor-Kerns mithilfe der Dhrystone-Benchmarks, indem wir die verschiedenen verfügbaren Compiler-Toolchains für diesen Kern variieren. Am Ende des Kurses präsentieren wir unser Projekt und diskutieren erwartete und unerwartete Ergebnisse.
Die Einführungsveranstaltung findet am 7. März 2024, 09:00--11:00, im Computerraum des ICT, CA0208, statt.
In der Laborübung wird ein Hardware-Design-Projekt in Gruppenarbeit durchgeführt. Das Ziel ist es, eine Spezifikation zu implementieren. Die Korrektheit der Implementierung wird durch formale Verifikationsmethoden bewiesen.
Zusammenarbeit mit KollegInnen ist nicht nur erlaubt, sondern auch erwünscht. Allerdings ist es nicht erlaubt, Designs ohne Bedacht zu kopieren, ohne die Funktionalität der Implementierung im Detail zu verstehen. Dieses Lernziel wird im Rahmen der Abgabegespräche überprüft.
Die Lehrinhalten werden durch folgende Methoden ergänzt:
- Formulieren einer Problemlösung in einer verhaltensbasierten Hardware-Beschreibungssprache
- Lernen, den Code von Dritten einzusetzen
- Was ist wichtig bei der Verwendung von Drittcode: Licensing, Coding-Style, Integration in die eigene Code-Base
- Erstellen eines in sich abgeschlossenen ("self-contained") Pakets mit Informationen, die von potentiellen BenutzerInnen benötigt werden
- Benutzen verschiedener Tools zur Verifikation und Synthese: Yosys, nextpnr, SymbiYosys, GTKWave
- Automatisieren von Tasks durch Scripting (Bash scripts, Makefiles, TCL scripts, ...)
- Lernen zu kollaborieren (es geht darum, ein Problem zu lösen!), und Nutzen von Tools, die Zusammenarbeit unterstützen (git, Telegram, ...)
- Es ist nicht wichtig, ein Problem nur für sich allein zu lösen. Es ist wichtig, zu kommunizieren und zusammenzuarbeiten, um große Probleme zu lösen.
- Lernen, dass Spezifikationen niemals vollständig sind (und dass Kommunikation eine Spezifikation teilweise vervollständigen kann)
- Lernen, seine eigene Arbeit zu lizenzieren
Bei mehr Anmeldungen als Plätzen werden Studierende mit aktivem relevanten Masterstudium (066 438, 066 439, 066 504, 066 507 und 066 508) bevorzugt gegenüber Studierenden anderer Studienrichtungen zur LVA zugelassen. Innerhalb dieser Gruppen entscheidet das Los über die Platzzuordnung.