-
Notifications
You must be signed in to change notification settings - Fork 480
Vitis Unified Backend #1376
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Vitis Unified Backend #1376
Conversation
…i wrapper for vitisUnified partial backend and build the skeleton code for other generation section
…t from insufficient buffer size
Thank you for this contribution! Could you please elaborate how this would compare against the Vitis Accelerator IP flow in #1134? Both PRs seem to add support for end-to-end deployment on ZCU devices. |
Why we can't completly reuse fifo depth optimization code from vitis
Vitis backend/Vitis Unified backend differeceslayer name diff in
|
backend | loop_name (col 0) | layer_name (col 1) | <empty_cell> (col 2) | linked_file_name (col 3) |
---|---|---|---|---|
vitis | <loop_name> | layer14_out_U | <empty_cell> | chan_status6.csv |
vitis unified | <loop_name> | layer14_out_i_U | <empty_cell> | chan_status6.csv |
- since vitis unified has the axi wrapper that convert axi memory map to axi stream, it makes layer_name (col 1) have extra (_i)
different place of HLS work directory
- hls internal project directory dir
- vitis backend locate the project @
<outputDir>/<project_name>_prj/solution1/.autopilot/db/channel_info.csv
- vitis unified locate the project @
<<outputDir>>/unifiedWorkspace/<project_name>/unifiedPrj/hls/.autopilot/db/channel_info.csv
- vitis backend locate the project @
- the place is differnet because I think that gathering the HLS work place and linking work place in the dedicated directory to prevent it polutes other HLS4ML file structures. And, I think it would be easier for managing the project's subsystem using Vitis Unified Ide.
summarize
- from layer name and work dir diff make Vitis Unified Backend must have its own
get_vitis_optimized_fifo_depths
Briefly compare with Vitis Accelerator IP Flow
differencesthe linking progress
the kernel
file structure and configuration support
multigraph support
|
Thank you for your comment. The one above is a comparison with the Vitis accelerator IP flow. If there are any aspects you would like me to elaborate on, please let me know. |
Description
VitisUnified backend
Motivation
Summarized features
/tools/Xilinx/Vitis/2023.2/base_platforms
https://github.com/Xilinx/Vitis-Tutorials/tree/2025.1/Vitis_Platform_Creation/Design_Tutorials/01-Edge-KV260
Type of change
For a new feature or function, please create an issue first to discuss it
with us before submitting a pull request.
Note: Please delete options that are not relevant.
Tests
test/pytest/test_backend/vitis_unified.py
with 4 main aspectbridge test
VitisUnified
withVitis
cosimulation
fifo test optimization
hardware test
test_gen_unified
intest reproduce
test/pytest/test_backend/vitis_unified.py
filetest_gen_unified
), you should specify XPFM_PATH(path to xpfm file) to the correct place.LOG_STD == True
, HLS4ML will give the HLS+linker compiling message @ console.<output_project_dir>/<prefix>_err.log
or<output_project_dir>/<prefix>_out.log
Test Configuration:
Checklist
pre-commit
on the files I edited or added.implementation detail
file generation
(HLS4ML generated file) prepare file for system Generation and pynq driversynthesis Kernel
(Synthesis Kernel (v++)) do c-synthesis for HLS4ML modellinker
(Linker+vivado+Bitfile+hwh)File structure
template structure
hls4ml/templates/vitis_unified
output file structure
configuration
input_type
andoutput_type
are support only float and double. And it must be match{in/out}_stream_buf_size
unit is in amount elements of thennet::array
xpfmPath
note to developer
unifiedWorkspace
. The IDE will automatically detect your projectinput_type/output_type
was set totype x
(double or float), you cannot predict with numpy array with different input/output typedepth
argument @axi_master write
@<project_name>_dm.cpp
must be match of the array size generated the output array@ ````myproject_test.cpp``` for cosim and csim.<project_folder>/unifiedWorkspace/linker/_x/link/vivado/vpl/prj
note to tutorial
https://github.com/Tanawin1701d/vitisUnifiedTutorial
generated warning
unused parameter
,deprecated pragma
,dataflow conflict