Home > Research > Stages/emplois > [TAKEN] Dedicated Compilation Techniques for SystemC (based on (...)

[TAKEN] Dedicated Compilation Techniques for SystemC (based on LLVM)

Sujet de stage M1 ou M2

Monday 22 November 2010

Ce sujet est déjà pris, et gardé ici seulement pour archive.

Laboratory : Verimag (http://www-verimag.imag.fr/)

Team : SYNCHRONE (http://www-verimag.imag.fr/SYNCHRONE)

Supervisor : Matthieu Moy <Matthieu.Moy@imag.fr>

Scientific Context

The silicon industry is widely adopting a methodology called Transaction-Level Modeling (TLM), that consists essentially in writting abstract, but yet executable models the hardware contained in a Chip.

SystemC is a C++ library used for the description of SoCs at different levels of abstraction, including TLM. It comes with a simulation environment, and became a standard (IEEE 1666). SystemC offers a set of primitives for the description of parallel activities representing the physical parallelism of the hardware blocks. The TLM level of abstraction can be described with SystemC.

Because SystemC was implemented as a library, it is possible to compile a SystemC program with any C++ compiler. But using a general-purpose compiler misses some optimization opportunities.

We are now interested in building a dedicated compiler for SystemC. A SystemC font-end called PinaVM has already been developed in Verimag (based on the LLVM compiler infrastructure). Today, it is only used to generate code for formal verification tools, but not for the execution of the program.

Goals of the project

The first step is to write an "Execution" back-end for PinaVM. There are several ways to implement such a back-end: use the Just-In-Time (JIT) capabilities of LLVM, or generate statically an executable file.

Then, the student can chose one or several of the following directions:

  1. Implement an optimizer in PinaVM. The SystemC simulation uses a lot of pointers, unknown at compile-time, but fixed once and for all at the beginning of the execution. Knowing the values of these pointers (which PinaVM can already do) opens the door to many optimizations.
  2. Use PinaVM to compile the embedded software together with the model of the hardware. Doing this requires the compiler to "catch" the memory accesses of the embedded software, and to redirect them to the virtual hardware.
  3. Statically schedule part of the SystemC program. This can reduce the number of context-switches, and lead to more performance improvements.

Each point requires a bibliographical study, an analysis of the problem, and leads to an implementation.

Required Skills

  • Programming skills in C++
  • Compilation (notion of control-flow graph, basic-blocks...)
  • Unix/Linux

Work context

Matthieu Moy is assistant professor in Verimag and the Ensimag school. He started working on SystemC in 2002 during his Ph. D. Research on SystemC-related subject is still active in the team.

Valid XHTML 1.0 Transitional
Valid CSS!
SPIP | | Site Map | Follow site activity RSS 2.0
Graphic design (c) styleshout under License Creative Commons Attribution 2.5 License