Vitis Accelerator IP Flow
Vitis Accelerator based on the IP Flow for Zynq devices (in contrast to #991 ), similar to the Vivado Accelerator.
- Inherits from the Vitis backend
- Generates the AXI wrapper around the typical hls4ml IP and the test bench
- Automatically creates a Vivado project with the block design, imports the IP, and generates the bitstream
Tested on
- Vivado and Vitis HLS v2023.2
- ZCU102 (pynq v3 ported on an ubuntu image) and PYNQ-Z2 (official v3.0.1 image) using AXI-Stream and
io_streamandio_parallelwith a small MLP - Tested the Vivado/VivadoAccelerator backends as well to check that nothing broke
To dos:
- [ ] Integrate AXI-Master interface as an option
- [x] Include tar generation with the bitstream, design files for pynq and the python driver for pynq
- [x] Include FIFO Depth Optimization as a backend pass (similar to #1037 )
Type of change
- [x] New feature (non-breaking change which adds functionality)
Tests
Pending unit tests
Test Configuration:
Checklist
- [x] I have read the guidelines for contributing.
- [x] I have commented my code, particularly in hard-to-understand areas.
- [x] I have made corresponding changes to the documentation.
- [ ] My changes generate no new warnings. Some warnings occur due to
ap_axi_sdata.h - [x] I have installed and run
pre-commiton the files I edited or added. - [x] I have added tests that prove my fix is effective or that my feature works.
Hi @steltze The pre-commit fails because apparently you need to add hls4ml/backends/vitis_accelerator_ip_flow/supported_boards.json to the MANIFEST.in explicitly, similar to https://github.com/fastmachinelearning/hls4ml/blob/main/MANIFEST.in#L9 (no idea why that's necessary).
Did you also have a look at the comment from @DivineMK?
@nghielme are you happy with how your comments have been addressed?
We should be able to merge this soon, hopefully.
Hi @JanFSchulte, I'll make sure to apply those changes and anything from @nghielme 's side since he has used this feature extensively.
There are a few open points that I will list once I start working on it again. Those points should probably be addressed in a different PR.