Versal器件Advanced Flow概览

作者:Grace Sun,AMD工程师;来源:AMD开发者社区

在最新发布的Vivado Design Suite 2024.2中,引入的新特性之一是启用了仅适用于Versal器件的Advanced Flow布局布线。关于此特性,文档UG904以及AR#000036830 均有说明,本文基于此做些扩展汇总,以帮助读者对Advanced Flow有更全面的了解。

为何要引入新的布局布线?

AMD Versal 自适应 SoC 将强大的可编程逻辑与加速引擎以及先进的内存和接口技术相结合,为各种应用提供定制且高效的异构加速。Versal 器件的逻辑密度显著提高,从而提高了性能和容量。下表比较了 UltraScale+ 系列的 VU19P 与 Versal Premium 系列的 VP1902,后者是一款大型器件。

1.png

从 UltraScale+ 过渡到 Versal 器件已导致关键资源显著增加:CLB LUT、BRAM、URAM、DSP 和逻辑单元的数量增加了一倍。这一增强功能能实现更复杂的设计。然而,随着逻辑密度的增加,编译时间也呈非线性增长。

随着设计变得越来越复杂,需要Vivado工具进行创新,以有效管理和应对以下方面的挑战:

  • 编译时间

  • 设计收敛

  • 拥塞问题

Advanced Flow相较于Vivado传统的Standard Flow而言,旨在提高设计效率并缩短编译时间,适用于更大、更复杂、功能丰富的 AMD Versal自适应 SoC。

为了应对 Versal 架构编译时间更长的挑战,优化和加速布局布线过程至关重要。增强这一步骤将有助于管理 Versal 自适应 SoC 的复杂性。

从 2024.2 版本开始,Vivado Design Suite 为所有 Versal 器件引入了Advanced Flow。这种新流程具有新的布局布线算法,可提高设计性能、改善可布线性并更好地解决复杂的时钟布局要求。额外的架构改进增强了将大型复杂问题分解为可以并行解决的小问题的能力。

Advanced Flow 的引入显著加快了编译时间,改善了Versal设计的QoR,从而有助于提高整体生产力和加速设计迭代。

新流程详述

典型的设计流程从设计创建开始,然后是所有设计功能的模拟和验证,然后进入综合阶段。Advanced Flow的主要重点是Implementation阶段,其中包括自动并行编译和新的布局和布线算法,如下图所示:

2.png

Advanced Flow引入了改进的分区和布局规划方法,可优化并行编译。新算法有助于放置复杂的时钟网络、减少拥塞并提高整体性能。这种架构和算法的组合大大加快了编译过程。placement后,分区信息将传递到router,以便可以并行布线分区。

后续流程(例如时序和功率分析、编程和调试)与 Vivado 的先前版本相同。

Advanced Flow 之所以成为 Versal 器件更强大的解决方案,主要得益于其自动分区以实现并行处理的功能。

3.png

自动分区将大型复杂设计划分为可以并行解决的较小布局和布线问题,以更有效地处理分区的并行编译。对于 SSI 设备,这涉及将逻辑划分为SLR,对于单片设备,将逻辑划分为设备内的不同区域。

分区器会分析设计层次结构、资源使用情况以及模块之间的连接,自动完成设计分区。分区后,设计将以并行方式进行布局,从全局布局阶段开始,通过粗略级别的时序和拥塞优化进行整个设备的设计布局。下一阶段的详细布局和布局后优化器将优化全局布局,以确保最佳引脚密度和最佳整体性能。

然后,分区信息将传递到布线器,布线器将使用相同的分区进行并行布线,从而实现非常快速的时序收敛。

与之前的版本一样,物理优化(Phys Opt Design 步骤)可在布局后的任何时间使用,以改善时序。

在 Vivado 内部,Advanced Flow 使用更精简的数据结构来存储和检索物理设计信息,这不仅提高了布局和布线速度,而且还提高了使用checkpoint读写大型设计的能力,减小了内存占用。多线程的改进进一步提高了布局和布线效率。

4.png

新的时序引擎经过优化,可与布局器及其数据结构配合使用,有助于快速评估布局更改的时序影响。此外,布局器还增加了减少每个方向的布线拥塞的功能,从而显著提高了整体设计的可布线性。新的时钟区域布局器的容量大大增加,从而可以更好地处理具有大量全局时钟的复杂设计。

布线器可以从布局器获取分区信息来并行布线这些分区,也可以提前预测要使用多少个分区。初始布线后,会自动探索布线算法的不同参数和阈值组合。布线器会选择最佳组合,引导算法快速收敛到时序要求。

总体而言,这种新的工具架构具有将大型复杂设计自动分解为独立分区的功能,无需用户干预即可缩短编译时间。

新流程的使用指南

在 Vivado Design Suite 2024.2 版本中,Advanced Flow自动为所有 Versal 器件启用。请注意,Advanced Flow不支持上一代 7 系列、UltraScale 和 UltraScale plus 器件。

由于新流程包含在 Vivado 后端布局布线中并集成于用户熟悉的Vivado IDE,因此 Vivado 前端设计流程没有变化,用户无需学习新的设计环境。IP Integrator,IP定制和 RTL 开发与旧流程相同。Project和non-project流程以及相关的 Tcl 描述基本保持不变。

下表记录了由于引入Advanced Flow而导致的Implementation中的一些关键变化。

5.png

尽管整体设计流程不会发生变化,但placer directive存在显著差异。

与先前 Vivado 版本不同,Advanced Flow将directive列表简化为下图所示的五个:Quick、RuntimeOptimized、Default 和 Explore以及 AggressiveExplore。其中,前四个与以前一致,AggressiveExplore为新添的directive。这些选项为 place_design 命令提供了不同的行为模式,并影响所有布局器阶段。

6.JPG

Advanced Flow对directive使用与前相同的选项和语法。例如,place_design -directive AggressiveExplore以最大的努力运行布局器以满足时序约束,但代价是更长的运行时间。另一方面,选择 Runtime Optimized 会牺牲一些满足时序的努力来换取更快的编译速度。与以前一样,指令在工具设置菜单中可用,可用于创建Implementation策略。

Subdirective是Advanced Flow中的新布局选项。此选项提供对布局的不同阶段的更细粒度控制:布局规划(Floorplan)、全局布局(GPlace)和详细布局(DPlace)。与directive互斥使用不同,用户可以同时应用多个subdirective,这意味着您还可以将多个Subdirective与一个directive选项组合起来以进行更广泛的探索。

下面的表格显示了当前支持的Subdirective列表及其主要用途。不同的Subdirective可以应用于布局的一个或多个阶段。借助Advanced Flow,这些Subdirective可以解锁更多可能性,以探索不同的选项组合,从而增加极具挑战性的设计的时序收敛可能性。这比原始单一的directive选项涵盖了更多的解决方案空间。

7.png

Tcl用法示例:

place_design -subdirective {Floorplan.BalancedSLR.med GPlace.ReduceCongestion.high DPlace.ReducePinDensity.med} -directive Explore

每个Subdirective选项都以布局器阶段名称作为前缀,如果适用,后面会跟high|med|low的级别值。而有些只需要指定Subdirective表示启用此优化,格式如下:

<phase>.<sub-directive>.<value>

<phase>.<sub-directive>

在此示例中,由于-directive选项是Explore,布局器最初会为 Floorplan、GPlace 和 DPlace 的每个阶段选择Explore设置。然后,除了Explore选项之外,还会应用Subdirective选项。对于此示例,在 Floorplan 阶段使用 BalancedSLR 中级,在 GPlace 阶段应用 ReduceCongestion 高级,在 DPlace 阶段使用 ReducePinDensity 高级。

前面提到过,不同的Subdirective可以应用于不同的布局阶段,了解每个布局阶段可以应用哪些Subdirective非常重要。下图将Floorplanning,GPlace和DPlace阶段适用的Subdirective做了一个梳理:

8.png

在这里,我们看到左侧的三个选项:RuntimeOptimized、ExtraTimingUpdate 和 ExtraTimingOpt 适用于所有布局阶段。

在右侧,我们可以看到哪些选项仅适用于某些阶段。例如,BalancedSLR 只能在布局规划阶段的早期应用,因为它会影响设计的分区方式,后面的阶段就太晚了。此外,像 ReducePinDensity 这样的设置只能在 Detailed Placement 期间应用,因为它涉及在接近尾声阶段对单元布局进行微调。

对于不同Subdirective是否需要指定<value>,请参考下表:

9.png

让我们进一步看看旧流程(Standard Flow)的directive如何映射到Advanced Flow中与其等效的Subdirective。

如前所述,Versal 的 Advanced Flow 支持熟悉的 Default、Explore、RuntimeOptimized 和 Quick  directive。

10.png

许多Standard Flow Directive可以使用Subdirective和其他布局器选项转换为Advanced Flow。一个简单的例子是“EarlyBlockPlacement”,它直接映射到Subdirective“Gplace.EarlyBlockPlacement”。

某些指令(如 Alt Spread Logic)需要更复杂的转换,Alt Spread Logic 映射到所有布局器阶段的多个子指令。

11.png

在某些情况下,directive被其他选项替换。Extra net delay high 和 Extra net delay low 分别被新的 Advanced Flow place_design 选项替换,该选项具有类似的名称 net_delay_weight,取值high和low。一个主要优点是,与额外的-direcvite ExtraNetDelay不同,-net_delay_weight可以与其他directive和Subdirective一起使用,从而解锁更多可能的组合。

12.png

另外,并非所有指令都可以转换为Advanced Flow等效选项,如不支持的表格中所示。

13.png

使用 Advanced Flow  placer directive实现时序收敛,请参考以下的推荐方法。

14.png

在第一组运行中,尝试三个基本directive:Default、Explore 和 AggressiveExplore,看看是否有任何directive符合时序要求。

如果时序要求不满足,请使用 Run #1 中性能最佳的directive,并与图中所示的几个关键Subdirective相结合。

如果第二组运行仍未产生时序收敛结果,请采用 Run #2 中性能最佳的组合,并应用如 Run #3 中所示的其他Subdirective。

这种有条不紊的方法比简单地迭代整个directive和Subdirective集合更有效,后者在编译时间和计算资源方面成本极高。

请务必记住,Advanced Flow 不能替代良好的设计方法,检查方法违规行为(report_methodology)也很重要,因为这些违规行为可能会导致时序收敛障碍。

旧版本的Versal设计移植

所有 Versal 工程升级到 2024.2 时,都需要切换到Advanced Flow。如果您有一个 2024.1 Versal的Vivado工程,在 2024.2 中打开此工程时,您将看到一个对话框,指示必须升级工程。

15.png

假设您已查看流程中的关键更改(例如Intelligent Design Runs和incremental compile流程还不支持),并同意升级到 2024.2,最好先存档您的项目或设计,因为此迁移不可逆,工具将重置所有的implementation run并将选项设置为Advanced Flow布局和布线。

关于工程的implementation策略,需要遵循一些实施指南:

- 为了便于项目流程迁移,大多数策略都直接在 Advanced Flow 中受支持,如前所述,布局器directive映射到其等效的 Advanced Flow  directive、subdirective和布局器选项。

- 遇到不受支持的策略时,Vivado 会生成警告消息,并在选择默认策略后继续。

- 用户自定义的策略无法自动转换为其 Advanced Flow 等效策略,而是映射到默认策略。

- 可以使用新的布局器subdirective和选项创建新的用户定义策略。策略编辑器完全支持 Advanced Flow。

如果使用 Tcl 命令的方式打开工程,设计将自动升级,并且消息将回显到 Tcl 控制台,通知您进度以及配置的选项和策略。DCP文件 也需要升级。如果您将place_design之前的 DCP 添加到项目中,或者单独打开 DCP,则 DCP 将在内存中自动读取和升级。如果 DCP 是place_design完成后的,这将导致错误情况,因为 DCP 中保存的现有布局和布线数据库与Advanced Flow不兼容。

在使用non-project模式的情况下,用户可以自己管理源文件和设计过程。在执行non-project Tcl脚本期间,布局和布线过程中会出现一些含有“Advanced Flow”的INFO信息。

由于Advanced Flow仅适用于 Versal,因此非 Versal 项目不受此更改的影响。此外,如果您有一个 2024.1 设计,并且已经在使用Advanced Flow的Early Access版本,则应该也不会受到任何影响。

总结

本文介绍了 Versal 的Advanced Flow,这是 Vivado 2024.2 版本提供的一套新的布局布线功能。

Advanced Flow采用改进的架构,可以更好地并行编译分区,并采用新算法来减少布线拥塞,更好地处理具有大量全局时钟的复杂设计布局。

这些改进缩短了整体设计周期,使您能够在更短的时间内完成时序收敛,提高设计效率



最新文章

最新文章