目录
[1. 简介](#1. 简介)
[2. 实用软件操作](#2. 实用软件操作)
[2.1 C/RTL Cosimulation 选项](#2.1 C/RTL Cosimulation 选项)
[2.2 Do not show this dialog again](#2.2 Do not show this dialog again)
[2.3 New Solution](#2.3 New Solution)
[2.4 对比 Solution](#2.4 对比 Solution)
[2.5 以命令行方式运行(windows)](#2.5 以命令行方式运行(windows))
[2.6 文本缩放快捷键](#2.6 文本缩放快捷键)
[2.7 查看和修改快捷键](#2.7 查看和修改快捷键)
[2.8 将Vitis HLS RTL 导入 Vivado IP](#2.8 将Vitis HLS RTL 导入 Vivado IP)
[3. Schedule Viewer](#3. Schedule Viewer)
[3.1 概览](#3.1 概览)
[3.2 示例一](#3.2 示例一)
[3.3 理解函数执行细节](#3.3 理解函数执行细节)
[4. 总结](#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所用到的高级操作全覆盖。