What we do at VLSC in a nutshell.
Projects
Here you can find list of potential projects and topic you could work on. All projects are directly or indirectly related to Manticore. They could be taken as both masters and semester projects (we will adjust the goals accordingly) unless stated otherwise.
Contact:
If you are interested in any of the projects or want to know more, do not hesitate to contact Mahyar Emami ([email protected]) for more information.
1. Accelerator Benchmark Suite
This project is hardware-oriented.
Goal
- Develop a suite of accelerators from different domains using readily available software descriptions through hardware compilers or open-source hardware projects.
- Develop testbenches for each accelerator.
Requirements
- Familiarity with at least one hardware description language (Verilog, VHDL, Chisel) is a must (ideally you should have had taken a course similar to CS-208).
- Basic scripting skills (Python, GNU Make, Bash, and etc.)
2. Debugging Capabilities for Manticore
This project is requires both hardware and software experience. This project is mostly suitable for a master student.
The main job of an RTL simulator is to test and debug a hardware design. Our current Manticore prototype has little support for advanced debugging capabilities such as breakpoints or waveforms.
We have some ideas how to implement these features and you can help us carry them out. This project is a difficult, yet rewarding one. The first step is to implement waveform debugging and then perhaps a more advanced breakpoint debugging flow.
Goal
- Develop hardware and software to enable waveform debugging in Manticore
- Develop hardware and software to enable breakpoint debugging in Manticore
Requirements
- Familiarity with at least one hardware description language (e.g., VHDL or Verilog)
- Familiarity with Scala
- Some familiarity with C++
3. FPGA Network-on-Chip Implementation
This project is hardware-oriented but requires software skills as well.
Our current Manticore hardware connects the few hundreds of cores it has with a simple 2-D uni-directional torus network-on-chip (NoC). We wish to explore other network topologies (such as a fat butterfly)on a high-end FPGA and evaluate their performance (e.g., maximum achievable clock frequency, latency, bandwidth, and etc.)
Goal
- Improve Manticore’s performance by an intelligent NoC design
Requirement
- Hardware design experience (e.g., Verilog)
- FPGA experience
- Knowledge of Chisel and Scala is a plus
4. More DRAM for Manticore
This project is hardware-oriented.
Manticore’s ISA provides strong latency guarantees for every instruction. This makes accessing off-chip memories (DRAM) with non-deterministic access times tricky to implement. Currently, we have a mechanism to mask the non-deterministic access of a single DRAM bank. We would like to extend the current approach or explore alternatives to connect more DRAM banks (hopefully 3 or 4).
Goal
- Extend Manticore’s microarchitecture implementation to support multiple DRAM banks
Requirements
- Strong background in hardware
- FPGA experience
- Familiarity with Chisel is a plus
5. Verilog DPI support in Manticore
This project is software-oriented.
Our current Manticore compiler supports basic Verilog system calls such as $display
and $stop
. We want to extend the support for arbitrary DPI (Direct Programing Interface) calls using the new or existing mechanism.
Goal
- DPI support in Manticore
Requirements
- Basic understanding of a C/C++ build tool (e.g., CMake, Make, and etc.)
- Intermediate C++ and Scala skills