Vitis HLS 学习笔记--IDE软件高效操作指引

目录

[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所用到的高级操作全覆盖。

相关推荐
CCCC131016331 分钟前
嵌入式学习(day 28)线程
jvm·学习
星星火柴9361 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
小狗爱吃黄桃罐头1 小时前
正点原子【第四期】Linux之驱动开发篇学习笔记-1.1 Linux驱动开发与裸机开发的区别
linux·驱动开发·学习
艾莉丝努力练剑2 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
武昌库里写JAVA3 小时前
JAVA面试汇总(四)JVM(一)
java·vue.js·spring boot·sql·学习
Cx330❀4 小时前
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
c语言·数据结构·经验分享·笔记·算法·排序算法
杜子不疼.4 小时前
《Python学习之字典(一):基础操作与核心用法》
开发语言·python·学习
Turing_kun4 小时前
基于FPGA的实时图像处理系统(1)——SDRAM回环测试
fpga开发
小幽余生不加糖4 小时前
电路方案分析(二十二)适用于音频应用的25-50W反激电源方案
人工智能·笔记·学习·音视频
..过云雨5 小时前
01.【数据结构-C语言】数据结构概念&算法效率(时间复杂度和空间复杂度)
c语言·数据结构·笔记·学习