My primary research interests are in the domain of reconfigurable computing on field programmable gate arrays (FPGAs). In special, I'm interested in the design and optimization of arithmetic circuits which are tailored for FPGAs. On top of this, I put a special focus on their integration into a high-level synthesis (HLS) flow like the model-based design (MBD) approach. For that I initiated or contributed to a couple of open-source software projects which are listed below.
FloPoCo is a VHDL code generator for arithmetic cores that was initiated by Florent de Dinechin and Bogdan Pasca. Me and my colleages contributed to several FloPoCo operators and some optimization cores (e.g., the compressor tree optimization and large multiplier optimization).
For more information, visit the project website: http://flopoco.org
The PAGSuite provides a suite of tools for the design and the optimization of arithmetic circuits for FPGAs which are based on so-called pipelined adder graphs (PAGs). PAGs are used for different types of constant multiplier problems like the single constant multiplication (SCM), multiple constant multiplication (MCM) and the constant matrix-vector multiplication (CMM). On top of this, tools to design runtime reconfigurabe SCM/MCM/CMM circuits are included.
For more information, visit the project website: http://www.uni-kassel.de/go/pagsuite
FIROpt is an optimization suite for the design of optimal multiplierless filters.
For more information, visit the project website: https://gitlab.com/filteropt/firopt
Origami HLS is an open-source tool for the model-based design of highly optimized architectures for FPGAs from Matlab/Simulink.
For more information, visit the project website: http://www.uni-kassel.de/go/origami
ScaLP is an open source C++ library that acts as a wrapper for different ILP-solvers and provides a nice interface to the developer which is common for all solvers (currently Gurobi, CPLEX, SCIP and LPSOLVE).
To support a natural user interface, it heavily uses the concept of operator overloading, i.e., a constraint like x+y⇐31 is exactly written as it is “x+y⇐31”.