目录
2.1 Aggregation_Disaggregation
2.1.1 aggregation_of_m_axi_ports (DONE)
2.1.2 aggregation_of_nested_structs
2.1.4 auto_disaggregation_of_struct
2.1.5 disaggregation_of_axis_port
2.2.3 max_widen_port_width (DONE)
2.2.4 memory_bottleneck (DONE)
2.3.2 using_axi_lite_with_user_defined_offset
2.4.1 axi_stream_to_master (DONE)
2.4.3 using_axi_stream_no_side_channel_data
2.4.4 using_axi_stream_with_side_channel_data
2.4.5 using_axi_stream_with_struct
2.4.6 using_axis_array_stream_no_side_channel_data
3.3.4 using_free_running_pipeline (DONE)
4.1.2.6 using_stream_of_blocks
4.2.1 handling_deadlock (DONE)
4.2.2 mixed_control_and_data_driven
4.2.3 simple_data_driven (DONE)
5.4 free_running_kernel_remerge_ii4to1
5.6 using_arbitrary_precision_arith
5.7 using_arbitrary_precision_casting
5.9 using_float_and_double (DONE)
5.11 variable_bound_loops (DONE)
6.1.4 static_array_of_struct_with_array_RAM
6.1.5 static_struct_with_array_RAM
6.1.6 static_struct_with_array_RAM_Versal
1. 示例集合概述
GitHub - Xilinx/Vitis-HLS-Introductory-ExamplesContribute to Xilinx/Vitis-HLS-Introductory-Examples development by creating an account on GitHub.https://github.com/Xilinx/Vitis-HLS-Introductory-Examples此示例集与先前的博客《Vitis HLS 学习笔记--HLS优化指令示例-目录-CSDN博客》相得益彰,分别聚焦于展示HLS功能和演示HLS优化指令。与之前的博客相比,需要同时编译宿主代码和PL(可编程逻辑)代码,而本示例集则可完全在Vitis HLS仿真环境下运行,使得效果展示更为直观。这两者互为补充,共同促进了对Vitis HLS的深入理解和掌握。
本示例集分类如下:
- Interface(接口):展示各种模式和接口协议使用的常见示例
- Pipelining(流水线):展示循环和函数的流水线pragma使用的常见示例
- Task_Level_Parallelism(任务级并行):展示任务级并行编程模型和拓扑结构示例
- Modeling(建模):数学和DSP示例以及其他常见使用模型/算法
- Misc(其他):例如C++中的RTL黑盒等其他示例
2. Interface 接口
2.1 Aggregation_Disaggregation
2.1.1 aggregation_of_m_axi_ports (DONE)
#pragma HLS AGGREGATE compact=auto
《Vitis HLS 学习笔记--聚合与解聚-AXI主接口-CSDN博客》
2.1.2 aggregation_of_nested_structs
嵌套结构体
2.1.3 aggregation_of_struct
2.1.4 auto_disaggregation_of_struct
2.1.5 disaggregation_of_axis_port
2.1.6 struct_ii_issue
迭代间隔违规
2.2 Memory
2.2.1 ecc_flags
Error Checking and Correcting
2.2.2 manual_burst (DONE)
如果在设计中并未发生自动突发,则可使用 hls::burst_maxi 数据类型执行手动突发。
《Vitis HLS 学习笔记--MAXI手动控制突发传输-CSDN博客》
2.2.3 max_widen_port_width (DONE)
可选参数max_widen_bitwidth,因为Compiler会根据数据类型自动进行数据位宽的调整。
《Vitis HLS 学习笔记--MAXI位宽拓展-CSDN博客》
2.2.4 memory_bottleneck (DONE)
achive II=1 by removing redundant memory accesses in the code。
《Vitis HLS 学习笔记--优化本地存储器访问瓶颈-CSDN博客》
2.2.5 ram_uram (DONE)
BIND_STORAGE type=ram_2p impl=uram,DEPENDENCE inter WAR false,WAR is Write-After-Read
《Vitis HLS 学习笔记--资源绑定-使用URAM-CSDN博客》
《Vitis HLS 学习笔记--资源绑定-使用URAM(1)-CSDN博客》
2.2.6 rom_lookup_table_math
sin_table[i] = (din1_t)(32768.0 * real_val);
2.2.7 using_axi_master (DONE)
《Vitis HLS 学习笔记--AXI4 主接口-CSDN博客》
2.3 Register
2.3.1 using_axi_lite (DONE)
2.3.2 using_axi_lite_with_user_defined_offset
2.4 Streaming
2.4.1 axi_stream_to_master (DONE)
hls::stream<int,…> count; 是为了更方便自动优化实现流水线设计。
《Vitis HLS 学习笔记--AXI_STREAM_TO_MASTER-CSDN博客》
《Vitis HLS 学习笔记--理解串流Stream(1)-CSDN博客》