AFF3CT is a simulator and a library dedicated to the Forward Error Correction (FEC or channel coding). It is written in C++ and it supports a large range of codes: from the well-spread Turbo codes to the new Polar codes including the Low-Density Parity-Check (LDPC) codes. AFF3CT can be used as a command line program and it simulates communication chains based on a Monte Carlo method.
It is very easy to use, for instance, to estimate the BER/FER decoding performances of the (2048,1723) Polar code from 1.0 to 4.0 dB:
aff3ct -C "POLAR" -K 1723 -N 2048 -m 1.0 -M 4.0 -s 1.0
And the output will be:
# ----------------------------------------------------
# ---- A FAST FORWARD ERROR CORRECTION TOOLBOX >> ----
# ----------------------------------------------------
# Parameters :
# [...]
#
# The simulation is running...
# ---------------------||------------------------------------------------------||---------------------
# Signal Noise Ratio || Bit Error Rate (BER) and Frame Error Rate (FER) || Global throughput
# (SNR) || || and elapsed time
# ---------------------||------------------------------------------------------||---------------------
# ----------|----------||----------|----------|----------|----------|----------||----------|----------
# Es/N0 | Eb/N0 || FRA | BE | FE | BER | FER || SIM_THR | ET/RT
# (dB) | (dB) || | | | | || (Mb/s) | (hhmmss)
# ----------|----------||----------|----------|----------|----------|----------||----------|----------
0.25 | 1.00 || 104 | 16425 | 104 | 9.17e-02 | 1.00e+00 || 4.995 | 00h00'00
1.25 | 2.00 || 104 | 12285 | 104 | 6.86e-02 | 1.00e+00 || 13.678 | 00h00'00
2.25 | 3.00 || 147 | 5600 | 102 | 2.21e-02 | 6.94e-01 || 14.301 | 00h00'00
3.25 | 4.00 || 5055 | 2769 | 100 | 3.18e-04 | 1.98e-02 || 30.382 | 00h00'00
# End of the simulation.
The simulator targets high speed simulations and extensively uses parallel techniques like SIMD, multi-threading and multi-nodes programming models. Below, a list of the features that motivated the creation of the simulator:
- reproduce state-of-the-art decoding performances,
- explore various channel code configurations, find new trade-offs,
- prototype hardware implementation (fixed-point receivers, hardware in the loop tools),
- reuse tried and tested modules and add yours,
- alternative to MATLAB, if you seek to reduce simulations time.
AFF3CT was first intended to be a simulator but as it developed, the need to reuse sub-parts of the code intensified: the library was born. Below is a list of possible applications for the library:
- build custom communication chains that are not possible with the simulator,
- facilitate hardware prototyping,
- enable various modules to be used in SDR contexts.
If you seek for using AFF3CT as a library, please refer to the dedicated documentation page.
First make sure to have installed a C++11 compiler
, CMake
and Git
. Then
install AFF3CT by running:
git clone --recursive https://github.com/aff3ct/aff3ct.git
mkdir aff3ct/build
cd aff3ct/build
cmake .. -DCMAKE_BUILD_TYPE="Release"
make -j4
If you are having issues, please let us know on our issue tracker.
The project is licensed under the MIT license.
We recommend you to cite the SoftwareX journal article: A. Cassagne et al., “AFF3CT: A Fast Forward Error Correction Toolbox!,“ Elsevier SoftwareX, 2019 [Bibtex Entry].