Master's Thesis Topics

Here a list of possible topics for Master's theses. If you have your own project related to real-time systems or embedded Java just drop me a note and we can meet for a discussion. You can also skim the list of Bachelor projects, as all of them can be extended to serve as a Master's project.

WCET Analyzer for Patmos

Patmos is a time-predictable processor that is especially designed to simplify worst-case execution time (WCET) analysis (http://patmos.compute.dtu.dk/). The project is about to design a WCET analyzer that targets the Patmos architecture. This project can build on a tool called platin that supports some of the WCET analysis already. It can be an extnesion of platin, or a rewrite from scratch.

Patmos compiler optimization for dual issues.

The current version of the LLVM compiler for Patmos is not very optimized for the dual-issue of Patmos (http://patmos.compute.dtu.dk/). The dual-issue version of Patmos is just about 10% faster than the single-issue version. Software pipelining and superblock scheduling should increase the performance by by an estimated 30% when the program is not memory bound.

JavaScript on Patmos

Patmos is a processor for embedded real-time systems, which often execute on the bare metal without an operating system (http://patmos.compute.dtu.dk/). Such applications are often written in C and C has the usual issues of a low-level language. Using a scripting language for at least part of the application improves the safety of the application. Within this thesis project a JavaScript runtime is ported for Patmos and an example application executing on an FPGA demonstrates the system. As an extension the Accessor project, which uses JavaScript, for the future Internet-of-Things can be explored.

Transactional Memory on T-CREST

Transactional memory (TM) is a promising mechanism for synchronizing access to shared data. TM is usually developed to optimize the average case. In this thesis a real-time TM (RTTM) will be developed within the T-CREST multicore platform that is optimized for real-tie systems. The project can start on a RTTM version for the multicore version of JOP. (Read up what Augsburg is doing.)

Porting of a Real-Time Operating System to the T-CREST Platform

T-CREST is a research project on time-predictable multiprocessing. In this Master thesis an RTOS (such as FreeRTOS) will be ported to the processor Patmos and the T-CREST platform.

Further Topics

 * A multithreaded Patmos (to compare against CMP/VLIW)
 * Explore Scala for RTS
 * Enhance TiCOS to support multiple cores and to use the Argo NoC
 * Compare OpenSoC with Argo
 * CompCert C backend for Patmos
 * RISC V FPGA implementation
 * Out-of-order executing Patmos

Bachelor Project Topics

Here a list of projects for Bachelor's theses. Your suggestions are also welcome. A Bachelor project can also be extended to a Master project.

newlib Port to Leros

Leros is an open-source processor with a simple accumulator architecture (see https://leros-dev.github.io/). Leros includes a C compiler, a port of LLVM. To enable to write standard C, a port of the standard C library is needed. This bachelor project shall port newlib to Leros.

Teaching Basic Computer Organization with Leros

Leros is an open-source processor with a simple accumulator architecture (see https://leros-dev.github.io/). The instruction set of Leros can be presented on one page. Therefore, Leros is a good candidate for teaching basic computer organization (e.g., in courses such as 02132 and 02135). This bachelor project shall prepare teaching material to use Leros in an introductory bachelor course. The material shall become open-source as part of the Leros project.

Rust Compiler for Leros

Rust is a new language designed for safe concurrency and also optimized for small embedded systems (https://www.rust-lang.org/en-US/). Leros is an open-source processor with a simple accumulator architecture optimized for embedded systems (see https://leros-dev.github.io/).  The distribution of Leros contains an LLVM based C compiler. And Rust is based on LLVM. The bachelor project is on combining the Rust frontend of LLVM with the backend for Leros.

Rust Compiler for Patmos

Rust is a new language designed for safe concurrency and also optimized for small embedded systems (https://www.rust-lang.org/en-US/). Patmos is an open-source processor optimized for real-time systems (http://patmos.compute.dtu.dk/).  The distribution of Patmos contains an LLVM based C compiler. And Rust is based on LLVM. The bachelor project is on combining the Rust frontend of LLVM with the backend for Patmos.

JavaScript Simulator of Patmos

Patmos is a processor for embedded real-time systems, developed here at DTU and used in advanced computer architecture teaching. The project is to develop a Patmos instruction set simulator in JavaScript so it can execute in any browser. This project should be similar to the Venus RISC-V simulator at https://kvakil.github.io/venus/.
A useful tool will be: https://codemirror.net.

RISC-V Pipeline Simulator

We intend to use RISC-V in the future for teaching Computer Architecture Engineering. For this we need a pipeline simulator of RISC-V. The pipeline simulator shall provide a standard 5-stage pipeline that executes RISC-V base instructions and show graphically what instructions are doing in each stage. As a start we provide a instruction set simulator of RISC-V (about 200 lines of code).

RISC-V on the DE2-115 FPGA

Implementation of the RISC-V Rocket chip on the DE2-115 FPGA board. The standard distribution o Rocket uses a Zynq board and help from the ARM processor to start. this project is about untethering Rocket and make it boot without the help of an additional processor.

SD card interface to Patmos

An SD card is a convenient storage device for embedded systems. Within our Patmos processor project (<http://patmos.compute.dtu.dk/>) we are missing a file system. The project is to interface an SD card to Patmos and writing or porting a simple file system library for Patmos.

Accelerator Interface for Patmos

Patmos is a RISC processor for real-time systems. For performance and time predictability reasons often algorithms are implemented directly in hardware. This project is about extending Patmos with an interface standard for hardware accelerators (coprocessors). One interface to be explored is a command to the accelerator that may include two register values and a destination register number on a write and a register value (or more in sequence) on a read. This interface is mapped to two custom instructions. The interface shall be demonstrated with a small accelerator. References: RoCC interface of the Rocket/RISC-V project.

uCLinux on Patmos

Patmos is a processor optimized for real-time systems. It is a time-predictable RISC processor. The current application environment is executing applications written in C on bare metal. uLinux is a stripped down version of Linux that is intended for micro controllers. The proposed project is to port uLinux to Patmos.

OCaml on Patmos

OCaml has been ported to a Raspberry Pi (<https://github.com/dbuenzli/rpi-boot-ocaml>), so it should be possible to execute it on Patmos.

TinyOS on Patmos

TinyOS is a small operating system mainly for wireless sensor network nodes. As it is a very small OS it is a very good fit for an embedded processor like Patmos. Patmos is a small real-time processor that can be a good architecture for low-power devices. The project is about porting this OS to Patmos and exploring it with small examples. Optionally the TinyOS functions can be analyzed for the worst-case execution time (WCET) with the WCET analysis tool of Patmos.

A Simple Hardware Simulation Framework

One of the standard frameworks for hardware simulation is SystemC. However, SystemC is quite verbose and an overkill for the simulation of simple pipelines (such as a processor). In the project a simple simulation framework for pipelined hardware shall be developed in Java or Scala. The main focus is on a small, easy to use framework and not on many features. As evaluation of the framework the Patmos VLIW processor shall be implemented on top of the framework.