UG871 Vivado HLS 学习笔记(1)

简介

博主参考了 Xilinx UG871 文档,记录了 Vivado HLS 学习过程中的一些知识点和技巧,本文主要简单介绍 Vivado HLS 的工作流和一些问题的解决方案,之后会在阅读推进 UG871 的文档的同时不断的更新。

开发环境

  • Ubuntu 18.04 LTS.
  • Xilinx Vivado HLS 2019.1.

学习笔记

- Vivado HLS 主要用于将 C/C++ 代码高层次综合成 RTL 级的硬件描述语言,并导出 IP 核,供 Vivado Design Suite 使用,HLS 的基本工作流程是

  • C Simulation/Validation - 主要用来验证 C 代码的正确性。
  • C Synthesis - 对 C 代码进行综合并生成报告(监测 performance and resource utilization)
  • C/RTL Co-Simulation - 对 RTL 设计进行仿真和验证。
  • Export RTL as IP - 将验证好的 RTL 代码导出为可用的 IP 核。

- 新建一个基本的 HLS 项目需要

  1. Design Source: 实现功能的 Source C files (functions written by C/C++)
  2. Test Bench: 用来验证功能正确性的 C file (include main function),其中也包含了一些参考的验证文件。
  3. Solutions,Clock period (对于一个功能有不同的解决方案,也需要确定基本的时钟周期)
  4. 设备型号。

其中 1 和 2 需要自己提供实现和验证的功能的 source codes,3 和 4 在 HLS 中自己配置即可。

- Solution

HLS 项目中可以有多个 Solution,不同的 Solution 对代码有不同角度的优化,resource, throughput 等,他们也会产生不同的结果。

- HLS GUI

在 HLS GUI 下,用户可以容易找到上面不同的部分,其中还提供了三种模式

  1. Debug: 用来调试 C 源程序。
  2. Sythesis: 用来综合,仿真,导出 IP。
  3. Analysis: 用来详细分析综合后的结果。

- 导出 IP 时的一个小 bug

按照正常的 HLS 开发流程到导出 IP 时,若使用的是老版本的 Vivado HLS,会有如下错误:

ERROR: [IMPL 213-28] Failed to generate IP.

这是由于 Xilinx 开发套件的时间设置所导致的,很多博客提出了调整时间的解决方案,方便的解决方式是打一个补丁即可,详情参考 Xilinx Customer Community.

导出的 IP 存储在 <project name>/<solution name>/impl/ip 下,里面有导出 IP 的 zip 文件

- 使用 Tcl 脚本进行 Vivado HLS 开发 

正常使用 GUI 进行 HLS 开发时,在 <project name>/<solution name>/constraints 下会有 script.tcl 文件 (具体可以 GUI 执行完查看一下),此文件提供了一种无需打开 GUI 在命令行进行 HLS 开发的方式,Linux 下运行以下代码即可执行 run_hls.tcl 文件中的 HLS 流程。

vivado_hls -f run_hls.tcl

其中如果出现 vivado_hls: command not found 的问题,去 Vivado 的安装目录下 (例如 /opt/Xilinx/Vivado/2019.1, 需要确认自己的安装位置) 找到对应版本,source settings64.sh 即可。

脚本执行完后,在 <project name>/<solution name> 文件夹下

  • syn 文件夹存储了综合的报告。
  • sim 文件夹存储了仿真的结果
  • impl 文件夹存储了 RTL 和 IP 相关的东西。

命令行启动 HLS 的方式如下

vivado_hls -p <project name>

- 优化设计方案

在 HLS 中,我们可以对 C 代码的不同部分添加 directive,从而实现对代码不同角度的优化。directive 可以单独存在在一个 tcl 文件中或是直接以 #pragma 的形式存在于 C source code 中。对于应用不同 directive 的 solution,我们会综合出不同的结果,生成不同的 report,不同 report 间可以比较。

总结

本文主要从宏观的角度介绍了 HLS 的开发流程,以及使用 HLS 开发软件的一些方式,遇到一些常见问题的解决方案,以及引出了对于同一个项目可以有不同角度的优化方案。之后的文章会基于 UG871 文档详细介绍 HLS 开发流程中的每个部分。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值