您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > Vivado使用误区与进阶
作者:AllyZhou,Xilinx工具与方法学应用专家AdvancedDesignTips我一直在问我自己到底有没有一种简便的方法能够让更多Vivado的用户从我们的新技术新产品中受益,从而帮助他们更好更快地完成自己的设计?VivadoUltraFAST想到要写这一系列关于工具和方法学的小文章是在半年多前,那时候Vivado®已经推出两年,陆续也接触了不少客户和他们的设计。我所在的部门叫做“Tools&MethodologyApplications”,其实也是专为Vivado而设的一个部门,从Vivado的早期计划开始,我和我的同事们就投入到了Xilinx©和Vivado的客户们的推广和支持中,我们给客户做培训,在市场活动上做报告,培训和考核代理商,也去现场支持客户的设计。两年的时间,Vivado不断成熟,客户们也从最初的焦虑抗拒到全面接受,但随着与用户更深层次的技术交流。接触了一些客户的设计后,我渐渐发现其实很多Vivado的用户并没有真正了解它的好处,或者说,要么不够深入,要么就是有很多认识的偏差。也许是语言的限制,也许是对各种各样动辄上百页的PDF文档的无所适从,我能感觉到他们需要一些更直接,更有针对性的指引。我一直在问我自己,到底有没有一种简便的方法,能够让更多Vivado的用户从我们的新技术新产品中受益,从而帮助他们更好更快地完成自己的设计?下定决心后,我便开始从日常工作和大家的反馈中寻找普遍感兴趣的话题,分门别类、挑选实例、尽量用简洁明快的文字和一目了然的插图叙事,把一篇文章控制在十页以内。阅读这样一篇文章也许只需要你一顿午饭的时间,当你碰到一个技术问题,可以快速用关键字索引到对应的文章。作为工程师,应该比较欢迎这样的小文章吧。在此要特别感谢我的很多同事,这些文章中的不少实例和配图就是从他们创建的PPT中挑选的,我能做的就是把更多Xilinx技术专家们的经验之谈用大家熟悉的语言传播出去,传递下去。同时也感谢Xilinx市场部同事们的一路支持,使得以下九篇文章在广大客户群中广为流传,并以此电子书的形式分享给更多的网友们。主要文档即插即用IP背景资料【中文版】UltraFast设计方法指南(UG949)UltraFast嵌入式设计方法指南UG1046VivadoDesignSuite加速设计生产力的九大理由VivadoIPIntegrator背景资料周丽娜(AllyZhou)赛灵思公司工具与方法学应用专家AllyZhou拥有十多年FPGA设计、EDA工具和多年客户支持的经验。2012年加入公司以来,专注于Vivado设计套件以及UltraFast设计方法学的的推广和支持。Ally曾先后在同济大学,芬兰米凯利理工学院和复旦大学求学,获得工学硕士学位。加入赛灵思公司之前,曾在Synopsys工作,主要负责FPGA综合和ASIC原型验证方案的支持。第一章:十分钟教会你UltraFast第二章:XDC约束技巧之时钟篇第三章:XDC约束技巧之CDC篇第四章:XDC约束技巧之I/O篇(上)第五章:XDC约束技巧之I/O篇(下)第六章:Tcl在Vivado中的应用第七章:用Tcl定制Vivado设计实现流程第八章:在Vivado中实现ECO功能第九章:读懂用好TimingReportVivado使用误区与进阶UltraFastUltraFAST™是Xilinx©在2013年底推出的一套设计方法学指导,旨在指引用户最大限度地利用现有资源,提升系统性能,降低风险,实现更快速且可预期的设计。面向Vivado®的UltraFAST方法学的主体是UG949文档,配合相应的Checklist,随Vivado版本同时更新,用户可以在Xilinx的主页上免费下载。目前,针对Vivado设计套件的UltraFAST中文版也已经上市,另外一套全新的针对嵌入式可编程设计的UltraFAST嵌入式设计方法指南UG1046也已经在Xilinx官网上开放下载。尽管UltraFAST这个字眼经常在网上看到,不论官方还是其他媒体上说起Vivado设计套件时也常常提到,但很多用户仍然对这个概念十分模糊,有不少人下载文档后看到300页的PDF顿时也失去了深入学习和了解的兴趣。套用在Xilinx内部被誉为“Vivado之父”的Vivado产品营销总监GregDaughtry在去年第一届ClubVivado中所提出的“时序收敛十大准则”的概念,试着用十分钟的篇幅来概括一下什么是UltraFAST,以及怎样利用UItraFast真正帮助我们的FPGA设计。时序设计的十大准则,基本上也涵盖了UltraFAST设计方法指南的基本要点。UG949中将FPGA设计分为设计创建、设计实现和设计收敛几大部分来讨论,除了介绍所有可用的设计方法和资源,更多的是一些高级方法学技巧,这些技巧基本上都跟时序收敛有关或是以时序收敛为目标,有些通用的方法和技巧甚至脱离了具体选用的FPGA器件的限制,适用于更广泛意义上的时序收敛。最宝贵的是,所有这些UltraFAST设计方法学技巧都来自一线技术支持人员的经验以及客户的反馈,是业界第一本真正意义上完全面向用户的指南。这一点只要你试着读过一两节UG949就会有明显感觉,所有其中提到的技巧和方法都具有很高的可操作性,可以带来立竿见影的效果。接下来我们就由这十大准则展开,带领各位读者在十分钟内理清UltraFAST方法学的脉络,一探其究竟。主要文档即插即用IP背景资料【中文文档】UG949-UltraFast设计方法指南UG1046-UltraFast嵌入式设计方法指南VivadoDesignSuite加速设计生产力的九大理由VivadoIPIntegrator背景资料快速链接免费下载:VivadoDesignSuite评估和WebPACK版本Vivado设计套件下载支持和技术文档Vivado视频辅导资料IP中心支持的目标参考设计存储器推荐培训与活动Vivado课程高层次综合课程准则一:合适的代码风格准则二:精准的时序约束准则三:管理高扇出网络准则四:层次化设计结构准则五:处理跨时钟域设计准则六:少而精的物理约束准则七:选择实现策略准则八:共享控制信号准则九:读懂日志和报告准则十:发挥Tcl的作用GregDaughtry,XilinxVivado产品营销总监Vivado使用误区与进阶准则一:合适的代码风格理想环境下,源代码可以独立于最终用于实现的器件,带来最佳的可移植性和可复用性。但是,底层器件各自独特的结构,决定了通用代码的效率不佳,要最大化发挥硬件的性能,必然需要为实现工具和器件量身定制代码。关于Xilinx器件和Vivado适用的代码风格,我们有以下建议:准则二:精准的时序约束精准的时序约束是设计实现的基础,对时序驱动工具Vivado来说,约束就是最高指示,是其努力实现的目标。很多时候我们发现,约是有经验的工程师约是喜欢用一些旧有经验套用在Vivado上,例如很多人偏爱用过约束的方式来追求更高的性能,但实际上对Vivado来说,大部分的过约束只会阻碍时序收敛。简要概括而言,精简而准确的约束是时序收敛的必要条件,而UltraFast中提出的Baseline基线方法则是充分条件。具体的约束方法我们在《XDC约束技巧》中有详细讨论,除了保证语法正确,还要注意设置XDC约束的顺序,通常第一次运行时只需要约束所有时钟,然后在内部路径基本满足时序约束的情况下加入关键I/O的约束,其次再考虑必要的时序例外约束。所有这些约束都必须遵循精简而准确的原则,且可以借助Vivado中的XDCTemplates以及TimingConstraintWizard的帮助来进行。Baseline基线方法可以说是UltraFast的灵魂部分,强烈建议所有Vivado的用户都能精读UG949中的这部分内容,并将之应用在具体的设计中。有机会我会深入展开一篇专门介绍Baseline方法的短文,这里先将其核心的概念做一个总结。1.多使用Vivado自带的代码模板2.尽量避免使用异步复位3.在模块边界上使用寄存器而非组合逻辑4.使用流水结构来降低逻辑层数5.采用适当的RAM和DSP的实现方式(是否选用硬核)6.在综合后或是逻辑优化(opt_design)后的时序报告上分析代码优化的方向Vivado使用误区与进阶上图展示了同一个设计在三个不同阶段用同样的命令报告时序所得到的最差路径,可以清晰的看出,即使不做任何源代码上的改动,设计中真正最差的路径已经不会作为最差路径出现在布局布线后的报告中。这正是因为Vivado时序驱动的天性决定了其在设计实现的每一步都是以开始时读到的设计输入和约束为依据,尽量将最好的资源用在最差的路径上,从而尽最大可能实现时序收敛。这便是Baseline理论的基础,除了按顺序设置精准的时序约束,在设计实现的每一步,用户都需要关注时序报告,并以其为依据来调整设计源代码或是应用其他必要的约束和选项来优化设计。保证每一阶段之后的时序报告都满足约束或是仅余300ps以内的时序违例,再进入下一阶段的设计实现过程,否则,应该继续在当前阶段或是退回到上一阶段调整后重跑设计,直到满足要求再继续。越早发现和定位问题,越是可以通过少量的努力来达到更大范围的改进。准则三:管理高扇出网络高扇出网络几乎是限制FPGA设计实现更高性能的第一大障碍,所以我们需要很严肃地对待设计中的高扇出网络。很多人会陷入一个误区,反复纠结到底多大的扇出值算是大?其实这一点不是绝对的,在资源充裕时序要求不高的情况下几千甚至上万都不算大,反之在局部关键路径上仅有几十的扇出也可能需要进一步降低。在Vivado中,我们除了关注时序报告,尤其是布局后布线前的报告来定位关键路径上影响时序的高扇出网络外,还有一个专门的命令report_high_fanout_nets,在给其加上-timing的选项后,可以在报告高扇出路径的同时报告出这条路径的Slack,帮助用户直观了解当前路径的时序裕量。此外,这个命令在报告中还会指出高扇出网络的驱动类型,是FF或是LUT等。找到目标后,可以利用max_fanout来限定其扇出值,让工具在实现过程中复制驱动端寄存器来优化。如果高扇出网络并不是由同步逻辑来驱动,则可能需要修改代码。还有一些工具层面上的降扇出方法,比如选择更强更有针对性的策略,或是允许多次物理优化phys_opt_design,甚至是通过我们在《用Tcl定制Vivado设计实现流程》中提到的“钩子”脚本等方式来进行局部降扇出的物理优化等等。但有一点需要注意,Vivado综合选项中的全局扇出限定要慎用,不要将其设置的过低以免综合出的网表过于庞大,带来资源上的浪费,并可能导致局部拥塞。准则四:层次化设计结构随着设计规模的不断扩大,以及SoC设计的兴起,越来越多的IP被整合到大设计中,曾经为高性能设计而生,便于统一管理和控制的自顶向下的设计流程变得不再适用,FPGA设计也跟大规模SoC设计一样,需要采用层次化的设计流程,即自底向上的流程。这也要求设计者在源代码阶段就考虑到最终的实现,处理好模块的层次边界。Vivado中的IP设计是原生的自底向上流程,用户可以将IP生成独立的DCP再加入到顶层设计中去。我们也鼓励用户将某些相对固定或独立的模块综合成DCP后加入顶层设计,这么做除了加快设计迭代外,也更利于设计开始阶段的调试和问题的定位。Vivado中的OOC模式甚至还支持完全层次化的设计,即将底层模块的布局布线结果也进行复用,这么做虽然流程复杂,却带来了更全面的控制性,也是部分可重配置技术的实现基础。Vivado使用误区与进阶准则五:处理跨时钟域设计FPGA设计中通常都带有跨时钟域的路径,如何处理这些CDC路径非常重要。由于Vivado支持的约束标准XDC在处理CDC路径上与上一代ISE中支持的UCF约束有本质区别,如何约束以及怎样从设计上保证CDC路径的可靠性就成了重中之重。《XDC约束技巧之CDC篇》中对Vivado中的跨时钟域设计有详细描述,UG949中也有不少篇幅用来讨论CDC路径的各
本文标题:Vivado使用误区与进阶
链接地址:https://www.777doc.com/doc-6406085 .html