2 research outputs found

    A single-source C++20 HLS flow for function evaluation on FPGA and beyond

    Get PDF
    International audienceThis paper presents a framework to reuse the intelligence of RTL generators in a single-source HLS setting. This framework is illustrated by a C++ fixed-point library to generate mathematical function evaluator. A compiler flow from C++20 to Vivado IPs has been developed to make the library usable with Vitis HLS. This flow is demonstrated on two applications: an adder for the logarithmic number system, and additive sound synthesis. These experiments show that the approach allows to easily tune the precision of the types used in the application. They also demonstrate the ability to generate arbitrary function evaluator at the required precision

    Comparaison du coût matériel des posit et IEEE-754

    Get PDF
    The posit number system is an elegant encoding of floating-point values proposed as a drop-in replacement for the IEEE-754 standard. On the one side, posits sacrifice some of IEEE-754 complexity (directed rounding modes, infinities, NaNs). On the other side, their variable-size exponent and significand fields require extra encoding and decoding steps, and their higher best-case accuracy requires wider data-paths. The posit encoding/decoding overhead can be reduced by keeping posits decoded in processor registers, with the operators suitably modified to avoid double-rounding issues.An unbiased quantitative comparison of the hardware costs of these two encodings is based on an analytical study and an open-source C++ library suitable for High-Level Synthesis. This library offers posit and IEEE-754 parametrized operators for addition/subtraction, multiplication, and exact accumulation, all developed with the same high design effort and fully compliant to their respective standards.This library improves the state of the art of posit hardware arithmetic, and still, IEEE-754 operators remain between 30% and 60% faster and smaller than their posit counterparts.Les posit sont un encodage des nombres en virgule flottantes présentés comme une alternative au standard IEEE-754.D'un côté, les posit se débarassent d'une partie de la complexité des IEEE-754 (arrondis dirigés, infinis, NaN).De l'autre, l'encodage à taille variable de leur exposant et fraction nécessitent une étape de décodage et d'encodage supplémentaire, et leur meilleure précision maximale nécessitent des chemins de données plus larges.Le surcoût lié à l'encodage/décodage des posit peut être réduit en gardant les posit décodés dans les registres du CPU, en modifiant les opérateurs de façon à éviter les problèmes de double arrondi.Une comparaison quantitative et non biaisée du coût matériel de ces deux encodages est basée sur une étude analytique et une bibliothèque C++ open-source, compatible avec les outils de synthèse haut niveau (HLS). Cette bibliothèque offre des opérateurs pour l'addition/soustraction, multiplication et exact accumulation pour des formats posit et IEEE-754 arbitraires. Les opérateurs pour ces deux encodages sont développés avec le même effort et suivent leurs standards respectifs.Les opérateurs proposés améliorent l'état de l'art des opérateurs arithmétiques posit, et malgré cela les opérateurs IEEE-754 restent entre 30% et 60% plus rapide et plus petits que leur équivalent posit
    corecore