南京观海微电子---Vitis HLS设计流程(实例演示)——Vitis HLS教程

简介: 本课时通过一个具体实例,演示Vitis HLS的设计流程,包括工程创建、仿真、综合与协同仿真,并介绍如何通过不同Solution对比优化结果,帮助理解HLS从C++代码到RTL的转换过程及关键注意事项。

1. 前言

课时2我们介绍了Vitis HLS的设计流程,如下图所示:

算法或软件的设计和仿真都基于C/C++,通过HLS平台导出打包好的IP RTL代码,最后将该打包的IP加入到主工程使用。

本课时,我们通过一个具体的实例,演示HLS设计流程。

2. Vitis HLS设计注意事项

  • 在VitisHLS中,只有一个函数可以设为顶层综合函数,但不能是main()函数。
  • 任何在顶层函数下的子函数都会被综合,并且综合后得到代码的函数层级结构可以保留。

  • 有些代码和结构是不可被Vitis HLS综合的,包括动态分配存储空间、与操作系统相关操作等。

3. Vitis HLS设计示例

3.1 Vitis HLS工程建立

(1)新建Vitis HLS工程,如下图所示,工程名为“HLS_StartDemo”;

(2)指定要综合的顶层函数名称,此处我们填写待综合的函数名称为“VectorAdd”;

(3)可以在建立工程的时候,暂时不添加Testbench文件。

(4)创建Solution,同时要指定Solution名称,模块的时钟周期以及FPGA器件型号。

(5)添加示例代码,示例工程代码主要包含3个文件:

其中,VectorAdd.h 为头文件;VectorAdd.cpp为源文件;VectorAdd_tb.cpp为Test Bench。该工程代码主要实现的功能是:在一个for循环内,对一个数组做加法。顶层函数如下:

测试的Testbench部分截图如下:

Testbench里既包含了测试数据,也包含了正确的输出结果用于做仿真比较。

工程文件加完后,工程结构如下图所示:


3.2 仿真和综合

(1)对工程进行仿真,在菜单栏中点击“C Simulation”。

得到的仿真输出如下,可以看到结果显示“TestPass”。

(2)仿真通过后,对工程进行综合,在菜单栏中点击“C Synthesis”。

打开综合报告,可以看到C代码被综合成RTL代码后,使用的硬件资源评估、性能评估等等。

(3)综合通过后,对工程进行联合仿真,在菜单栏中点击“Co-Simulation”。

可以查看到联合仿真后的仿真报告。报告显示了联合仿真的状态为“Pass”,并附有一些性能评估报告。

(4)联合仿真通过后,我们可以打开波形查看窗口“Open Wave Viewer…”

更加直观的查看仿真结果是什么样子,查看结果时会自动打开Vivadao。

其中“Block-level IO Handshake”端口为握手端口信号:

以下为输入输出数组或变量端口,端口包含地址总线、使能信号、写使能信号、数据总线等:

3.3 创建另一个Solution

(1)创建新Solution

Vitis HLS给用户提供了非常方便创建新Solution的接口。用户可以点击工具栏上的“New Solution”来给同样的工程代码创建新的Solution。

新的Solution命名为“solution2”,同时我们勾选“Copy directives and constraints from solution: solution1”选项,即solution2拷贝了solution1原有的directives指令(该示例中,solution1的directives指令为空)。

(2)给命名为“myloop”的循环添加directive指令。右键“myloop”,点击“Insert Directive…”

我们选择了“HLS PIPELINE”指令(这些指令的含义将在后面课时着重讲解);

(3)针对“solution2”对工程进行综合,生成综合报告。

(4)在菜单栏中点击“Compare Reports…”,比较同样的工程在两个Solutions下综合出来的结果。

(5)由于在Vitis HLS 2021.1版本中,建立新工程(solution1)时即便没有添加directives,HLS会给solution默认添加“HLS PIPELINE”指令。而我们给solution2添加的directives也为“HLS PIPELINE”指令,因此两个Solutions综合编译出来的结果是一致的(大家可以尝试添加不同的directives指令,然后对比下不同Solutions综合编译出的结果)。

相关文章
USRP相关报错解决办法
USRP相关报错解决办法
541 1
|
机器学习/深度学习 存储 自然语言处理
基于AIGC的智能化数据资产盘点方案
基于AIGC的智能化数据资产盘点方案
618 2
基于AIGC的智能化数据资产盘点方案
|
数据采集 机器学习/深度学习 监控
Arm Coresight 介绍
Coresight 是 ARM 架构上的一款嵌入式系统监控和调试工具,能够为系统管理员和开发人员提供便捷的系统监控和调试功能。该平台可以实时追踪和分析处理器上的活动,以深入了解潜在的性能瓶颈和问题。本文将介绍Coresight的概念、优势及其安装、配置、故障排除和调试等方面的内容,并探讨其未来发展方向和重要性。
2706 1
|
数据库管理
SVN 执行cleanup报错:Cleanup failed to process the following paths : 解决方法
引用:https://www.cnblogs.com/pinpin/p/11395438.html 在SVN更新时提示文件被锁住了,要求执行 clean up操作,执行clean up时又报clean up failed。造成的原因是在某次更新后,点击了cancel按钮,操作没有完成所以会锁住。解决方法如下:
2905 0
|
2月前
|
存储 弹性计算 人工智能
大模型应用开发
大模型应用开发指通过API与大模型交互,构建智能化应用。不同于传统Java开发,其核心在于调用部署在云端或本地的大模型服务。企业可选择开放API、云平台或本地服务器部署,各具成本、安全与性能权衡。本章将详解部署方式与开发实践,助你快速入门。
|
算法 数据安全/隐私保护 异构计算
基于FPGA的信号发生器verilog实现,可以输出方波,脉冲波,m序列以及正弦波,可调整输出信号频率
本项目基于Vivado2019.2实现信号发生器,可输出方波、脉冲波、m随机序列和正弦波。完整程序无水印,含详细中文注释与操作视频。FPGA技术使信号发生器精度高、稳定性强、功能多样,适用于电子工程、通信等领域。方波、脉冲波、m序列及正弦波的生成原理分别介绍,代码核心部分展示。
|
12月前
|
Web App开发 安全 Linux
【独家揭秘2025】VMware Workstation Pro虚拟机:免费安装教程大放送,一键解锁操作系统模拟神器!
VMware Workstation Pro 是由威睿(VMware)公司开发的一款功能强大的桌面虚拟化软件,允许用户在同一台物理计算机上同时运行多个操作系统,如Windows、..
1268 2
【独家揭秘2025】VMware Workstation Pro虚拟机:免费安装教程大放送,一键解锁操作系统模拟神器!
|
存储 安全 数据安全/隐私保护
移动APP安全加固技术深度解析
【7月更文挑战第12天】移动APP安全加固技术是保障移动应用安全的重要手段。通过对Android和iOS两大主流平台的安全加固,可以有效防止逆向分析、动态调试、数据篡改等安全威胁。在实际应用中,我们需要结合静态层面、动态层面和数据层面的加固技术,全方位地提升APP的安全性。同时,随着技术的不断发展,我们也需要不断关注新的安全威胁和加固技术,确保移动应用的安全性和稳定性。
1051 6
|
Unix Shell Linux
在Linux中,什么是 BASH?
在Linux中,什么是 BASH?
|
网络安全 数据安全/隐私保护
SSH免密码登录(设置后仍需输密码的原因及解决方法)
ssh免密码登录的原理: 机器A 向 机器B 进行免密码登陆 step1:  在机器A中生成 私钥和公钥: ssh-keygen -t rsa 此时在 ~/.
6488 0