目录
1. 简介
2. 实用软件操作
2.1 C/RTL Cosimulation 选项
2.2 Do not show this dialog again
2.3 New Solution
2.4 对比 Solution
2.5 以命令行方式运行(windows)
2.6 文本缩放快捷键
2.7 查看和修改快捷键
2.8 将Vitis HLS RTL 导入 Vivado IP
3. Schedule Viewer
3.1 概览
3.2 示例一
3.3 理解函数执行细节
4. 总结
1. 简介
本文持续更新,分享一些实用操作指引,为提高使用Vitis HLS IDE效率。
2. 实用软件操作
2.1 C/RTL Cosimulation 选项
2.2 Do not show this dialog again
可随时在Solution Settings中恢复或者设置。
2.3 New Solution
2.4 对比 Solution
选中两个solution即可对比
2.5 以命令行方式运行(windows)
D:\Xilinx\Vitis_HLS\2022.1\bin\vitis_hls_cmd.bat
Or 开始菜单中:
>> vitis_hls -gui
>> vitis_hls -i #命令行
2.6 文本缩放快捷键
Ctrl + =:放大文本
Ctrl + -:减小文本
2.7 查看和修改快捷键
2.8 将Vitis HLS RTL 导入 Vivado IP
3. Schedule Viewer
3.1 概览
调度查看器,显示函数的每项操作和每个控制步骤,以及执行操作和步骤的时钟周期。
界面最左侧Operation\Control Step是指程序的操作码运行过程。
右侧右侧是时序视图,在同一周期内出现的指令,它们是并行执行的。
属性解释:
Bitwidth,位宽,对应运算的位宽。
Name,名称,包含代码的位置。
Op Latency,运算时延,显示运算或存储的绑定的默认时延或指定时延。
Opcode:操作码,请区分“指令码”。
指令码是指令的完整二进制编码,包含了 操作码 以及用于指定 操作数 和 操作细节 。操作码通常包含在指令码前几位,表示指令的类型和功能,例如加法、乘法、逻辑操作等。
3.2 示例一
#include <ap_int.h>
void foo(ap_int<8> xin[3],
ap_int<8> a,
ap_int<8> b,
ap_int<8> c,
ap_int<17> yo[3]) {
int i = 0;
loop:
for(i = 0; i < 3; i++){
yo[i] = a * xin[i] + b + c;
}
}
编译器会自动执行优化
3.3 理解函数执行细节
在linux中,可以通过以下命令来了解函数的具体调用过程:
gcc -E tt.c -o tt.i
gcc -S tt.i -o tt.S
总结:
- 调用函数后,压栈pushq最先被执行
- 然后参数复制movl到%rbp(base pointer)区
- 返回值存放在%eax(accumulator)寄存器中
- 保存返回值后,出栈popq
- 出栈后,函数返回ret
- 主函数读取返回值%eax
4. 总结
本文持续更新,计划将Vitis HLS所用到的高级操作全覆盖。