06. Juli 2018
A new software framework for LDPC decoders

C++ and Matlab programs for designing and validating LDPC decoder hardware are available online.

This software was developed within the project “Unleashing Finite-Alphabet Implementations of LDPC Decoders”, funded by the NEXT Call of WWTF (Grant NXT17-013).

Unleashing Finite-Alphabet Implementations of LDPC Decoders


Since there exists no perfect medium for transmitting or storing digital information, every communication system is bound to suffer from errors. These errors are combated by means of error-correcting codes. Because of their outstanding performance, low-density parity check (LDPC) codes are used in many applications (e.g., digital television, cellular, WLAN, Ethernet, hard drives and flash memory) and are therefore of great practical importance. One of the biggest technological challenges with LDPC codes is the hardware implementation of the associated decoders. Many companies and research institutes are working to develop efficient integrated circuits for LDPC codes that enable rapid and power-efficient error correction with a small chip area. The aim of the UNFOLD project was to evolve the latest results from our research into a full-fledged software development environment for the design, implementation, and testing of LDPC decoders. More specifically, the UNFOLD project contributes to realizing the full practical potential of finite-alphabet/lookup-table decoders for LDPC codes. This decoder type is a recent innovation, for which theoretical foundations and preliminary hardware architecture aspects have been investigated in the context of our previous WWTF project TINCOIN. UNFOLD takes a leap forward to the next application level by providing a development and design flow for finite-alphabet LDPC decoders in the form of a software suite and soft-IP cores. These tools enable manufacturers to implement LDPC decoders of unprecedented hardware performance in semiconductor chips with short development times. The chips thus realized are potentially much smaller and cheaper than currently existing hardware, and accordingly can lead to a substantial competitive advantage.

The UNFOLD project is funded by the WWTF within the NEXT Call (WWTF Grant NXT17-013).


The UNFOLD project is a collaboration of the Communication Theory Group at the Institute of Telecommunications of TU Wien and the Telecommunications Circuits Laboratory at Ecole Polytechnique Fédérale de Lausanne (EPFL). Key team members are Prof. Gerald Matz, Prof. Andy Burg, Dr. Michael Meidlinger, Dr. Alexios Balatsoukas Stimming,  and Reza Ghanaatian Jahromi.


In the context of UNFOLD, we developed a C++/Matlab software suite that covers the complete design flow for finite alphabet/lookup table (LUT) decoders of LDPC codes, i.e., the conception and implementation of lookup table trees, unrolled decoders with LUT reuse, VHDL code generation, density evolution for LUT decoding, and Monte Carlo error rate simulations.


LUT-LDPC is a C++ program / library that can be used for the design and performance evaluation of LUT-based discrete message passing LDPC decoders. Decoders can be designed and tested for their error rate performance as well as exported to produce VHDL implementations of unrolled decoders.

Github download link: LUT-LDPC

Documentation and how-to-use guide: Please contact Prof. Gerald Matz


LUT-LDPC-VHDL is a collection of MATLAB sctipts that takes a decoder object generated with the LUT-LDPC C++ program as an input and produces VHDL source code for this decoder assuming an unrolled architecture.

Github download link (includes documentation): LUT-LDPC-VHDL

Example Design Flow


Assuming you have installed LUT-LDPC, the following command runs LUT-LDPC and produces a decoder object and corresponding test vectors for VHDL verification:

ber/sim -p params/ber.ini.regular.example > stimuli.txt

The resulting decoder object can then be used to produce the corresponding VHDL source of an unrolled decoder using the LUT-LDPC-VHDL MATLAB script decoderGenerator.m.

The functionality of the resulting VHDL code can be verified against the functionality of the LUT-LDPC software decoders using the test vectors and the accompanying ModelSim Testbench.

For a more detailed documentation please contact Prof. Gerald Matz.


The software is provided without warranty under the terms of a GNU General Public License (GPLv3). Academic use is royalty-free but the UNFOLD website and at least one of the papers listed below should be cited in any published work using UNFOLD ideas and tools. For terms and conditions of commercial use, companies should directly contact Prof. Gerald Matz or Prof. Andy Burg.


[1] M. Meidlinger, A. Balatsoukas-Stimming, A. Burg, and G. Matz, “Quantized message passing for LDPC codes,” in Proc. 49th Asilomar Conf. Signals, Systems and Computers, Pacific Grove (CA), Nov. 2015.

[2] M. Meidlinger and G. Matz, “On irregular LDPC codes with quantized message passing decoding,” in Proc. IEEE SPAWC 2017, Sapporo (Japan), July 2017.

[3] A. Balatsoukas-Stimming, M. Meidlinger, R. Ghanaatian, G. Matz, and A. Burg, “A fully-unrolled LDPC decoder based on quantized message passing,” in Proc. SiPS 2015, Hang Zhou (China), Oct. 2015.

[4] R. Ghanaatian, A. Balatsoukas-Stimming, T. C. Müller, M. Meidlinger, G. Matz, A. Teman, and A. Burg, “A 588 Gbps LDPC decoder based on finite-alphabet message passing,” IEEE Trans. VLSI Systems, vol. 26, no. 2, pp. 329–340, Feb. 2018.