logo资料库

vivado使用误区与进阶.pdf

第1页 / 共65页
第2页 / 共65页
第3页 / 共65页
第4页 / 共65页
第5页 / 共65页
第6页 / 共65页
第7页 / 共65页
第8页 / 共65页
资料共65页,剩余部分请下载后查看
00-Ally_ebook cover.pdf
00-Catalog.pdf
01-UltraFAST.pdf
02-XDC-Clock.pdf
03-XDC-CDC.pdf
04-XDC-IO-1.pdf
05-XDC-IO-2.pdf
06-Tcl in Vivado.pdf
07-Tcl implement flow .pdf
08-Tcl ECO.pdf
09-Timing Report.pdf
10-END.pdf
我一直在问我自己 到底有没有一种简便的方法 能够让更多 Vivado 的用户 从我们的新技术新产品中受益, 从而帮助他们更好更快地完成自己的设计? Advanced Design Tips 作者:Ally Zhou,Xilinx工具与方法学应用专家
主要文档  即插即用 IP 背景资料  【中文版】UltraFast 设计方法指 南 ( UG949 )  UltraFast 嵌入式设计方法指南 UG1046  Vivado Design Suite 加速设计生 产力的九大理由  Vivado IP Integrator 背景资料 Vivado UltraFAST 想到要写这一系列关于工具和方法学的小文章是在半年多前,那时候 Vivado®已经推出两年,陆续也接触了不少客户和他们的设计。我所在的部 门叫做“Tools & Methodology Applications”,其实也是专为 Vivado 而设的一 个部门,从 Vivado 的早期计划开始,我和我的同事们就投入到了 Xilinx©和 Vivado 的客户们的推广和支持中,我们给客户做培训,在市场活动上做报 告,培训和考核代理商,也去现场支持客户的设计。两年的时间,Vivado 不 断成熟,客户们也从最初的焦虑抗拒到全面接受,但随着与用户更深层次的 技术交流。接触了一些客户的设计后,我渐渐发现其实很多 Vivado 的用户并 没有真正了解它的好处,或者说,要么不够深入,要么就是有很多认识的偏 差。也许是语言的限制,也许是对各种各样动辄上百页的 PDF 文档的无所适 从,我能感觉到他们需要一些更直接,更有针对性的指引。 我一直在问我自己,到底有没有一种简便的方法,能够让更多 Vivado 的 用户从我们的新技术新产品中受益,从而帮助他们更好更快地完成自己的设 计? 下定决心后,我便开始从日常工作和大家的反馈中寻找普遍感兴趣的话 题,分门别类、挑选实例、尽量用简洁明快的文字和一目了然的插图叙事, 把一篇文章控制在十页以内。阅读这样一篇文章也许只需要你一顿午饭的时 间,当你碰到一个技术问题,可以快速用关键字索引到对应的文章。作为工 程师,应该比较欢迎这样的小文章吧。在此要特别感谢我的很多同事,这些 文章中的不少实例和配图就是从他们创建的 PPT 中挑选的,我能做的就是把 更多 Xilinx 技术专家们的经验之谈用大家熟悉的语言传播出去,传递下去。 同时也感谢 Xilinx 市场部同事们的一路支持,使得以下九篇文章在广大客户 群中广为流传,并以此电子书的形式分享给更多的网友们。 周丽娜(Ally Zhou) 赛灵思公司工具与方法学应用专家 Ally Zhou 拥有十多年 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 功能 第九章:读懂用好 Timing Report
主要文档  即插即用 IP 背景资料  【中文文档】UG949 - UltraFast 设计方法指南 Vivado 使用误区与进阶 UltraFast UltraFAST™是 Xilinx©在 2013 年底推出的一套设计方法学指导,旨在指 引用户最大限度地利用现有资源,提升系统性能,降低风险,实现更快速且 可预期的设计。面向 Vivado®的 UltraFAST 方法学的主体是 UG949 文档, 配合相应的 Checklist,随 Vivado 版本同时更新,用户可以在 Xilinx 的主页上 免费下载。目前,针对 Vivado 设计套件的 UltraFAST 中文版也已经上市,另 外一套全新的针对嵌入式可编程设计的 UltraFAST 嵌入式设计方法指南 UG1046 也已经在 Xilinx 官网上开放下载。  UG1046 - UltraFast 嵌入式设计 尽管 UltraFAST 这个字眼经常在网上看到,不论官方还是其他媒体上说 方法指南 起 Vivado 设计套件时也常常提到,但很多用户仍然对这个概念十分模糊,有  Vivado Design Suite 加速设计生 不少人下载文档后看到 300 页的 PDF 顿时也失去了深入学习和了解的兴趣。 产力的九大理由  Vivado IP Integrator 背景资料 套用在 Xilinx 内部被誉为 “Vivado 之父” 的 Vivado 产品营销总监 Greg Daughtry 在去年第一届 Club Vivado 中所提出的 “时序收敛十大准则” 的概 快速链接 念,试着用十分钟的篇幅来概括一下什么是 UltraFAST,以及怎样利用  免费下载:Vivado Design Suite UItraFast 真正帮助我们的 FPGA 设计。 评估和 WebPACK 版本  Vivado 设计套件下载  支持和技术文档  Vivado 视频辅导资料  IP 中心  支持的目标参考设计  存储器推荐 培训与活动  Vivado 课程  高层次综合课程 准则一:合适的代码风格 准则六:少而精的物理约束 准则二:精准的时序约束 准则七:选择实现策略 准则三:管理高扇出网络 准则八:共享控制信号 准则四:层次化设计结构 准则九:读懂日志和报告 准则五:处理跨时钟域设计 准则十:发挥 Tcl 的作用 Greg Daughtry, Xilinx Vivado 产品营销总监 时序设计的十大准则,基本上也涵盖了 UltraFAST 设计方法指南的基本 要点。UG949 中将 FPGA 设计分为设计创建、设计实现和设计收敛几大部分 来讨论,除了介绍所有可用的设计方法和资源,更多的是一些高级方法学技 巧,这些技巧基本上都跟时序收敛有关或是以时序收敛为目标,有些通用的 方法和技巧甚至脱离了具体选用的 FPGA 器件的限制,适用于更广泛意义上 的时序收敛。 最宝贵的是,所有这些 UltraFAST 设计方法学技巧都来自一线技术支持 人员的经验以及客户的反馈,是业界第一本真正意义上完全面向用户的指 南。这一点只要你试着读过一两节 UG949 就会有明显感觉,所有其中提到的 技巧和方法都具有很高的可操作性,可以带来立竿见影的效果。 接下来我们就由这十大准则展开,带领各位读者在十分钟内理清 UltraFAST 方法学的脉络,一探其究竟。
Vivado 使用误区与进阶 准则一:合适的代码风格 理想环境下,源代码可以独立于最终用于实现的器件,带来最佳的可移植性和可复用性。但是,底层器件 各自独特的结构,决定了通用代码的效率不佳,要最大化发挥硬件的性能,必然需要为实现工具和器件量身定 制代码。 关于 Xilinx 器件和 Vivado 适用的代码风格,我们有以下建议: 1. 多使用 Vivado 自带的代码模板 2. 尽量避免使用异步复位 3. 在模块边界上使用寄存器而非组合逻辑 4. 使用流水结构来降低逻辑层数 5. 采用适当的 RAM 和 DSP 的实现方式(是否选用硬核) 6. 在综合后或是逻辑优化(opt_design)后的时序报告上分析代码优化的方向 准则二:精准的时序约束 精准的时序约束是设计实现的基础,对时序驱动工具 Vivado 来说,约束就是最高指示,是其努力实现的 目标。很多时候我们发现,约是有经验的工程师约是喜欢用一些旧有经验套用在 Vivado 上,例如很多人偏爱 用过约束的方式来追求更高的性能,但实际上对 Vivado 来说,大部分的过约束只会阻碍时序收敛。 简要概括而言,精简而准确的约束是时序收敛的必要条件,而 UltraFast 中提出的 Baseline 基线方法则是 充分条件。 具体的约束方法我们在《XDC 约束技巧》中有详细讨论,除了保证语法正确,还要注意设置 XDC 约束的 顺序,通常第一次运行时只需要约束所有时钟,然后在内部路径基本满足时序约束的情况下加入关键 I/O 的约 束,其次再考虑必要的时序例外约束。 所有这些约束都必须遵循精简而准确的 原则,且可以借助 Vivado 中的 XDC Templates 以及 Timing Constraint Wizard 的帮助来进行。 Baseline 基线方法可以说是 UltraFast 的灵魂部分,强烈建议所有 Vivado 的用户 都能精读 UG949 中的这部分内容,并将之 应用在具体的设计中。有机会我会深入展开 一篇专门介绍 Baseline 方法的短文,这里 先将其核心的概念做一个总结。
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 路径的各种设计技巧和约束方法。建议用户深入学习和了解这部分的内容,其中有不少概念并不仅仅 局限于 FPGA 设计中的跨时钟域设计,放在其他 IC 设计上也一样有效。 需要提醒大家的是,一定要利用好 Vivado 中的各种报告功能,例如 report_cdc 和 DRC 报告中的 methodology_checks 来检测设计中的 CDC 结构问题,并作出具体的设计调整或是补全 CDC 约束。另外要注 意各种不同的 CDC 路径处理方法之间的优劣,选择最适合自己设计的方式,配合相应的约束来保证跨时钟域 路径的安全。 准则六:少而精的物理约束 不同于对时序约束尤其是时钟约束之全面而精准的要求,Vivado 对物理约束的要求只有一个字:少。这里 的物理约束更多强调的是除了 I/O 引脚位置这些必要项之外的约束,例如对 RAMB 和 DSP48 的位置约束,还 有局部的 floorplan 计划。 很多资深工程师非常喜欢画 floorplan,因为其对设计的数 据流和资源使用情况了如指掌,根据自己理解画出的 floorplan 通常也算合理。但是,floorplan 在 Vivado 中的重要性远低于以 往在 ISE 上的作用。根据客户的实际经验反馈,绝大多数的设计 中都无需任何 floorplan(某些时序要求较高的 SSI 芯片设计上 可能需要),因为算法的改进,Vivado 在布局上比上一代 ISE 更 聪明,没有任何物理约束(除了 IO 引脚位置约束)的设计反而 能在更短的时间内更好地满足时序要求。 在确实需要锁定某些宏单元以及进行 floorplan 的设计中, 一般我们会推荐先不加任何物理约束来跑设计,在其他诸如改进 源代码,设置约束和选项,改变策略等办法都试过后,再尝试物 理约束。而且,最好只在少量关键的设计区域进行 floorplan, 切忌过度约束,不要创建资源利用率过高的 pblocks,同时避免 重叠的 pblocks 区域。 顺便提一下,Vivado IDE 中的 Device 视图可以通过设置不同 颜色来高亮显示不同模块,用户可以根据当前设计的布局结果配合 时序报告和关键和调整 floorplan,操作非常便捷。 准则七:选择实现策略 从 ISE 升级到 Vivado 后,很多用户发现 SmartXplorer 功能不见了,当设计进行到后期,假如不能遍历种 子,常让人感到无所适从,甚至怀疑到了这一步 Vivado 便无计可施。那么事实到底如何呢? 严格来讲,Cost Table 其实是一种无奈之举,说明工具只能通过随机种子的改变来“撞大运”般筛选出一个 最佳结果,这也解释了为何改变 Cost Table 的结果是随机的,一次满足时序,并不代表一直可以满足。
Vivado 使用误区与进阶 因为更高级算法的引入,Vivado 中的设计实现变得更加可靠,而且是真正意义上的可预计的结果。但这 并不代表在 Vivado 中对同一个设计进行布局布线只能有一种结果。我们可以通过“策略”来控制实现过程中的算 法侧重,从而可以产生更优化的结果。 策略(Strategy)是一组工具选项和各个阶段指示(Directive)的组合,Vivado IDE 中内置了几十种可供 用户直接选用,但如果穷尽各种组合,整个实现过程大约有上千种策略。当然,我们没必要遍历每种策略。而 且因为策略是一种可预计可重现的实现方法,所以对同一个设计,可以在选择几种有侧重点的策略后挑选出效 果最好的那个,只要设计后期没有大的改动,便可一直延用同样的策略。 具体策略的特性,请参考 UG949 和 UG904 等文档,也可以在 Vivado 中通过 help 菜单了解。更多时候, 选择怎样的策略是一种经验的体现,另外,即使找到了最佳实现策略,也仍旧有可能不满足时序要求,这时候 我们还可以参考《用 Tcl 定制 Vivado 设计实现流程》中所述,对设计实现的流程进行进一步的个性化定制。 另外要强调一点,修改策略来提升性能必须放在调整代码、约束和选项等更直接高效的优化方法之后进 行,其能带来的性能提升比起前述优化方法来说也更加局限。 准则八:共享控制信号 共享控制信号这一点充分体现了设计必须考虑到用于底层实现的芯片结构的重要性,在 Xilinx 的芯片上, 时钟、置位/复位和时钟使能等信号通称为 Control Set,进入同一个 SLICE 的 Control Set 必须统一。换句话 说,不同 Control Set 控制下的 FFs 不能被 Vivado 放进同一个 SLICE。 为了提升 SLICE 的利用率,获得更高效的布局方案,提升时序性能,我们必须控制一个设计中 Control Set 的总数,尽量共享控制信号。具体做法包括: 1. 尽量整合频率相同的时钟和时钟使能信号; 2. 在生成 IP 时选择“共享逻辑”功能,则可以在不同 IP 间尽可能的共享时钟资源; 3. 遵循 Xilinx 建议的复位准则: a) 尽量少使用复位 b) 必须复位时采用同步复位 c) 确保使用高电平有效的复位 d) 避免异步复位(RAMB 和 DSP48 模块中不支持异步复位) Xilinx 的复位准则必须严格遵守,根据现场支持的经验来看,很多设计性能的瓶颈就在于设计源代码时没 有考虑底层实现器件的硬件结构特点,尤其以复位信号的实现问题最为突出。 准则九:读懂日志和报告 任何一个工具的日志和报告都是衡量其性能最重要的一环,正因为有了完备的日志与报告,用户才可以通 过其中显示的信息,定位设计中可能的问题,决定优化方向。 Vivado 日志中将信息显示为三大类,分别为 Error、Critical Warning 和一般 Warning/Note 等。Error 会导 致工具直接中断,其他警告不会中断工具运行,但所有的 Critical Warning 都需要用户逐一检查并通过修改设 计、增加约束或设置选项之类的办法来修复。
Vivado 使用误区与进阶 Vivado 的报告功能很强大,除了《读懂用好 Timing Report》中描述的时序分析报告,还有很多重要的报 告,小到检查设计中的特定时序元件和链路,大到各种预置和自定义的 DRC 检查,不仅提供给了用户多样的 选择,也进一步保证了设计的可靠性。 Vivado 也一直在增强和更新报告的种类,比如 2014.3 之后还增加了一个设计分析报告 report_design_analysis,用来报告关键路径上的潜在问题以及设计的拥塞程度。完整的 report 命令和功能可以 在 UG835 中查询。 准则十:发挥 Tcl 的作用 Tcl 在 Vivado 中的作用不容小觑,不仅设计流程和报告全面支持 Tcl 脚本,就连 XDC 约束根本上也来自 于 Tcl,用户甚至可以直接把包含有循环等功能的高级约束以 Tcl 的形式读入 Vivado 中用来指引整个实现流 程。 《Vivado 使用误区与进阶》系列中有三篇关于 Tcl 在 Vivado 中的应用文章,详细描述了如何使用 Tcl 创 建和应用约束,查找目标和定位问题;如何用 Tcl 来定制 Vivado 的设计实现流程,为图形化界面提供更多扩展 支持;以及如何用 Tcl 实现 ECO 流程。Tcl 所带来的强大的可扩展性决定了其在版本控制、设计自动化流程等 方面具有图形化界面不能比拟的优势,也解释了为何高端 FPGA 用户和熟练的 Vivado 用户都更偏爱 Tcl 脚 本。 另外,随着 Xilinx Tcl Store 的推出,用户可以像在 App Store 中下载使用 app 一样下载使用 Tcl 脚本,简 化了 Tcl 在 Vivado 上应用的同时,进一步扩展了 Tcl 的深入、精细化使用。最重要的是,Tcl Store 是一个基 于 GitHub 的完全开源的环境,当然也欢迎大家上传自己手中有用的 Tcl 脚本,对其进行补充。 小结 关于 UltraFast 的要点总结基本可以概括在上述十点,这也可以看作是对《Vivado 使用误区与进阶》系列 短文的一个串烧。说实话,八九页的篇幅要将整个 UltraFast 讲透基本没有可能,对于正在使用 Vivado 做设计 或是有兴趣试用的读者们,强烈建议各位在 Xilinx 官网下载完整的 UltraFast 指南并通读。 点击这里,下载中文 UltraFAST 设计指南 这篇短文和这本电子书旨在帮助大家尽快上手 Vivado 和 XDC,宝剑在手,再加上盖世神功傍身,行走江 湖岂不快哉。衷心祝福大家在 FPGA 设计之路上收获更多喜悦,让 Xilinx 和 Vivado 为您的成功助力。 —— Ally Zhou 2015-4-27 于Xilinx上海Office
分享到:
收藏