Marto: Modern ARithmetic Tools for high-level synthesis
Marto provides C++ headers to implement custom sized arithmetic objects such as:
- Custom sized posits and their environment (including the quire)
- Custom sized IEEE-754 numbers
- Custom sized Kulisch accumulators (and sums of products)
Marto usage
Marto is a header only library. It is based on Hint in order to provide support for many HLS backends.
Building unit tests
- Make sure to have the Hint library installed
- Make sure to have the Softposit library installed
- Make sure to have the
ap_int
library installed - Clone the current repository
- Create a build directory
- Create a cmake build
- Make the tests
- Launch the tests
git clone https://gitlab.inria.fr/lforget/marto
cd marto
mkdir build
cd build
cmake .. -DSOFTPOSIT_H=<PATH_TO_SOFTPOSIT_INSTALL_DIR>/source/include
-DSOFTPOSIT_LIB=<PATH_TO_SOFTPOSIT_INSTALL_DIR>/build/Linux-x86_64-GCC/softposit.a
-DAP_INT_INCLUDE_DIR=<PATH_TO_AP_INT_INCLUDE_DIR>
-DBUILD_UNIT_TEST=1
make
ctest
Reference
Marto was first presented at the FPL 2019 conference in Barcelona. The original article can be found here.
If you use this library, please cite the following reference :
@inproceedings{uguen:hal-02130912,
TITLE = {{Evaluating the hardware cost of the posit number system}},
AUTHOR = {Uguen, Yohann and Forget, Luc and de Dinechin, Florent},
URL = {https://hal.inria.fr/hal-02130912},
BOOKTITLE = {{FPL 2019 - 29th International Conference on Field-Programmable Logic and Applications (FPL)}},
ADDRESS = {Barcelona, Spain},
PAGES = {1-8},
YEAR = {2019},
MONTH = Sep,
PDF = {https://hal.inria.fr/hal-02130912/file/hal_marto_final.pdf},
HAL_ID = {hal-02130912},
HAL_VERSION = {v4},
}