学习vivadoHLS第7章 例程中文版.docx

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学习vivadoHLS第7章 例程中文版

学习vivado第7章Lab1——设计优化概述创建高质量RTL设计的一个关键部分是采用高层次综合拥有优化C代码的能力。高层次综合经常尝试减少循环和函数的延迟。在循环和函数中为了获得这种目的,高层次综合尝试执行尽可能多的并行操作。在函数层,高层次综合经常尝试执行并行函数。除了这些自动优化,指令用于:?并行执行多个任务,例如,相同的函数多次执行或相同的循环多次迭代。采用流水线。?调整数组(块RAM),,函数,循环和端口的物理实现用以提高数据的利用率和帮助数据流尽快通过设计。?提供的数据相依性的信息,或缺少这些信息,从而可进行更多优化。最终的优化技术是修改的C源代码,以删除非预期依赖关系的代码,这种代码可能限制了硬件的性能教程是由两个实验练习组成。你可以在这些实验练习中用Analysis perspective来执行分析。前提条件是完成了本教程的Design Analysis教程Lab1参照循环和函数流水线的使用来创建的设计能够在一个时钟处理一个样本。这个实验包括一些例子,这些例子给您机会去分析两个通常引起不能满足性能要求导致设计失败的原因:循环依赖关系和数据流限制或瓶颈。Lab2这个实验展示了怎么从lab1中修改代码来帮助克服一些在代码中无意识存在的内在的性能限制。教程设计描述从xilinx网站下载教程设计文件,在教程设计中查看信息。教程所用的设计文件在教程目录vivado_HLS_Tutorial\Design_Optimization你在实验练习中使用的样本设计是一个矩阵乘法功能。设计目标是在每个时钟周期处理一个新的采样,实现的接口作为数据流传输接口。Lab1:优化矩阵乘法器这个练习使用矩阵乘法器设计用以展示你如何全面优化设计重点是在循环设计上,设计的目标是用FIFO接口在每个时钟周期读一个样本,同时使用最少资源。这个分析包括了在使用函数级优化的循环级优化方法的比较。这个练习解释了用户分析界面视角的基本操作,还有你如何用这个界面来驱动设计优化。重要:在教程中的图片和命令假设教程数据路径vivado_HLS_Tutorial被解压放置在c:\vivado_HLS_Tutorial中。如果教程数据目录解压缩到不同的位置,或者在Linux系统上,调整一些路径名引用到的位置您选择放置Vivado_HLS_Tutorial目录。步骤1:创建并打开工程1.打开Vivado HLS 命令提示符a.在windows系统中,采用StartAll ProgramsXilinx Design ToolsVivado2014.2Vivado HLSVivado HLS 2014.2 Command Prompt,如下图b.在linux系统下,打开新的shell,2. 用命令提示符窗口,如图142,从lab1中将目录切换到RTL Verification教程。3. 执行TCL并建立vivado HLS Project,采用的是vivado_hls–f run_hls.tcl如图142所示4. 当vivado HLS 完成,在用户界面里打开工程。用vivado_hls–p matrixmul_prj命令打开,如图1435. 在资源管理器中打开Source文件夹,并双击matrixmul.cpp文件如图144的源代码向下滚动文件,查看源代码有两个输入数组a和b,并输出数组。将鼠标停在宏(如图144),看看每个是3×3共9个元素。步骤2:综合分析设计1. 在工具栏中点击Run C Synthesis按钮,并把设计综合成RTL。当综合完成,综合报告打开图145,性能估计显示:?间隔是80个时钟,因为在每个输入数组中有九个元素,设计在输入读时大约花费9时钟。?间隔比延迟时间的长一个周期,因此在这一点上的硬件不是对应的。?延迟/间隔是由于内嵌的循环:? 内部循环调用- 2时钟的延迟- 所有的迭代花费6个时钟周期? Col循环- 要求1个时钟周期输入循环积和1个时钟的推出- 每次迭代花费8个时钟。- 所有迭代完成花费24个周期? 顶层循环每次迭代要延迟26个时钟周期,这个循环所有迭代要花费78时钟周期你可以做两件事情来提高启动间隔:循环流水线或对函数整体进行流水线操作。你开始于循环流水线化的结果和函数整体流水线化的结果进行比较。当循环流水线化,循环的启动间隔是重要的监控标准。在这个练习中可以看到,即使当设计达到了该循环在每个时钟周期可处理一个样品的阶段,该函数的启动间隔仍被报告,因为它需要对包含在函数内的循环完成处理所有函数数据的时间进行报告。步骤3:乘积循环流水线1. 在工具栏上选择New Solution按钮,或者用菜单ProjectNew Solution来创建一个新的方案solution22. 点击Finish,接受默认创建solution2。3. 保证能在

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档