0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Xilinx Vivado使用增量实现

Hack电子 来源:Hack电子 2023-09-04 10:07 次阅读

增量实现自从首次获得支持以来,不断升级演变,在此过程中已添加了多项针对性能和编译时间的增强功能。它解决了实现阶段针对快速迭代的需求,显著节省了编译时间,还能确保所得结果和性能的可预测性。 以下图表显示了在一整套困难的设计上采用增量实现流程后,所节省的编译时间的变化趋势:

59ccea9c-4ac7-11ee-97a6-92fbcf53809c.png

图 1:2019.1 内部设计和外部设计通过增量实现流程节省的编译时间

59e0cdaa-4ac7-11ee-97a6-92fbcf53809c.png

图 2:2019.1 利用增量实现流程保证 QoR 可预测性

图 1 显示,对于运行时间超过 2 小时的设计,使用该流程前的编译时间平均为使用后编译时间的 2.12 倍(设计更改最多为 10%),节省编译时间效果显著。 图 2 显示了少量 RTL 更改的 QoR 可预测性指标。ΔWNS 显示的是相较于参考运行轮次的 WNS 降幅。显而易见,相比于默认运行轮次,增量编译所得 QoR 可预测性更好。例外情况是,设计越小,初始化步骤在编译总时间中占用时间越多,所以应用增量编译给设计编译时间带来的助益就越少。

流程

工程模式和非工程模式都支持此流程。如果您使用 read_checkpoint -incremental 命令加载参考设计检查点,并且指向参考 DCP 位置和名称,那么即可对后续布局布线操作启用增量编译设计流程。 在非工程模式下,read_checkpoint -incremental 应晚于 opt_design 而早于 place_design。

5a0077f4-4ac7-11ee-97a6-92fbcf53809c.png

当前,自动模式和非自动模式均受支持。要启用自动模式,您可打开实现设置,并选中“Automatically use the checkpoint from the previous run”(自动使用上一轮运行的检查点)选项。如不勾选自动模式,也可将用户所需的 DCP 指定为参考检查点,以便指引后续轮次的运行。

5a11b186-4ac7-11ee-97a6-92fbcf53809c.png

何时使用此流程:

如果设计代码稳定并且可以后续执行少量代码修改,或者如果您当前正致力于时序收敛的最后冲刺阶段并且已接近完成,那么此流程很有用。在这两种情况下,您可能希望每个实现版本的生成周期都很短。 增量实现流程从参考检查点读取布局布线信息,并与当前 opt_design 后网表进行匹配比较。匹配的单元将得到复用,新添加的逻辑经最优化后,将在默认流程中运行。匹配的单元与不匹配的单元之间也将进行交叉最优化。

因此,如果大部分逻辑可复用,并且设计接近满足时序,那么此流程对编译时间的助益最大。 另一个用例是,如果您的设计困难,且距离收敛相去甚远,但您想要在某些级别复用此设计(例如,SLR 级别、块类型级别、模块级别),那么也可以使用此流程。在此情况下,您可将增量模式更改为部分复用模式。

例如,以下约束行的效果等同于将所有 RAM 的位置从网表都反标注释到 XDC 内并在下一轮运行中应用约束: read_checkpoint -incremental routed.dcp -reuse_objects [all_rams] -fix_objects [all_rams]

可能影响增量实现编译时间的因素:

采用此流程前,请注意以下要点,这些要点有助于您充分发挥增量流程优势:

选择正确的检查点。您需确保参考检查点与受指引的设计处于同一器件内,实现时采用的 Vivado 版本与当前运行采用的版本相同。如果采用不同版本生成 DCP,可能会导致单元匹配减少,并且节省的编译时间不及预期。

限制时序关键面积内的更改量,确保设计收敛的一致性和时序收敛。设计逻辑中更改过多可能会导致指引的结果欠佳或编译时间延长。如果不能复用关键路径的布局和布线,则需要做更多工作来保留时序。另外,如果少量设计更改引入了参考设计中不存在的新时序问题,则可能需要增加工作量和运行时间,而且设计可能不满足时序。请始终确保所用 opt_design 指令匹配,因为更改 opt_design 可能导致更多单元名称发生更改。

如果启用自动模式,那么仅当参考运行的时序 >-0.250 ns 时,才会更新参考检查点,换言之,您的参考检查点的时序必须足够好。 参考网表欠佳可能导致编译时间延长。如果不更新参考检查点,并且存在来自先前运行的现有检查点,那么 Vivado 会尝试使用该现有检查点作为参考检查点。否则,不存在参考检查点时,它会还原为默认实现流程。 遵循默认运行行为时,Vivado 会遵循用户所选的运行策略,编译时间与非增量运行接近。

如果运行开始后存在检查点(无论是更新还是预先存在的参考检查点),就会运行与设计网表更改相关的第二种检查算法,仅当满足所要求的标准时才会使用增量流程。如果这些条件都没有得到满足,流程会自动回退到默认实现流程,在读取检查点增量后会发出以下信息:

WARNING: [Project 1-964] Cell Matching is less than the threshold needed to run Incremental flow. Switching to default Implementation flow

高复用模式:单元复用百分比高于 75% 时,就进入高复用模式。在高复用模式下,会对布局布线算法进行最优化,以便尽可能提高现有布局布线信息的复用率。高复用模式对于参考检查点已达成时序收敛并且单元复用率不低于 95% 的设计最有效。举例来说,在参考设计与当前设计之间存在少量设计更改,或者向设计添加调试核的情况下都是如此。

有 3 条指令可供 place_design 和 route_design 使用:

Default(默认):获取与参考运行尽可能接近的结果。以参考设计 WNS 为目标。此模式能为典型用例达成最优化的编译时间。

Explore(探索):尝试尽可能改善时序。以 0.00 ns WNS 为目标。这会耗费更多编译时间。

Quick(快速):运行布局布线命令,不调用时序引擎。这可提供最优化的编译时间,在复用率高达 > 99.5% 的部分设计中,不影响 QoR。

低复用模式:如果设计相较参考检查点存在大量更改,或者如果用户对 read_checkpoint 命令使用-only_reuse 开关,指定仅复用参考检查点中的少量单元,则进入低复用模式。 在低复用模式下,支持所有 place_design 指令和 route_design 指令,并且该工具将以 0.00 ns 的 WNS 为目标。相比于高复用模式,这样可能会耗用更多编译时间。低复用模式对于在特定面积内难以完成布局布线的设计最有效。例如,复用正常运行的块存储器或 DSP 布局,或者复用间歇性达成时序收敛设计的特定层级。

布局布线运行时间的初始化部分。 在简短的布局布线运行中,Vivado 布局器和布线器的初始化开销可能会抵消来自增量布局布线进程的任何增益。对于运行时间较长的设计,初始化在运行时间中所占的比例较小,因此编译时间增益明显。

通过启用多线程可以进一步缩短实现的编译时间。目前对于 Linux 系统,最大上限是 8 个线程。set_param general.maxThreads 8

生成增量编译时间节省报告:

运行 report_incremental_reuse 命令,生成显示增量复用情况的报告。此报告的第 3 部分列出了编译时间(elapsed 和 cpu),显示了每一步耗费的编译时间。 由于增量运行的指引作用仅从 place_design 阶段开始,您需要注意,增量运行所涉时间将包含用于读入参考检查点的 read_checkpoint 步骤,并且增量编译时间的比较应仅从 place_design 开始。 下表显示了包含 read_checkpoint 在内的每个阶段的时间。此外,新网表的更改量对增量运行时间的影响可能更大。 请注意,增量运行中的 phys_opt_design 步骤是可选步骤,在流程中调用该步骤时,它将以默认模式运行,以进一步优化未受指引的路径或已更改的路径,对复用的路径没有影响。

5a38ef8a-4ac7-11ee-97a6-92fbcf53809c.png

总结:

通过采用增量实现流程,可以实现快速迭代的实现运行,但在运行此流程时需要考虑编译时间和 QoR(质量结果)方面的妥协。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119388
  • 编译
    +关注

    关注

    0

    文章

    615

    浏览量

    32397
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65107

原文标题:Xilinx Vivado使用增量实现

文章出处:【微信号:Hack电子,微信公众号:Hack电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    xilinx vivado 2013.4 教程

    哪位大神能够分享一下关于xilinx vivado 2013.4 的教程啊,小弟感激不敬!!!
    发表于 03-26 21:38

    关于Xilinxvivado

    请问一下Xilinx公司发布的vivado具体的作用是什么,刚刚接触到,以前一直用quartus ii,没有使用过ise,后来今天听说了vivado,不知道是做什么用的,希望大家都能参与讨论中,谢谢。
    发表于 04-15 16:51

    下载Xilinx Vivado 2017.1时出错

    您好,我想下载Xilinx Vivado 2017.1但是,每次我收到以下错误:“由于您的帐户导出合规性验证失败,我们无法满足您的要求。”谁能帮我?提前致谢以上来自于谷歌翻译以下为原文Hello
    发表于 12-27 10:41

    Vivado中的Incremental Compile增量编译技术详解

    Incremental Compile增量编译是Vivado提供的一项高阶功能。目的旨在当设计微小的改变时,重用综合和布局布线的结果,缩短编译时间。
    的头像 发表于 07-05 06:06 1w次阅读

    Xilinx Vivado HLS可以快速、高效地实现QRD矩阵分解

    使用Xilinx Vivado HLS(Vivado 高层次综合)工具实现浮点复数QRD矩阵分解并提升开发效率。使用VivadoHLS可以快速、高效地基于FPGA
    发表于 11-17 17:47 3369次阅读
    用<b class='flag-5'>Xilinx</b> <b class='flag-5'>Vivado</b> HLS可以快速、高效地<b class='flag-5'>实现</b>QRD矩阵分解

    Vivado Design Suite 2015.3新增量编译功能介绍

    了解Vivado实现中2015.3中的新增量编译功能,包括更好地处理物理优化和自动增量编译流程。
    的头像 发表于 11-20 06:56 2552次阅读

    Vivado 2015.3中的新增量编译功能介绍

    了解Vivado实现中2015.3中的新增量编译功能,包括更好地处理物理优化和自动增量编译流程。
    的头像 发表于 11-29 06:32 3388次阅读

    如何使用Vivado设计套件配合Xilinx评估板的设计

    了解如何使用Vivado设计套件的电路板感知功能快速配置和实施针对Xilinx评估板的设计。
    的头像 发表于 11-26 06:03 3110次阅读

    Vivado 2015.3的新增量编译功能

    了解Vivado实现中2015.3中的新增量编译功能,包括更好地处理物理优化和自动增量编译流程。
    的头像 发表于 11-30 19:24 4300次阅读

    如何在Vivado实现逻辑锁定和增量编译工程实例说明

    本文针对Vivado实现的逻辑锁定和增量编译进行的工程实例介绍,文中有对应工程的下载地址。友情提示:(1)增量编译只允许修改当前工程不超过5%的时候才有效,一般应用于较大工程添加修改
    的头像 发表于 07-06 10:32 6786次阅读
    如何在<b class='flag-5'>Vivado</b>中<b class='flag-5'>实现</b>逻辑锁定和<b class='flag-5'>增量</b>编译工程实例说明

    Vivado综合引擎的增量综合流程

    Vivado 2019.1 版本开始,Vivado 综合引擎就已经可以支持增量流程了。这使用户能够在设计变化较小时减少总的综合运行时间。
    发表于 07-21 11:02 1391次阅读

    Xilinx_Vivado_zynq7000入门笔记

    Xilinx_Vivado_zynq7000入门笔记说明。
    发表于 04-08 11:48 70次下载

    Vivado中设计锁定与增量编译方法简析

    增量实现由两个流程构成:原始流程和增量流程,如图所示。其中,原始流程提供网表。
    的头像 发表于 10-10 14:16 1189次阅读

    用TCL定制Vivado设计实现流程

    今天推出Xilinx已发布的《Vivado使用误区与进阶》系列:用TCL定制Vivado设计实现流程。
    的头像 发表于 05-05 09:44 738次阅读
    用TCL定制<b class='flag-5'>Vivado</b>设计<b class='flag-5'>实现</b>流程

    为EBAZ4205创建Xilinx Vivado板文件

    电子发烧友网站提供《为EBAZ4205创建Xilinx Vivado板文件.zip》资料免费下载
    发表于 06-16 11:41 1次下载
    为EBAZ4205创建<b class='flag-5'>Xilinx</b> <b class='flag-5'>Vivado</b>板文件