HLSLibs ac_math Algorithmic C Math Library

发布时间 2023-07-24 10:56:38作者: sinferwu

 

HLSLibs is a free and open set of libraries implemented in standard C++ for bit-accurate hardware and software design

 

HLS LIBS - High-Level Synthesis Libraries' Homepage

 

hlslibs/ac_types: Algorithmic C Datatypes (github.com)

https://github.com/hlslibs/ac_types/blob/master/pdfdocs/ac_datatypes_ref.pdf

 

 

hlslibs/ac_math: Algorithmic C Math Library (github.com)

 

hlslibs/ac_dsp: Algorithmic C Digital Signal Processing (DSP) Library (github.com)

 

 

Xilinx/finn-hlslib: Vitis HLS library for FINN (github.com)

 

Xilinx/mlir-aie: An MLIR-based toolchain for Xilinx Versal AIEngine-based devices. (github.com)

Xilinx/finn: Dataflow compiler for QNN inference on FPGAs (github.com)

 

 

Welcome to hlslibs!

HLSLibs is a free and open set of libraries implemented in standard C++ for bit-accurate hardware and software design. The goal of HLSLibs is to create an open community for exchange of knowledge and IP for HLS (High-Level Synthesis) that can be used to accelerate both research and design. The libraries are targeted to enable a faster path to hardware acceleration by providing easy-to-understand, high-quality fundamental building blocks that can be synthesized into both FPGA and ASIC. HLSLibs are delivered as an open-source project on GitHub under the Apache 2.0 license and contributions are welcome.

Quantized Waveform

AC Datatypes

The Algorithmic C datatypes include a numerical set of datatypes and an interface datatype for modeling channels in communicating processes in C++. The numerical datatypes provide an easy way to model static bit-precision with minimal runtime overhead. They include bit-accurate integer, fixed-point, floating-point and complex datatypes. The numerical datatypes were developed in order to provide a basis for writing bit-accurate algorithms to be synthesized into hardware.

 
Unit Circle

AC Math

The Algorithmic C Math Library contains synthesizable C++ functions commonly used in Digital Signal Processing applications. The functions use the Algorithmic C data types and are meant to serve as examples on how to write parameterized models and to facilitate migrating an algorithm from using floating-point to fixed-point arithmetic where the math functions either need to be computed dynamically or via lookup tables or piecewise linear approximations. The library includes basic math functions (reciprocal, log, exponent, square-root, sin/cos/tan, etc) as well as a matrix storage class and linear algebra functions like multiplication, determinant, Cholesky Inverse/Decomposition, etc. Each function comes with a unit test to demonstrate usage and measurement of errors due to approximations.

 
IIR Filter

AC DSP

The Algorithmic C Digital Signal Processing Library contains synthesizable C++ objects for common DSP operations like filters and Fast Fourier Transforms. The functions use a C++ class-based object design so that it is easy to instantiate multiple variations of objects into a more complex subsystem and utilizes the AC Datatypes for true bit-accurate behavior. The filter block set includes CIC Interpolation and Decimation, FIR filters, IIR filters, Moving Average Filters and Polyphase Interpolation/Decimation. The FFT block set includes various FFT architectures including Decimation-in-Time and Decimation-in-Frequency, various radix modes and various buffer architectures (memory-exchange, single-delay-feedback, in-place).

 
Convolutional Neural Network (CNN) representation

AC ML

The Algorithmic C Machine Learning Repository contains IP and reference designs for machine learning.

 





MatchLib Connections

MatchLib Connections

MatchLib Connections is a SystemC library implementing latency-insensitive channels for use by HLS tools. The Connections classes are parameterized and can be used to model hardware systems at a level of abstraction higher than RTL, while enabling HLS tools to generate efficient hardware. Connections also enable fast and accurate simulation and verification of hardware systems in SystemC prior to synthesis.

Additional documentation on the Connections library can be found here. Connections are a component of the MatchLib hardware component library, available here. For more documentation about compiling and running Connections components, see the MatchLib Documentation.

 
Convolutional Neural Network (CNN) representation

MATCHLIB TOOLKIT

The MatchLib Toolkit repository contains a number of examples of MatchLib applied to various design styles and methodologies. Each example includes the SystemC code, a makefile to compile and execute the design and Catapult command scripts for synthesizing the design. The toolkit provides a simple set_vars.csh/set_vars.sh script that can download all third-party open-source software required to execute the examples if you do not have a Catapult installation.

 

 

 

 

2. 高层次综合(HLS)设计实例与教程 (intel.cn)