欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    Vivado Hls 设计分析(二).doc

    • 资源ID:3274853       资源大小:16KB        全文页数:2页
    • 资源格式: DOC        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Vivado Hls 设计分析(二).doc

    Vivado Hls 设计分析(二)在使用高层次综合,创造高质量的RTL设计时,一个重要部分就是对C代码进行优化。Vivado Hls总是试图最小化loop和funcTIon的latency,为了实现这一点,它在loop和funcTIon上并行执行尽可能多的操作。比如说,在funcTIon级别上,高级综合总是试图并行执行funcTIon。除了这些自动优化,directive是用来:(1) 并行执行多个tasks,例如,同一个function的多次执行或同一loop的多次迭代。这是流水线结构。(2) 调整数组的物理实现((block RAM),函数,循环和端口,以提高数据的可用性,并帮助数据流更快地通过设计。(3) 提供关于数据dependency的信息,或者缺乏数据dependency,允许执行更多的优化。最终的优化是修改C源代码,以消除在代码中意外的dependency,但是这可能会限制硬件的性能。本文使用的sample设计是一个matrix multiplier函数。目标是在每一个时钟周期处理一个新的sample,并实现数据流接口。优化matrix multipliersolution1这里使用矩阵乘法器设计,来显示如何可以完全优化基于loop的设计。设计目标是在每个时钟周期读取一个使用FIFO接口的sample,同时最大限度地减少了面积。此分析包括一个比较在loop级优化和在function级优化的方法。对比loops和function pipeline的使用,创建一个可以处理采样时钟的设计。分析设计不符合性能要求的两个最常见的原因:loops dependency和数据流的限制(或瓶颈)。Step 1:创建并打开Project找到Design_Optimization lab1文件夹,依次在Command Prompt 窗口输入vivado_hls f run_hls.tcl和vivado_hls p matrixmul_prjStep 2:综合分析设计综合后的结果:(1)图中,总的interval为80个时钟周期。因为每个输入数组中都有九个元素,所以设计每输入读取需要约九个周期。(2)interval比latency多一个时钟周期,所以没有在硬件上并行执行。(3)interval/latency是由于嵌套loopsI.Product inner loop:-有一个2个时钟周期的延迟。-总的迭代有6个时钟周期。II.COL loop:-它需要1个时钟输入和1个时钟退出。-它需要8个时钟周期为每个迭代(1 + 6 + 1)。-总的有24个周期完成所有迭代。III.顶层loops每次迭代需要26个时钟周期,总的loops迭代共78时钟周期。为了改善initiation interval,则需要:pipeline loops或pipeline整个function,并比较这两种结果。当pipelining loops时,loops的initiation interval是监控的重要度量指标。即使设计达到loop可以在每个时钟周期处理一个sample,函数的initiation interval仍然需要包含函数内的loops来完成所有数据的处理。solution2: Pipeline the Product LoopStep 1创建solution2,在Product loop下面插入pipeline directive(这里在Directive Editor下选择pipeline)注意:当pipeline嵌套loop时,通过pipeline最内部Loop最大的好处就是,即有利于处理数据的sample。高级综合自动应用loop flattening,折叠嵌套loop,删除loop转换(本质上是创建一个更多迭代的单循环,但时钟周期整体较少)。Step 2 综合设计到RTL级在综合过程中,我们得到Console pane中报告的信息,显示loop flattening是loop Row上执行,默认内部Interval target为1由于依赖关系不能在loop Product上完成。图中表明,虽然Product loop已经被pipeline,interval为2,但是顶层loop没有被pipeline。顶层loop不能pipeline的原因是,loop flattening只发生在loop Row,在loop Col 到Product loop上没有loop flattening。下面解释loop flattening不能flatten所有nested loop的原因。

    注意事项

    本文(Vivado Hls 设计分析(二).doc)为本站会员(白大夫)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开