title: Flexible Generation of Low-Level Developer Tools with VADL
Creators: name: Schwarzinger, Tobias
Publisher: name: TU Wien
Year: 2023
Subjects: subject: assembler generation
subject: linker generation
subject: processor description language
subject: VADL

description: Die Entwicklung von Domain-spezifischen Mikroprozessoren ist ein herausforderndes und ressourcenintensives Unterfangen. Einer der wichtigsten Schritte dabei ist es, ein effizientes Prozessordesign zu finden. Idealerweise können Hardwarearchitekt:innen während dieses Prozesses schnell Ideen probieren und evaluieren. Die Vienna Architecture Description Langauge (VADL) unterstützt Ingenieure und Ingenieurinnen während dieses Prozesses. Das Ziel der Sprache ist es, eine kontinuierliche Verfeinerung der Prozessorarchitektur zu erlauben. Während dieses Prozesses, können Generatoren die Information in einer VADL Spezifikation nutzen, um Simulatoren, Compiler und Hardwareschemata zu generieren.Vor dieser Arbeit konnte der Compilergenerator keinen Assembler und Linker erzeugen. Daher war es Nutzer:innen nicht möglich, C oder Assembly Programme in ausführbare Dateien zu übersetzen. Obwohl dieser Umstand durch handgeschriebene Werkzeuge überbrückt werden kann, verlangsamt sich die Designexploration erheblich. Das Ziel dieser Arbeit war es den Compilergenerator so zu erweitern, dass dieser einen Assembler und Linker (Low-Level Entwicklerwerkzeuge) erzeugen kann. In dieser Arbeit entwickelten wir einen Prototyp, der erfolgreich Low-Level Entwicklerwerkzeuge für RISC-ähnliche Architekturen erzeugen kann. Beide Komponenten unterstützen komplexe Funktionen sowie die das Schreiben und Anwenden von Relocations. Um diese Anforderungen zu unterstützen, erweiterten wir VADL um ein Assembly-Beschreibungselement. Weiters generiert unser Prototyp automatisch Parserregeln aus der Formatierungsfunktion einer Instruktion. Darüber hinaus implementierten wir auch zwei Generierungsstrategien für Relocations welche es Benutzer:innen erlauben, Symbole in manchen Instruktionen zu verwenden, ohne Relocations manuell anlegen zu müssen. Unser Beitrag ermöglicht eine effizientere Designexploration, indem es Nutzer:innen für den Prozessor zugeschnittene Entwicklungswerkzeuge zur Verfügung stellt.
description: Developing microprocessors tailored to a domain-specific problem is a challenging and resource-intensive task. A crucial step is coming up with an efficient processor design. Rapid design exploration allows hardware architects to quickly test and evaluate new ideas, ranging from specialized instructions to unique pipeline structures. The Vienna Architecture Description Language (VADL) supports engineers during this process. Its goal is to allow continuous refinement of a processor's architecture. During this process, generators can leverage the information in the VADL specification to emit simulators, compilers, and hardware schematics.However, prior to this work, the compiler toolchain generator could not emit an assembler and linker. As a result, users could not generate executables from C or assembly programs. While this gap can be bridged by manually writing the necessary software, this significantly slows down the design exploration process. This additional overhead is most apparent when introducing new instructions or altering the architecture's encoding. This work aimed to alleviate this issue by extending the compiler tool generator with an assembler and a linker - low-level developer tools. In this work, we developed a prototype that successfully generates a sophisticated assembler and linker for RISC-like architectures. Both components support complex features such as emitting and applying relocations. To facilitate this, we extended VADL with an assembly description element. Furthermore, our program automatically generates parser rules from pretty printers to reduce the specification burden of users. Lastly, we implemented two relocation generation strategies that allow passing symbols to some instructions without manually defined relocations. This contribution allows a more streamlined design exploration process by providing low-level developer tools tailored to the architecture.