Automatikus hardverszintézis C nyelvből kiindulva

Konzulens:
Suba Gergely
Tárgy:
Önálló laboratórium - Szoftverfejlesztés és rendszertervezés specializáció, BSc Info.
Önálló laboratórium - Irányítórendszerek ágazat, BSc Vill.
Önálló laboratórium 1 - Irányítórendszerek főspecializáció, MSc Vill.
Önálló laboratórium 2 - Irányítórendszerek főspecializáció, MSc Vill.
Önálló laboratórium 1 - Vizuális informatika főspecializáció, MSc Info.
Önálló laboratórium 2 - Vizuális informatika főspecializáció, MSc Info.
Önálló laboratórium 1 - Intelligens beágyazott mecha. rendsz. szakir., MSc Mecha.
Hallgatói létszám:
2
Folytatás:
Szakdolgozat / Diplomaterv
TDK dolgozat
Leírás:
Napjainkban egyre nagyobb az igény HLS (High-level synthesis) fejlesztőeszközök használatára, amelyek segítségével egy magas szintű nyelvből (pl. C, Java, Haskell, MATLAB) kiindulva kevés beavatkozással optimális hardverleírást (Verilog/VHDL) tudunk előállítani. A szoftverre szakosodott magas szintű nyelvek fő előnye az algoritmusok egyszerű implementálhatósága, miközben a programot futtató konkrét hardver a fejlesztő elől rejtve marad. Ezzel szemben egy hardverleíráshoz elengedhetetlen a digitális technika alacsony szintű fogalmainak (pl. bitvezetékek, kapuk, regiszterek) beható ismerete. A magas szintű és hardverleíró nyelvek között a HLS fejlesztőeszközök teremtik meg az átjárhatóságot, egyszerű lehetőséget biztosítva FPGA alapú vagy ASIC (alkamazás-specifikus)áramkörök fejlesztésére.

HLS fejlesztőeszközök léteznek a kereskedelemben, viszont egy átlag felhasználó számára a magas költségek miatt ezek nehezen hozzáférhetőek. Felmerül az igény egyszerű fordítóprogramok fejlesztésére, amelyek az oktatásban, kutatásban vagy akár későbbi projektekben is felhasználhatóak lesznek. Szerencsére számos nyílt forráskódú általános fordítóprogram létezik (legismertebbek a GCC és az LLVM), amelyek frontendjét a hardverleírásra történő fordítás során is felhasználhatjuk, ezzel egyszerűsítve a megoldandó problémát.

A konkrét feladat:

Program tervezése és implementálása, amely a GCC-re vagy az LLVM-re (esetleg egyéb fordítóprogramra) támaszkodva hardverleírást (vagy adatfolyam-gráfot) állít elő C nyelvű forráskódból. Javasolt implementációs nyelvek: C#, Java, Haskell.

Feltételek:

  • a szakirodalom tanulmányozásához szükséges szintű angol nyelvtudás
  • a C#, Java, Haskell programozási nyelvek valamelyikének ismerete

A téma továbbvihető BSc szakdolgozatként és MSc diplomatervként is.