Releases: ferrandi/PandA-bambu
Releases · ferrandi/PandA-bambu
PandA release 2023.1
Tue 14 March 2023, PandA release 2023.1
Tenth public release of PandA framework.
- Support for LLVM 13
- Support for Xilinx Alveo and Xilinx Kintex FPGA boards
- Support for ac_channels and hls::stream interfaces
- Various bug fixes and stability enhancement
What's Changed
- Refactor/dynamic generator by @Ansaya in #70
- Axi infer by @Ansaya in #72
- Fix/fix soft float by @fabrizioferrandi in #74
- Fix/generic by @Ansaya in #76
- Fix/generic by @Ansaya in #77
- Typo fix by @Ansaya in #78
- Doc/fpl22 by @Ansaya in #79
- Reversible soft multiplication replacement by @Ansaya in #80
- Axi infer by @barClaudio in #82
- Doc/tutorials by @Ansaya in #84
- Feature/new devices by @SerenaC94 in #92
- Added an initial support for binary based testbench. by @fabrizioferrandi in #93
- Feature/large struct by @fabrizioferrandi in #95
- Interface inference upgrade by @Ansaya in #98
- Support for LLVM 13 by @Ansaya in #100
- Feature/u280 characterization by @Ansaya in #102
- Fix/smod2 by @fabrizioferrandi in #103
- New Interconnection step by @fabrizioferrandi in #104
- Fixed typo by @gggg100 in #106
- Fix/testbench generation by @Ansaya in #109
- Fix/lto compilation by @Ansaya in #115
- Fixed module naming consistency by @gggg100 in #116
- Merge/private by @Ansaya in #117
- HLS allocation constraints fix by @Ansaya in #118
- Code refactoring by @Ansaya in #121
- Updated testbench by @gggg100 in #120
- Fix/memory aliasing by @Ansaya in #123
- Fix/bambu parameter by @fabrizioferrandi in #124
- Feature/nx power estimation by @Ansaya in #128
- Done registration condition fix by @Ansaya in #129
- Fix/hls soft div by @Ansaya in #130
- Added specific test for open function by @gggg100 in #132
- Dev/panda by @Ansaya in #133
New Contributors
Full Changelog: v0.9.8...v2023.1
Link to the binary AppImage: https://release.bambuhls.eu/bambu-2023.1.AppImage
PandA release 0.9.8
Sun 12 June 2022, PandA release 0.9.8
Ninth public release of PandA framework.
New features introduced:
- Added an LLVM based tree height reduction step.
- Updated support to NanoXplore NXmap: NXmap3 support, NG-ULTRA nx2h540tsc device family support
- Added support for AXI Master interface.
- Improved regression test, benchmarking, and integration flow through GitHub Actions workflows
What's Changed
- Fix m64 by @fabrizioferrandi in #50
- Allocavar names by @SerenaC94 in #51
- Unique return fix by @fabrizioferrandi in #53
- Added support to smax,smin,umin and umax clang/llvm 12 instrinsics. by @fabrizioferrandi in #54
- Removed an unused field. by @fabrizioferrandi in #55
- Fix/ci by @Ansaya in #58
- Fix/ci by @Ansaya in #60
- Fix/minor by @Ansaya in #61
- Doc/bambu101 by @Ansaya in #62
- Feature/nxmap update by @Ansaya in #65
- Dev/panda by @Ansaya in #59
- Device/nx2h540tsc by @Ansaya in #67
- Dev/panda by @Ansaya in #68
- Dev/panda by @Ansaya in #69
New Contributors
- @SerenaC94 made their first contribution in #51
- @Ansaya made their first contribution in #58
Full Changelog: v0.9.7...v0.9.8
Link to the binary AppImage: https://release.bambuhls.eu/appimage/bambu-0.9.8.AppImage
PandA release 0.9.7
Sun 20 March 2022, PandA release 0.9.7
Eighth public release of PandA framework.
New features introduced:
- Added support to CLANG/LLVM compiler versions 8, 9,10, 11 and 12.
- Added support to Xilinx Vitis HLS LLVM 2020.2. https://github.com/Xilinx/HLS
- Added support to Svelto methodology. Reference paper: M. Minutoli, V. Castellana, N. Saporetti, S. Devecchi, M. Lattuada, P. Fezzardi, A. Tumeo, and F. Ferrandi, “Svelto: High-Level Synthesis of Multi-Threaded Accelerators for Graph Analytics,” IEEE Transactions on Computers, iss. 01, pp. 1-14, 2021.
- Added support to Tensor flow optimization. Reference paper: M. Siracusa and F. Ferrandi, “Tensor Optimization for High-Level Synthesis Design Flows,” IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, Best Paper Candidate of CODES+ISSS 2020, vol. 39, iss. 11, pp. 4217-4228, 2020.
- Example of integration between Soda-Opt (https://gitlab.pnnl.gov/sodalite/soda-opt) and Bambu: Reference paper: S. Curzel, N. Bohm Agostini, S. Song, I. Dagli, A. Limaye, C. Tan, M. Minutoli, V. G. Castellana, V. Amatya, J. Manzano, A. Das, F. Ferrandi, A. Tumeo, "Automated Generation of Integrated Digital and Spiking Neuromorphic Machine Learning Accelerators", 2021 40th International Conference on Computer-Aided Design (ICCAD).
- Paper describing the PandA-bambu framework: F. Ferrandi, V.G. Castellana, S. Curzel, P. Fezzardi, M, Fiorito, M. Lattuada, M. Minutoli, C. Pilato, A. Tumeo, "Invited: Bambu: an Open-Source Research Framework for the High-Level Synthesis of Complex Applications," 2021 58th ACM/IEEE Design Automation Conference (DAC), pp. 1327-1330.
- Improved support to discrepancy analysis. Reference paper: P. Fezzardi and F. Ferrandi, “Automated Bug Detection for High-Level Synthesis of Multi-Threaded Irregular Applications,” ACM Trans. Parallel Comput., vol. 7, iss. 4, 2020.
- Added initial support to ASIC flow based on Yosys+OpenROAD projects (see https://theopenroadproject.org/). Nangate45 and ASAP7 PDKs supported.
- Simplified the simulation/synthesis backends integration. In case the used simulator or synthesizer is in the system path, the configuration can be as simple as ../configure --prefix=/opt/panda
- Added support to multi-thread simulation when Verilator version 4 is used (it is disabled by default).
- Improved bambu memory consumption.
- Added support to AppImage bambu binary distribution (https://appimage.org/).
- Added support to xc7z045-2ffg900-VVD device.
- Added support to ECP5 Lattice semiconductor devices (e.g., LFE5UM85F8BG756C, LFE5U85F8BG756C).
- Improved and better integrated value range analysis.
- Improved support to interface synthesis by allowing references in called functions.
- Added a first support to axis interface.
- Simulation and synthesis tools are now detected at runtime. Configure options have been removed, now vendor specific install directories may be specified using Bambu option ---root= (e.g. --xilinx-root=/opt/Xilinx).
- Added a Google Colab notebook with many examples to play with Bambu.
What's Changed
- Panda 0.9.7 release by @fabrizioferrandi in #45
- Panda 0.9.7 dev by @fabrizioferrandi in #30
- Panda 0.9.7 release by @fabrizioferrandi in #46
Full Changelog: v0.9.6.1...v0.9.7
Link to the binary AppImage: https://release.bambuhls.eu/appimage/bambu-0.9.7.AppImage
PandA release 0.9.6.1
minor fixes
PandA release 0.9.6
Wed 1 January 2020, PandA release 0.9.6
Seventh public release of PandA framework.
New features introduced:
- Added support to BRAVE FPGAs (https://www.esa.int/Our_Activities/Space_Engineering_Technology/Shaping_the_Future/High_Density_European_Rad-Hard_SRAM-Based_FPGA-_First_Validated_Prototypes_BRAVE). Both NG-Medium and NG-Large are supported.
- added support to TASTE model-based design flow (https://taste.tools/). A new option has been added to activate the customized HLS flow: --experimental-setup=BAMBU-TASTE.
- Added support for Hardware Discrepancy Analysis. Reference paper: Pietro Fezzardi, Marco Lattuada, Fabrizio Ferrandi, Using Efficient Path Profiling to Optimize Memory Consumption of On-Chip Debugging for High-Level Synthesis. ACM Trans. Embedded Comput. Syst. 16(5): 149:1-149:19 (2017).
- Added support for OpenMP for. Reference papers: M. Minutoli, V. G. Castellana, A. Tumeo, M. Lattuada, and F. Ferrandi, “Efficient Synthesis of Graph Methods: A Dynamically Scheduled Architecture,” in Proceedings of the 35th International Conference on Computer-Aided Design, New York, NY, USA, 2016, p. 128:1–128:8. V. G. Castellana, M. Minutoli, A. Morari, A. Tumeo, M. Lattuada, and F. Ferrandi, “High level synthesis of RDF queries for graph analytics,” in Proceedings of the IEEE/ACM International Conference on Computer-Aided Design, 2015, pp. 323-330.
- Customized Dynamic HLS flow updated. Reference paper: M. Lattuada and F. Ferrandi, "A Design Flow Engine for the Support of Customized Dynamic High Level Synthesis Flows", ACM Trans. Reconfigurable Technol. Syst. 12, 4, Article 19 (October 2019), 26 pages.
- Added initial support to C++/fortran high-level synthesis. Now, Ubuntu distributions require the installation of g++-multilib package.
- Added support to CLANG/LLVM compiler version 4, 5, 6 and 7. On multiple files, LTO is exploited.
- Added support to high-level synthesis of spec in LLVM format (i.e., file with .ll extension).
- Added to CLANG/LLVM based analysis an interprocedural value range analysis based on the following paper: Fernando Magno Quintao Pereira, Raphael Ernani Rodrigues, and Victor Hugo Sperle Campos. "A fast and low-overhead technique to secure programs against integer overflows", In Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO) (CGO '13). Washington, DC, USA, 1-11.
The implementation started from code available at this link:https://code.google.com/archive/p/range-analysis/.
The original code went through a deep revision and it has been changed to be compatible with a recent version of LLVM. Some extensions have been also added:- Added anti range support.
- Redesigned many Range operations to take into account wrapping and to improve the reductions performed.
- Integrated the LLVM lazy value range analysis.
- Added support to range value propagation of load from constant arrays.
- Added support to range value propagation of load and store from generic arrays.
- Added to CLANG/LLVM based analysis an Andersen based pointer analysis . The specific version used is described in:
"The Ant and the Grasshopper: Fast and Accurate Pointer Analysis for
Millions of Lines of Code", by Ben Hardekopf & Calvin Lin, in PLDI 2007.
The BDD library used is the Buddy BDD package By Jørn Lind-Nielsen. Users working on a Debian/Ubuntu distribution can install the libbdd-dev package. - Added support to GCC compiler version 8.
- Added support to mingw-w64. A Windows-7 64bit binary distribution is now available. This minimal msys2 binary distribution includes bambu, GCC8 with plugin and multilib enabled and a customized version of clang7.
- Added support to Mac OSX exploiting Mac Ports project (https://www.macports.org/)
- Improved the vagrant based virtual machine generation scripts. Such scripts now create an Ubuntu 16.04 32bit VirtualBox image and an Ubuntu 18.04 64bit VirtualBox image.
- Added Vagrant scripts for Ubuntu precise, trusty,xenial and bionic, Fedora 29, CentOs7, MacOSX MacPorts.
- Improved timing constraints and timing reports.
- Added --registered-inputs=top option.
- Improved the support for discrepancy when Verilator is used as simulator and a better check of basic floating-point operations.
- Added an example using C++14 constexpr declaration and a simple GCD example written in C++.
- The building system is now based on a single configure.ac.
- Regressions are now exploiting a Jenkins based infrastructure.
- Some performance, style, and c++ improvements have been done following the suggestions coming from cppcheck, clang static analyzer, and Codacy.
- A single-precision floating-point faithfully rounded powf function has been added. It follows the method published in:
Florent De Dinechin, Pedro Echeverria, Marisa Lopez-Vallejo, Bogdan Pasca. Floating-Point Exponentiation Units for Reconfigurable Computing. ACM Transactions on Reconfigurable Technology and Systems (TRETS), ACM, 2013, 6 (1), pp.4:1–4:15.
The powf function currently does not supports subnormals. - Ported some parts of the code to C++11 standard by applying clang-tidy modernize-deprecated-headers, modernize-pass-by-value, modernize-use-auto,
modernize-use-bool-literals, modernize-use-equals-default, modernize-use-equals-delete, modernize-loop-convert and modernize-use-override. - Added a SRT4 implementation. Added --hls-fpdiv to select which floating-point division will be used. Current options: SRT4 for Sweeney, Robertson, Tocher floating-point division with radix 4 and G for Goldschmidt floating point division.
- Added support to ac_types and ac_math library from Mentor Graphics. Concerning the original library, the bambu/PandA library does support both LLVM/Clang and GCC compiler and it requires c++14 standard for the compilation. Initial support to ap_* objects used by VIVADO HLS has been added as well.
- Added support to top design interfaces: none (ap_none), acknowledge (ap_ack), valid (ap_vld), ovalid (ap_ovld), handshake (ap_hs), fifo (ap_fifo) and array (ap_memory). These interfaces are activated by pragmas added to the source code and when the option --generate-interface=INFER is passed to bambu. Examples of pragma use can be found in panda_regressions/hls/bambu_specific_test4.
- Added some examples taken from https://github.com/Xilinx/HLx_Examples
- Added option --clock-name, --reset-name, --start-name and --done-name to specify the top component controlling signal names.
- Renamed top component and removed the suffix _minimal_interface. Now, the top component has the same name of the top function.
- Improved and fixed the synthesis of empty functions.
- Added option --VHDL-library=libraryname to specify the library in which the synthesized function has to be compiled.
- Extended the VHDL support to other bambu library components.
- If it is supported, the compiler used to compile the PandA framework uses the c++17 standard (-std=c++17), otherwise, it uses c++11 standard.
- Integrated Mockturtle library from EPFL (https://github.com/lsils/mockturtle) to simplify LUT-based expressions.
- Integrated Abseil C++ libraries (https://abseil.io/)
- Added examples of parallel_queries from ICCAD15 and ICCAD16 papers.
- Added FPT tutorial material.
- Added PNNL19 tutorial material.
- Added PACT19 tutorial material.
- Improved makefile parallelization.
- Improved bambu determinism: two runs with the same specs produce the same HDL output.
- Fixed COND_EXPR_RESTRUCTURING step
- Fixed omp tests
- Fixed libm tests
- Fixed make check and on cpp examples
- Fixed c++ struct initialization
- Fixed floating point division
- Fixed make dist command under Github repository