侵权投诉

探索Vivado HLS设计流,Vivado HLS高层次综合设计

电子设计 ? 2020-12-21 16:27 ? 次阅读

作者:Mculover666

1.实验目的
通过例程探索VivadoHLS设计流

  • 图形用户界面和TCL脚本两种方式创建VivadoHLS项目
  • 用各种HLS指令综合接口
  • 优化VivadoHLS设计来满足各种约束
  • 用不用的指令来探索多个HLS解决方案

2.实验内容
实验中文件中包含一个矩阵乘法器的实现,实现两个矩阵inA和inB相乘得出结果,并且提供了一个包含了计算结果的testbench文件来与所得结果进行对比验证。

3.实验步骤
3.1.在VivadoHLSGUI界面中创建项目
3.1.1.启动VivadoHLS2018.1

pIYBAF9uG1SAaMihAAap0JkfTQs638.png

3.1.2.创建一个新的工程

pIYBAF9uG1eAaeG-AAHvzBppQ2k984.png


o4YBAF9uG1mAbDMHAACPLxdLnMk262.png

添加提前创建好的源文件进来,因为我们探索的是设计流而不是编程:

pIYBAF9uG1qAbztuAACHlsASc1k570.png

添加提前创建好的测试文件进来:

o4YBAF9uG1yAVAdRAACEd52I2-U679.png

对于具体的FPGA进行解决方案配置,如图所示:

pIYBAF9uG16ADFyKAAEIqpr1vRI119.png


o4YBAF9uG1-AClWUAACLVc-KQLA360.png

工程创建完成,综合界面如图所示:

pIYBAF9uG2GAHUrfAAEbNm-buMY939.png

3.2.在VivadoHLS命令行中快速创建项目
在3.1节中采用GUI界面完成了创建工程的工作,这个工程命名和添加文件创建工程的工作可以由一个TCL脚本完成,可以大幅提高我们的效率~

3.2.1.打开VivadoHLS命令行界面

o4YBAF9uG2mAWRmZAAbkA0yKKbw912.png


o4YBAF9uG2uABkNaAABTplYaz6M605.png

3.2.2.编写创建工程TCL脚本
新建一个文件run_hls_pynq.tcl,然后编写以下工程配置:
#创建工程
open_project-resetmatrix_mult_prj

#添加源文件和测试文件
add_filesmatrix_mult.cpp
add_filesmatrix_mult.h
add_files-tbmatrix_mult_test.cpp

#设置工程顶层
set_topmatrix_mult

#创建解决方案
open_solution-resetsolution1

#选择具体的FPGA芯片配置
set_part{xc7z010clg400-1}
create_clock-period5

#模拟C代码
csim_design

exit

3.2.3.在VivadoHLS命令行运行TCL脚本
在刚刚打开的VivadoHLS命令行界面中输入cd,然后输入目录所在盘符,进入目录后使用命令vivado_hls-frun_hls_pynq.tcl即可运行脚本,完整过程如图所示:

pIYBAF9uG22AOvsZAAD47HZ-csU022.png

这样一个工程就创建好了;

3.2.4.在VivadoHLS命令行打开创建的工程
使用命令vivado_hls-pmatrix_mult_prj即可在GUI界面打开工程,如图:

pIYBAF9uG2-AfMzLAADWFSBGNTk677.png


o4YBAF9uG3GAKMwMAAEnOk5kbLs823.png

3.3.VidavoHLS中的设计优化
3.3.1.文件作用c

  • matrix_mult.cpp包含了迭代计算矩阵乘法的代码
  • matrix_mult.h包含了宏定义和函数声明
  • matrix_mult_test.cpp测试文件,包含了使用HLS硬件解决方案计算和软件计算的结果,并计算验证

3.3.2.运行C仿真
点击RunCSimulation按钮,然后不用选择,直接下一步,可以看到控制台输出:

pIYBAF9uG3KAJHVWAAAMtJbJOs8961.png

o4YBAF9uG3SAYxETAAEjf9_iBw0327.png

3.3.2.使用HLS综合C++++代码
点击CSynthesis按钮,VivadoHLS会开始综合C++代码,综合完成后会自动打开综合报告,其中详细的描述了设计的时序以及FPGA资源占用估算等:

o4YBAF9uG3WAZYnAAADVlQ88W00053.png

3.3.3.C/RTL共同协作
点击RunC/RTLCosimulation按钮,选择生成verilog语言文件,设计完成后会自动弹出结果,如图所示:

o4YBAF9uG3aAP48UAAAPFXSnDpc320.png

pIYBAF9uG3iAQ6eoAAA1o9YMico519.png

3.3.4.新建一个解决方案进行对比
点击NewSolution按钮新建一个解决方案:

pIYBAF9uG3mASiXIAAAS0h1SEJY322.png

然后打开matrix_mult.cpp文件,选择右边的directive视图,右击Product,选择InserDirective,然后选择PIPELINE,确定之后运行C综合来综合出RTL设计,完成后同样会弹出设计信息:

o4YBAF9uG3qAX0R_AAAi1ChPylE744.png

然后可以将报告与之前solution1的报告进行对比,

3.3.5.分析
进入Analysis视图:

pIYBAF9uG3yALn_nAADgWyiYSyY773.png

3.3.6.新建一个流水线解决方案

o4YBAF9uG32AIHXDAAAwSd_Tqg4050.png

3.3.7.解决方案对比

pIYBAF9uG36AFh6bAAAJ0jfYiS0431.png

o4YBAF9uG3-ABI7tAABZCjPw254844.png


o4YBAF9uG4GAPdJzAADqE2DLLgI643.png

3.4.接口综合
3.4.1.TCL脚本新建工程
在F:/SOC/PYNQ-Z2/HLSproject/hls/tut3C文件夹,使用命令:
vivado_hls-frun_hls_pynq.tcl

3.4.2.打开工程
vivado_hls-pmatrix_mult_prj

3.4.3.CSynthesis

pIYBAF9uG4OAGHaBAACgyjbGK0U079.png

编辑:hfy

收藏 人收藏
分享:

评论

相关推荐

vivado的fifo生成步骤介绍

fifo是FPGA中使用最为频繁的IP核之一,可以通过软件自动生成,也可以自主编写。下面介绍vivado的fifo生成步骤 1、打开ip核...
发表于 01-08 17:20 ? 0次 阅读
vivado的fifo生成步骤介绍

使用Vivado调用ROM IP核

  本例程主要使用Vivado 调用ROM IP核,用含有正弦曲线的.coe文件初始化ROM,最终通过仿真实现波形的显示   一、首...
发表于 01-08 17:16 ? 0次 阅读
使用Vivado调用ROM IP核

Vivado IP核锁定的解决办法分享

  发生IP核锁定,一般是Vivado版本不同导致的,下面介绍几种方法:      1 常用的方法   1)生成IP核的状态报告...
发表于 01-08 17:12 ? 0次 阅读
Vivado IP核锁定的解决办法分享

Vivado与ISE的开发流程以及性能差异

特性比较对 Vivado 和它的前一代设计套件,ISE 做一个组件功能上的平行比较和总结是很有用的。其目的是让那些具有在 ISE ...
发表于 01-08 17:07 ? 101次 阅读
Vivado与ISE的开发流程以及性能差异

Vivado中除法IP的注意事项

  第一个注意事项   首先可以在除法IP的定制界面看到被除数、除数、商的位宽有详细的说明:      从上面的位宽信息...
发表于 01-08 17:00 ? 0次 阅读
Vivado中除法IP的注意事项

如何使用FPGA内部的RAM以及程序对该RAM的数据读写操作

RAM是FPGA中常用的基础模块,可广泛用于缓存数据的情况,同样它也是ROM,FIFO的基础。本实验将为大家介绍如何使用...
发表于 01-07 16:05 ? 0次 阅读
如何使用FPGA内部的RAM以及程序对该RAM的数据读写操作

如何创建Vivado工程

  按键是FPGA设计当中最常用也是最简单的外设,本章通过按键检测实验,检测开发板的按键功能是否正常,并了解硬件描述语言...
发表于 01-06 17:48 ? 0次 阅读
如何创建Vivado工程

Vivado Waveform功能使用技巧详解

使用波形配置文件 Vivado Simulator允许用户自定义波形显示方式,当前的显示状态称作波形....
的头像 电子设计 发表于 01-03 09:22 ? 487次 阅读
Vivado Waveform功能使用技巧详解

Vivado下载程序步骤和ISE差异问题

由于Vivado下载程序步骤和ISE有较大差异,特此写此文章,希望对大家有所帮助。 1,下载文件生成....
的头像 39度创意研究所 发表于 01-02 10:45 ? 164次 阅读
Vivado下载程序步骤和ISE差异问题

Vivado设计之HLS开发详细步骤

对于Vivado Hls来说,输入包括Tesbench,C/C++源代码和Directives,相应....
的头像 39度创意研究所 发表于 01-02 09:45 ? 166次 阅读
Vivado设计之HLS开发详细步骤

通过实例设计来加深Verilog描述语法理解

作者:小鱼,Xilinx学术合作 一.概述 在文章《Verilog HDL入门思路梳理》我们说过应该....
的头像 39度创意研究所 发表于 01-02 09:45 ? 66次 阅读
通过实例设计来加深Verilog描述语法理解

Vivado使用技巧分享:OOC综合技术运行流程

创建综合运行 一个“运行(run)”是指定义和配置设计在综合过程中的各方面,包括:使用 的Xilin....
的头像 电子设计 发表于 01-02 09:03 ? 121次 阅读
Vivado使用技巧分享:OOC综合技术运行流程

FPGA开发Vivado的仿真设计案例分析

仿真功能概述 仿真FPGA开发中常用的功能,通过给设计注入激励和观察输出结果,验证设计的功能性。Vi....
的头像 电子设计 发表于 12-31 11:44 ? 397次 阅读
FPGA开发Vivado的仿真设计案例分析

Vivado的“Placement Exploration”配方案例分析

尽管 Vivado 不支持 “placement cost tale”的功能,InTime 却有一个....
的头像 电子设计 发表于 12-31 10:36 ? 157次 阅读
Vivado的“Placement Exploration”配方案例分析

使用Vivado Simulator运行功能和时序仿真案例

Vivado Simulator基本操作 Vivado Simulator是一款硬件描述语言事件驱动....
的头像 电子设计 发表于 12-31 10:02 ? 359次 阅读
使用Vivado Simulator运行功能和时序仿真案例

Vivado使用技巧:debug仿真设计的三种调试方法

源代码级别调试 Vivado Simulator提供了在仿真过程中debug设计的特性,通过为源代码....
的头像 39度创意研究所 发表于 12-29 15:57 ? 155次 阅读
Vivado使用技巧:debug仿真设计的三种调试方法

Vivado开发技巧:综合策略与合适的编译顺序

综合(Synthesis)是指将RTL设计转换为门级描述。Vivado开发套件中的综合工具是一款时序....
的头像 39度创意研究所 发表于 12-29 14:07 ? 301次 阅读
Vivado开发技巧:综合策略与合适的编译顺序

Vivado FPGA实现滤波器设计解决方案

在Vivado FIR滤波器设计与仿真(一)中产生了两路正弦信号,频率分别为4MHz和5MHz,今天....
的头像 39度创意研究所 发表于 12-28 12:57 ? 288次 阅读
Vivado FPGA实现滤波器设计解决方案

怎么利用官网和Vivado的Documention进行相关的操作

有的时候需要查找一些官网的例程进行学习和参考,但是总感觉无从下手,今天就教大家怎么利用官网和Viva....
的头像 FPGA之家 发表于 12-28 09:39 ? 183次 阅读
怎么利用官网和Vivado的Documention进行相关的操作

Xilinx ZYNQ开发案例HelloWorld实验工程

前言: 使用的板子是zc702。用Vivado的IP核搭建最小系统,包括ARM核(CPU xc7z0....
的头像 电子设计 发表于 12-26 11:48 ? 625次 阅读
Xilinx ZYNQ开发案例HelloWorld实验工程

Vivado HLS中常见的接口类型

Vivado HLS中常见的接口类型有: 1. ap_none ???????? 默认类型,该类型不....
的头像 39度创意研究所 发表于 12-26 11:44 ? 290次 阅读
Vivado HLS中常见的接口类型

使用vivado的过程如何清理/压缩不必要的文件

作者:材哥,玩儿转FPGA 前言 vivado和ISE的使用差别很大,Vivado是专门针对7系列和....
的头像 39度创意研究所 发表于 12-25 14:53 ? 175次 阅读
使用vivado的过程如何清理/压缩不必要的文件

SelectIO该怎么来实现LVDS的详细步骤

作者: 做但不能忘思考,FPGA2嵌入式 当我们使用一种新的IP核的时候,遇到的最大问题是:以前根本....
的头像 39度创意研究所 发表于 12-25 14:21 ? 239次 阅读
SelectIO该怎么来实现LVDS的详细步骤

FPGA开发:Vivado时序波形图保存和读取

如何存储关键数据的方法,属于规模测试验证的手段,但对于Verilog的调试过程还不够直观,因为无法确....
的头像 39度创意研究所 发表于 12-24 11:19 ? 152次 阅读
FPGA开发:Vivado时序波形图保存和读取

错误时钟偏移计算导致错误时序收敛的解决方案

描述 本设计咨询主要介绍一个错误的时钟偏移计算导致错误时序收敛的问题。 出现问题的情况: 这可能会影....
的头像 39度创意研究所 发表于 12-24 11:16 ? 434次 阅读
错误时钟偏移计算导致错误时序收敛的解决方案

vivado tri mode ethernet mac 不产生example design的解决办法

vivado tri mode ethernet mac 不产生example design
发表于 12-24 07:55 ? 0次 阅读
vivado tri mode ethernet mac 不产生example design的解决办法

基于VIVADO搭建ARM+FPGA系统架构实现软硬件联合开发

上一期,我们重点学习了ZYNQ的PL开发,本期我们侧重于进行PS开发的学习。我们将在 VIVADO ....
的头像 电子设计 发表于 12-23 16:54 ? 518次 阅读
基于VIVADO搭建ARM+FPGA系统架构实现软硬件联合开发

Vivado下头文件使用注意事项有哪些?

  头文件主要使用“文件包括”处理,所谓“文件包含”处理是一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文...
发表于 12-23 16:47 ? 101次 阅读
Vivado下头文件使用注意事项有哪些?

基于AXI总线的加法器模块解决方案

前面一节我们学会了创建基于AXI总线的IP,但是对于AXI协议各信号的时序还不太了解。这个实验就是通....
的头像 39度创意研究所 发表于 12-23 15:32 ? 326次 阅读
基于AXI总线的加法器模块解决方案

PYNQ移植ZCU102详细流程分析

在goggle上搜zcu102 pynq可以找到一些移植方法的信息 0. Prebuilt PYNQ....
的头像 电子设计 发表于 12-23 10:52 ? 177次 阅读
PYNQ移植ZCU102详细流程分析

PYNQ设计案例:基于HDL语言+Vivado的自定义IP核创建

作者:Mculover666 1.实验目的 用HDL语言+Vivado创建一个挂载在AXI总线上的自....
的头像 电子设计 发表于 12-21 16:34 ? 554次 阅读
PYNQ设计案例:基于HDL语言+Vivado的自定义IP核创建

浅析可提升Vivado编译效率的增量编译方法

增量编译:使用增量编译满足最后时刻 HDL 变动需求,仅针对已变动逻辑进行布局布线,从而可节省时间。
的头像 39度创意研究所 发表于 12-13 10:14 ? 609次 阅读
浅析可提升Vivado编译效率的增量编译方法

7 eries FPGAs SPI MultiBoot实现方式

7 Series FPGAs MultiBoot功能指让FPGA从2个或者多个BIT文件中加载一个B....
的头像 电子设计 发表于 12-11 14:58 ? 240次 阅读
7 eries FPGAs SPI MultiBoot实现方式

Vivado每个子步骤在综合之后要分析什么呢?

Vivado提出了UFDM(UltraFast Design Methodology)设计方法学,其....
的头像 Lauren的FPGA 发表于 12-05 09:47 ? 780次 阅读
Vivado每个子步骤在综合之后要分析什么呢?

基于PFGA的脱离Vivado单独建仿真环境工程

做FPGA样机和做芯片的思路其实是有差异的。为了追求好的性能,节省成本,降低功耗(PPA),芯片设计....
的头像 电子设计 发表于 12-03 12:53 ? 494次 阅读
基于PFGA的脱离Vivado单独建仿真环境工程

修改BRAM初始化值的避免综合与实现

1、引言 以交换机设计为例。在交换机设计前期,转发表项是固化在交换机内部的(给FPGA片内BRAM初....
的头像 39度创意研究所 发表于 11-30 15:37 ? 385次 阅读
修改BRAM初始化值的避免综合与实现

带大家一起体验一下Vivado的ECO流程

这里带大家一起体验一下Vivado 的ECO流程,以vivado自带的Example Design为....
的头像 FPGA之家 发表于 11-29 11:04 ? 313次 阅读
带大家一起体验一下Vivado的ECO流程

详细解析vivado约束时序路径分析问题

时序不满足约束,会导致以下问题: 编译时间长的令人绝望 运行结果靠运气时对时错 导致时序问题的成因及....
的头像 电子设计 发表于 11-29 10:34 ? 727次 阅读
详细解析vivado约束时序路径分析问题

vivado约束案例:跨时钟域路径分析报告

跨时钟域路径分析报告分析从一个时钟域(源时钟)跨越到另一个时钟域(目标时钟)的时序路径。
的头像 电子设计 发表于 11-27 11:11 ? 853次 阅读
vivado约束案例:跨时钟域路径分析报告

生成zynq裸核启动文件步骤解析

通过修改lscript.ld文件中的内容,可以改变在存储器中的执行位置, 因为ELF文件是加载到DD....
的头像 39度创意研究所 发表于 11-26 15:20 ? 498次 阅读
生成zynq裸核启动文件步骤解析

【vivado学习】典型时序模型的三条时钟路径分析

发起沿(LaunchEdge):数据被launch的时钟边沿;也就是说,每一个启动沿,一般都会产生一....
的头像 电子设计 发表于 11-26 14:16 ? 729次 阅读
【vivado学习】典型时序模型的三条时钟路径分析

xilinx FPGA中oddr,idelay的用法详解

idelay2中按推荐配置,从DATAIN还是从IDATAIN输入区别为是内部延时还是从IO输入,F....
的头像 电子设计 发表于 11-25 14:35 ? 987次 阅读
xilinx FPGA中oddr,idelay的用法详解

浅谈Vivado 综合选项的7种设置

-flatten_hierarchy full: 综合时将原始设计打平,只保留顶层层次,执行边界优化....
的头像 电子设计 发表于 11-25 10:28 ? 580次 阅读
浅谈Vivado 综合选项的7种设置

MIO与EMIO的关系解析 GPIO、MIO、EMIO的区别

芯片型号:XC7Z010-1CLG400C Vivado版本:2016.1 点亮流水灯,共使用了三种....
的头像 39度创意研究所 发表于 11-24 14:32 ? 886次 阅读
MIO与EMIO的关系解析 GPIO、MIO、EMIO的区别

如何擦除固化在FPGA的程序

在使用Vivado 的SDK进行在线调试时,需要将FPGA的bit文件烧写到FPGA中,但是在使用S....
的头像 39度创意研究所 发表于 11-23 16:00 ? 445次 阅读
如何擦除固化在FPGA的程序

Xilinx FPGA案例学习之Vivado设计综合约束

在 Flow Navigator 中点击设置, 然后选择Synthesis,或者 selectFlo....
的头像 电子设计 发表于 11-23 14:16 ? 858次 阅读
Xilinx FPGA案例学习之Vivado设计综合约束

Vivado 如何调用ROM IP核

.coe格式的数据文件简介 在Vivado中,对rom进行初始化的文件是.coe文件.它的格式如下:....
的头像 39度创意研究所 发表于 11-20 15:01 ? 573次 阅读
Vivado 如何调用ROM IP核

用Tcl实现Vivado设计全流程

设置芯片型号,设置源文件位置,设置生成文件位置,添加设计源文件,流程命令,生成网表文件,设计分析,生....
的头像 Lauren的FPGA 发表于 11-20 10:56 ? 391次 阅读
用Tcl实现Vivado设计全流程

SystemVerilog 中各种不同的联合解析

联合分两种类型:打包 (packed) 和解包 (unpacked)。在上述示例中,我们指定的是打包....
的头像 39度创意研究所 发表于 11-19 15:16 ? 552次 阅读
SystemVerilog 中各种不同的联合解析

Vivado时序案例分析之解脉冲宽度违例

BY Hemang Divyakant Parikh 有多种类型的时序违例可归类为脉冲宽度违例。 -....
的头像 39度创意研究所 发表于 11-19 13:48 ? 321次 阅读
Vivado时序案例分析之解脉冲宽度违例

FPGA设计中Tcl在Vivado中的基础应用

Tcl介绍 Vivado是Xilinx最新的FPGA设计工具,支持7系列以后的FPGA及Zynq 7....
的头像 39度创意研究所 发表于 11-17 17:32 ? 365次 阅读
FPGA设计中Tcl在Vivado中的基础应用

vivado版本升级后,怎么简单移植软核。

将程序从低版本的vivado搬移到高版本的vivado的时,直接在高版本的vivado下升级软核中的各个IP后,在综合过程中报错。在低版本...
发表于 11-14 20:57 ? 584次 阅读
vivado版本升级后,怎么简单移植软核。

如何不建Vivado工程,也能看Device视图呢

在FPGA设计与开发中,Device视图和Package视图发挥着重要的作用。在Device视图下:....
的头像 Lauren的FPGA 发表于 11-13 18:11 ? 631次 阅读
如何不建Vivado工程,也能看Device视图呢

关于Vivado中三种操作Debug的方式

Vivado中提供了多种Debug的操作方式,下面就来总结一下: 1. 代码中例化ILA IP核 第....
的头像 39度创意研究所 发表于 11-11 17:07 ? 356次 阅读
关于Vivado中三种操作Debug的方式

Vivado HLS和Vitis HLS 两者之间有什么区别

Vivado HLS 2020.1将是Vivado HLS的最后一个版本,取而代之的是VitisHL....
的头像 Lauren的FPGA 发表于 11-05 17:43 ? 2163次 阅读
Vivado HLS和Vitis HLS 两者之间有什么区别

Vivado的ECO流程

通常在设计网表中,需要在基础上微调逻辑,这样既无需修改代码,也无需重新做综合,在设计调试中可以节省时....
的头像 电子发烧友网工程师 发表于 11-04 10:25 ? 372次 阅读
Vivado的ECO流程

Vivado中进行ZYNQ硬件部分设计方案

ZYNQ概述 ZYNQ内部包含PS和PL两部分,PS中包含以下4个主要功能模块: Applicati....
的头像 39度创意研究所 发表于 11-03 12:33 ? 905次 阅读
Vivado中进行ZYNQ硬件部分设计方案

一起体验Vivado 的ECO流程

作者:Hong Han,来源:赛灵思中文社区论坛 有时我们需要在设计网表的基础上微调一下逻辑,这样可....
的头像 FPGA开发圈 发表于 10-26 09:45 ? 638次 阅读
一起体验Vivado 的ECO流程

如何用Tcl实现Vivado设计流程介绍

Vivado有两种工作模式:project模式和non-project模式。这两种模式都可以借助Vi....
的头像 Lauren的FPGA 发表于 10-21 10:58 ? 448次 阅读
如何用Tcl实现Vivado设计流程介绍

通过HLS封装一个移位流水灯的程序案例

当我们安装好Vivado 的时候,也同时装好了Vivado HLS.。 这是个什么东西?我就有一种想....
的头像 39度创意研究所 发表于 10-14 15:17 ? 907次 阅读
通过HLS封装一个移位流水灯的程序案例
电竞竞猜-电子竞技外围网-注册送28的电竞平台-推荐官网