1
本文作者:AMD 工程师 Grace Sun
您可点击开发者分享|AMD Versal 自适应 SoC 器件 Advanced Flow 概览(上)查看上篇文章。
新流程的使用指南
在 AMD Vivado Design Suite 2024.2 版本中,Advanced Flow 自动为所有 AMD Versal 自适应 SoC 器件启用。请注意,Advanced Flow 不支持上一代 7 系列、AMD UltraScale FPGA 和 UltraScale plus 器件。
由于新流程包含在 Vivado 后端布局布线中并集成于用户熟悉的 Vivado IDE,因此 Vivado 前端设计流程没有变化,用户无需学习新的设计环境。IP Integrator,IP 定制和 RTL 开发与旧流程相同。Project 和 non-project 流程以及相关的 Tcl 描述基本保持不变。
下表记录了由于引入 Advanced Flow 而导致的 Implementation 中的一些关键变化。
尽管整体设计流程不会发生变化,但 Placer Directive 存在显著差异。
与先前 Vivado 版本不同,Advanced Flow 将 Directive列表简化为下图所示的五个:Quick、RuntimeOptimized、Default 和 Explore以及 AggressiveExplore。其中,前四个与以前一致,AggressiveExplore 为新添的 Directive。这些选项为 place_design 命令提供了不同的行为模式,并影响所有布局器阶段。
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 选项涵盖了更多的解决方案空间。
Tcl 用法示例:
每个 Subdirective 选项都以布局器阶段名称作为前缀,如果适用,后面会跟 high|med|low 的级别值。而有些只需要指定 Subdirective 表示启用此优化,格式如下:
在此示例中,由于 -directive 选项是 Explore,布局器最初会为 Floorplan、GPlace 和 DPlace 的每个阶段选择 Explore 设置。然后,除了 Explore选 项之外,还会应用 Subdirective 选项。对于此示例,在 Floorplan 阶段使用 BalancedSLR 中级,在 GPlace 阶段应用 ReduceCongestion 高级,在 DPlace 阶段使用 ReducePinDensity 高级。
前面提到过,不同的 Subdirective 可以应用于不同的布局阶段,了解每个布局阶段可以应用哪些 Subdirective 非常重要。下图将 Floorplanning,GPlace 和 DPlace 阶段适用的 Subdirective 做了一个梳理:
在这里,我们看到左侧的三个选项:RuntimeOptimized、ExtraTimingUpdate 和 ExtraTimingOpt 适用于所有布局阶段。
在右侧,我们可以看到哪些选项仅适用于某些阶段。例如,BalancedSLR 只能在布局规划阶段的早期应用,因为它会影响设计的分区方式,后面的阶段就太晚了。此外,像 ReducePinDensity 这样的设置只能在 Detailed Placement 期间应用,因为它涉及在接近尾声阶段对单元布局进行微调。
对于不同 Subdirective 是否需要指定
让我们进一步看看旧流程(Standard Flow)的 Directive 如何映射到 Advanced Flow 中与其等效的 Subdirective。
如前所述,Versal 的 Advanced Flow 支持熟悉的 Default、Explore、RuntimeOptimized 和 Quick directive。
许多 Standard Flow Directive 可以使用 Subdirective 和其他布局器选项转换为 Advanced Flow。一个简单的例子是“EarlyBlockPlacement”,它直接映射到 Subdirective“Gplace.EarlyBlockPlacement”。
某些指令(如 Alt Spread Logic)需要更复杂的转换,Alt Spread Logic 映射到所有布局器阶段的多个子指令。
在某些情况下,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 一起使用,从而解锁更多可能的组合。
另外,并非所有指令都可以转换为 Advanced Flow 等效选项,如不支持的表格中所示。
使用 Advanced Flow placer directive 实现时序收敛,请参考以下的推荐方法。
在第一组运行中,尝试三个基本 Directive:Default、Explore 和 AggressiveExplore,看看是否有任何 Directive 符合时序要求。
如果时序要求不满足,请使用 Run #1 中性能最佳的 directive,并与图中所示的几个关键 Subdirective 相结合。
如果第二组运行仍未产生时序收敛结果,请采用 Run #2 中性能最佳的组合,并应用如 Run #3 中所示的其他Subdirective。
这种有条不紊的方法比简单地迭代整个 Directive 和 Subdirective 集合更有效,后者在编译时间和计算资源方面成本极高。
请务必记住,Advanced Flow 不能替代良好的设计方法,检查方法违规行为(report_methodology)也很重要,因为这些违规行为可能会导致时序收敛障碍。
旧版本的 AMD Versal 自适应 SoC 设计移植
所有 AMD Versal 自适应 SoC 工程升级到 2024.2 时,都需要切换到 Advanced Flow。如果您有一个 2024.1 Versal 的 AMD Vivado Design Suite 工程,在 2024.2 中打开此工程时,您将看到一个对话框,指示必须升级工程。
假设您已查看流程中的关键更改(例如 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 版本,则应该也不会受到任何影响。
总结
本文介绍了 AMD Versal 自适应 SoC 的 Advanced Flow,这是 AMD Vivado Design Suite 2024.2 版本提供的一套新的布局布线功能。
Advanced Flow 采用改进的架构,可以更好地并行编译分区,并采用新算法来减少布线拥塞,更好地处理具有大量全局时钟的复杂设计布局。
这些改进缩短了整体设计周期,使您能够在更短的时间内完成时序收敛,提高设计效率。
全部0条评论
快来发表一下你的评论吧 !