ug871-vivado-high-level-synthesis-tutorial第二章lab1中文

---朱磊  qq57466631

第二章高级综合指导手册

概述

本手册介绍了Vivado High-Level SynthesisHLS高级综合)。您可以使用图形用户界面或TCL环境进行高级综合主要任务的学习。

本教程展示了如何使用优化指令把最初的RTL实现转化为低面积、高速度的RTL实现。

实验1

说明如何:

·建立一个高层次综合工程(HLS project

·在HLS设计流程中执行所有主要的步骤

    ·验证C代码

    ·创建和综合解决方案

·验证RTL级和对IP打包

实验2

         说明如何使用TCL接口

实验3

         向您展示如何使用优化指令对设计进行优化。该实验创建多个RTL实现的版本,并且对不同的解决方案进行比较

       教程设计说明

要获取教程的设计文件,请参见这一章节
获取教程设计。

本教程使用教程目录中的设计文件Vivado_HLS_Tutorial\Introduction

在本教程中使用的样本设计为FIR滤波器。FIR设计项目的硬件目标是:
创建一个拥有最高速度的设计版本。

最终的设计必须处理输入有效信号提供给数据并产生伴随着一个输出有效信号的输出数据。此滤波器系数将被存储在外部的FIR设计的单口RAM中。

HLS Lab1:创建一个高层次综合工程

介绍

这个实验说明了如何创建一个高层次综合工程,验证C代码,综合成RTL描述,并验证RTL级描述。

重要:在本教程中的附图和命令假定教程数据目录Vivado_HLS_Tutorial文件解压缩并放置在路径C\ Vivado_HLS_Tutorial

步骤1:创建一个新的工程

 

1. 打开VivadoHLS图形用户界面

在Windows系统中,双击打开VivadoHLS图标,如图1 Vivado HLS 2014.2

图一

•在linux 系统中,在命令提示符下输入vivado_hls

提示:您还可以使用Windows Start > All Programs > Xilinx Design Tools > Vivado2014.2> Vivado HLS> Vivado HLS2014.2

 

Vivado HLS 打开后出现如图2的欢迎界面,如果一些工程先前打开,这些工程会展现在最近工程窗口中,另外这个窗口不显示欢迎界面

2

2.在欢迎页中,选择Create New Project(创建新项目),打开Project向导。
3.
如图3

a.输入项目名称fir_prj
b.
单击Browse(浏览)导航到lab1目录的位置。

c.
选择lab1的目录,然后单击确定。

d.
点击Next(下一步)

3

该信息定义了名称和Vivado HLS工程目录的位置。在这种情况下,工程目录是fir_prj和它路径在lab1中的文件夹。

4.输入以下信息,以指定C设计文件:
a.
指定fir作为顶层函数。

b.
点击Add Files(添加文件)。

c.
选择fir.c,然后单击Open(打开)。

d.
单击Next(下一步)。(见图4

4

 

重要提示:在本实验中,只有一个C设计文件。当有多个C文件,进行综合时,必须这个阶段添加所有的设计文件到项目中。

存在本地目录lab1中的任何头文件自动包含在项目中。如果头存放在不同的位置,使用Edit CFLAGS按钮来添加标准的gcc/g+ +搜索路径信息(例如,-I<path_to_header_file_dir>)。

 

图五显示输入窗口,用于指定测试台文件。该试验台和所有文件所使用的试验台(除了头文件)必须被包括在内。您可以一次添加文件之一,或选择多个文件添加使用CtrlShift键。

图五

5,点击增加文件按键,添加所有的测试文件:fir_test.cout.gold.dat

6,点击Next

在该解决方案的子目录中执行C仿真(和RTL协同仿真)。

如果你没有包括测试平台用的所有文件(例如,测试平台读取的数据文件,例如out.gold.data,C RTL仿真在综合后一定会失败,因为没有发现数据文件。

该解决方案配置窗口(如图6所示)指定第一个解决方案的技术规范。

一个项目可以有多种解决方案,每一个使用不同的技术指标,包装,约束和/或合成的

指令

图六

7,接受默认的解决方案名称(solution1),时钟周期10ns,时钟的不确定性(默认为时钟周期的12.5%,当留白/未定义)。

8,点击器件选择按钮打开器件选择窗口。

9,选择器件xc7k160tfbg484-2从有效器件下拉列表中,

10,点击OK

       在这个解决方案配置对话箱中,选择的器件名称显示在下面。

11,点击Finish打开Vivado HLS工程,如下图

 

•项目名称会出现在浏览器窗口的最上一行。
•一个Vivado HLS项目安排在一个分层格式中。

•该项目拥有的设计来源的信息,测试平台和解决方案。

该解决方案拥有对目标的技术信息,设计指令和结果。

•一个项目中有可能有多个解决方案,每个解决方案是相同的源代码的实现。

 

提示:在任何时候,你可以通过改变项目或解决方案设置相应的在工具栏上的项目设置和/或解决方案设置按钮。

 

理解图形用户界面

在开始之前,请检查在图形用户界面(GUI)的区域,它们的功能。图9示出的区域的信息,并且每个描述如下

资源管理器窗格 explorer pane

显示项目层次结构。当您继续通过验证,综合,验证和IP封装步骤,子文件夹对每一步的结果(分别命名为CSIMSYNSIMIMPL)解决方案目录中自动创建。
当您创建新的解决方案,他们一起出现解决方法1在项目层次结构中。

信息窗格 imformation pane

显示了从资源管理器窗格中打开的任何文件的内容。当操作完成后,报告文件在此窗格中自动打开。

辅助面板 auxiliary pane

交叉链接的信息窗格。在此窗格中显示的信息动态调整,根据不同的文件中的信息窗格中打开。

控制台面板 console pane

显示VivadoHLS运行时所产生的消息。错误和警告出现在控制台窗格中的选项卡。
工具栏按钮 toolbar buttons

您可以执行使用工具栏按钮是最常用的操作。当您将光标移到按钮上,弹出一个对话框,说明功能。每个按钮也有可以从下拉菜单中的相关菜单项。

透视图

透视图提供了便捷的方式来调整Vivado HLSGUI的窗口。

•综合界面

默认的界面可以让你综合设计,运行仿真和打包的IP

Debug界面

包括与调试C代码相关的窗格。您可以将C代码编译后打开Debug界面(除非你使用优化编译模式,因为这禁用调试信息)。

•分析界面
窗户从这个界面配置为支持综合分析结果。您可以使用分析界面在合成完成后。

步骤2:验证C源代码

HLS工程中第一步是确认C代码是正确的,这个过程被称为C验证或C仿真。(C

Validation or CSimulation.

在这个工程中,测试平台将从fir函数中输出的数据与正确的值进行比较。

1, 在资源管理器窗格中打开验证平台(Test Bench)文件夹。

2, 双击该文件fir_test.c,在信息窗格中查看fir_test.c代码。

3, 在辅助窗格中,选择的main()选项卡直接跳转到main()函数。

展示动作结果

该验证平台的文件,fir_test.c,包含了顶层的C函数main(),在main()中调用能综合(FIR)的函数。该试验台的一个有用的特点是,它是自检的:
  
•该验证平台可保存从FIR函数的输出结果到输出文件out.dat中。

  
•输出文件与存储在文件out.gold.dat的最佳结果进行比较。

  
•如果输出相匹配的最佳结果,返回消息确认结果是正确的,验证平台main()函数的返回值被设置为0

  
•如果输出结果与最佳结果不同,返回信息指出这不同点,并返回的主值()被设置为1

   
Vivado HLS工具可以重用的C验证平台进行验证的RTL

如果该测试台具有先前描述的自检特征,RTL结果在RTL验证自动检查。RTL期间VivadoHLS再利用试验台验证和确认RTL验证成功,如果测试台返回的值0则表示成功,但如果任何其他值由main()的返回,包括没有返回值,则表示该RTL 验证失败。没有必要创建RTL测试平台。在这里提供了一个强大的和富有成效的验证方法。
  
4,单击运行ç仿真(Run C Simulation)按钮,或者使用菜单Project>RunC Simulation,编译并执行C设计等。

  
5,在C仿真对话框中,单击确定。

控制台窗口中确认成功执行模拟。

提示:如果C仿真失败,在C仿真对话框中的选择调试选项,编译设计,并自动切换到Debug界面。在那里,你可以使用C调试器来解决任何问题

步骤3:高层次综合

在这个步骤中,您可以把您的C设计综合成RTL级设计,并可以检查综合报告

1.点击Run C Synthesis工具栏里的按钮,或者用菜单Solution>Run CSynthesis

当综合完成,报告文件会自动打开。因为综合报告在信息窗口中打开的,所以在辅助窗口中,选项卡会自动更新反映报告信息。

2.在选项卡上单击性能评估Performance Estimate(下图)。
3.
在性能估计的详细信息部分,打开查看Loop

性能评估图

在性能评估窗格中,(见上图)您可以看到时钟周期被设定为10ns,Vivado HLS实际时钟为目标时钟周期减去不确定时钟(10-1.25=8.75)。

时钟不确定性确保有足够的时序余量,防止在某些未知网络延迟,这些网络延迟是由某些区域或路径导致的。

估计时钟周期为8.43(最差情况)

在概述部分,您可以看见

该设计有78个时钟周期的延迟,表明要得到输出结果得花费78个时钟。

间隔为79个时钟周期:下一组输入在79个时钟周期后被读取。在最终输出被写之后这才是一个循环。这表示该设计不是流水线。只有在当前事务完成时,下次执行此功能(或下一交易)才能被启动。

●“设计不是流水线”的消息也被列入了流水线型:无流水线执行。

细节部分显示:
●在设计中没有子块。打开实例部分(Instance section)显示在层次结构中无子模块。

所有的延迟都是由于Shift_Accum_Loop循环综合出的RTL逻辑。这种逻辑执行11次(行程计数)。每次执行需要7个时钟周期(迭代延迟),共计88个时钟周期,以执行所有从该循环(延时)中综合的逻辑迭代。
总延迟要比循环延迟多一个时钟周期。它需要一个时钟周期为了进入和退出循环(在此情况下,当循环结束时该设计完成,因此没有退出循环)

4. 选项卡点击Utilization Estimate见下图

这图说明使用的资源数量

5.在Utilization Estimate的细节部分,展开实例视图。

本设计采用单端口存储器实现LUTRAM(因为它包含少于1024个元素),4 DSP48s,和大约200个触发器和查找表的单个存储器。在这个阶段中,这些资源是估计值。
 
     RTL综合能够执行额外的优化,而这些数据可能在RTL综合后改变。

•在FIR滤波器中使用的DSP48s的数量似乎比预期更大。这是因为该数据是一个C整数类型,它是32位的。它需要多于1DSP48乘以32位数据值。
  
•在实例视图中乘数实例显示所有DSP48s的数量。

  
•乘法器是一个流水线乘法器。它出现在实例部分说明它是一个子块。标准组合乘数没有层次。并列出表达式部分(显示在层次结构这一级别的组件)。

HLS:实验3:为了设计优化采用此解决方案,您可以优化本设计。

6. 选项卡上点击interface,出现下图

接口部分显示了通过综合界面创建的端口和I / O协议:

•设计有时钟和复位端口(ap_clkap_reset)。这些都与源对象fir相关联。

•与设计的源对象相关联的其他端口。综合会自动添加一些模块级控制端口:ap_startap_doneap_idleap_ready

•接口综合教程提供了很多有关这些端口的详细信息。
•函数的输出y32位的数据端口,与这个32位数据端口相关联的有效信号为y_ap_vld

 
•函数的输入参数C(数组)采用块RAM接口来实现,4位输出地址端口,一个输出CE端口和一个32位的输入数据的端口。

 
•最后,输入参数x被简单地实现与没有I / O协议的数据端口(AP_NONE)。

后来在本教程中,HLS:实验3:使用解决方案的优化设计说明如何优化端口x中的I / O协议。

步骤4 RTL验证

 

高层次综合能够重利用C测试平台用仿真来验证RTL

1.点击run C/RTL Cosimulation 工具栏按钮,或者用菜单Solution>Run C/RTL Cosimulation

2.在C/RTL Co-simulation对话框中点击OK执行RTL仿真

为了RTL联合仿真默认选项是使用Vivado仿真器和Verilog RTL来执行。可以使用不同的仿真器进行验证,VHDLSystemC RTL是使用在C/RTL Co-simulation对话框中的选项来选择的。

RTL协同仿真完成,该报告会自动在信息窗格中打开,和控制台显示如下图所示的消息,在C仿真结束时也产生相同的消息。

C验证平台RTL设计产生输入向量。

RTL设计进行仿真。

RTL输出向量/结果返回到C验证平台,在测试平台中检查结果验证结果是否正确。

步骤5  IP产生

在高层次综合流程中的最后一步是将设计方案用Xilinx设计套件等工具打包成一个IP块。

1. 单击导出RTL(Export RTL)工具栏按钮或使用菜单Solution> Export RTL

2. 确保格式选择(Format Selection)下拉菜单中显示的IP目录(IP Catalog)

3. 点击OK

IP封装功能为VivadoIP目录创建一个封装。(在下拉菜单中的其他选项允许您创建System Generator for DSP IP Synthesized Checkpoint formatfor Vivado(综合浮点格式) IPPcorefor Xilinx  Platform Studio IP(处理器内核用于Xilinx平台工作室)  

4.   打开在资源管理器中的Solution1

5.   打开通过Export RTL命令创建的imp1文件夹。

6.    打开IP文件夹,找到一个做为zip文件的IP包,准备把这个IP包添加到VivadoIP目录(下图)。

注意:在上图中,如果你想展开在imp1文件夹中的verilog或vhdl文件夹,有一个Vivado项目文件准备打开Vivado设计套件。

推荐:在本Vivado工程中,HLS设计是顶层。该工程提供了一个分析设计的补充手段。推荐的方法是将IP包添加到Vivado IP目录,并将IP添加到使用HLS设计的设计中。

注意:没有为器件(6系列或更早版本的器件)创建任何通过ISE综合的工程文件。
在这个阶段,关闭Vivado HLS打开界面。您将返回到下一个实验练习。

 

本人翻译水平有限,不足的地方请谅解,上面本来是有图片的,不知道发表后还会不会有

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值