使用抽象外壳提高动态功能交换解决方案的开发效率
概要
IP与SoC设计
动态功能交换 (DFX) 在赛灵思芯片内赋能实现了巨大的灵活性,使用户能够按需加载应用,更新已经部署的系统并降低功耗。平台设计方便团队之间的协作,让一个团队专注于基础设施,另一个团队专注于硬件加速。然而,由于DFX 有基础性的流要求,使得 Vivado® 设计套件编译时间拖长并给多用户环境造成挑战。抽象外壳工作流(abstract shell flow )消除了其中一些障碍,为完成 DFX 设计创建了一个更有效的 Vivado 工具路径。抽象外壳为针对 DFX 平台解决方案的协作和编译时效率提供了全新的可能性。
引言
IP与SoC设计
DFX是赛灵思 FPGA 和自适应 SoC 中的一种强大功能,其增强了芯片的灵活性。功能能够在运行中加载,在器件其余部分保持运行的同时,将新的功能赋予给器件的一部分,在减少停机时间的同时提升器件的有效使用。这种时间复用型芯片使用方法让用户能以更少资源提供更多功能,为想要实现成本、功耗和时间节省的设计人员提供显著优势。
此外,DFX 还能实现多用户环境,方便多个群组或多家公司共享可编程逻辑空间。一个群组(可称为一级用户)为设计创建基础设施,负责存储器访问、通信链路、详细安全设计和运行时管理器等电路板级考量因素。一级用户锁定这个静态平台,将一个或多个空白工作空间留给其他群组(二级用户)来填充。
然而,DFX 需要进行一些前期考量:
·DFX 设计需要专门的设计结构与布局,以匹配“片内芯片”模式。这种比较僵化的结构可能会导致设计处理时间拖长的不良后果。
·完成加速的功能可以交付给本地平台或云端平台中的工作空间。标准的 Vivado DFX 流需要锁定的完整静态镜像,才能为布局布线这些加速功能提供情景。在多用户场景下,这样的要求可能会泄漏一级用户拥有的专有设计信息。
图 1:动态功能交换的概念
DFX 能实现新的可能性,然而对一切系统或设计而言,上述两个限制条件每个都是不受欢迎的。我们需要一种增强方法来解决这些问题。
抽象外壳是解决之道
IP与SoC设计
抽象外壳特性在 Vivado 设计套件 2020.2 版中面向所有 UltraScale+™ 器件提供,与标准的 DFX 流相比可提供一些显著优势。
什么是抽象外壳?
Vivado 工具中的标准 DFX 流需要多次通过实现工具。第一次通过是为静态设计获得布局布线结果,同时为每个可重配置分区 (RP) 建立一个可重配置模块 (RM)。这个静态设计镜像是配置成目标器件的平台,将在后续的部分重配置操作中保持运行。后续的每次通过实现,都使用锁定的静态镜像作为框架,以实现所有剩余的 RM。为确保情景保持一致,不允许用户修改静态设计,而是必须在存储器内打开静态设计,才能让 Vivado 工具理解工作设计环境。即使目标可重配置区域很小,也必须打开完整的静态设计镜像。这种做法不仅费时而且会占用存储器空间。
抽象外壳流为给定的 RP 创建简化版本的静态设计。从根本上说,抽象外壳是为实现新的 RM 和为该模块生成部分比特流提供情景所需的最简设计镜像。外壳的逻辑设计包含模块实例化的边界接口。分区的 Pblock(包括扩展的布线区域)如同任何时钟要求和边界时序要求一样,作为设计约束的一部分被捕获。该区域内的所有逻辑资源使用和物理资源使用都包含在内,以确保 RM 不会尝试使用任何已被静态设计占用的资源。部分比特流是为器件的物理区域构建的。该比特流内含设计静态部分和动态部分的编程信息。关键在于这些比特流的静态部分保持绝对地完全相同。
图 2:使用抽象外壳(右)抽象全静态设计(左)
经过优化的抽象外壳提供下列主要优势:
·外壳的检查点显著小于完整外壳。这有助于缩短新的 RM 的编译时间并减少存储器使用。
·对于有一个以上 RP 的设计,因为不需要完整的设计配置,可将运行设置为并行实现所有 RM。
·对于有多个用户参与的场景,设计安全是其优势。因为绝大多数的静态设计已被删除,所以在抽象外壳里看不见绝大多数的专有设计信息。
·静态设计内的任何许可 IP 不包含在抽象外壳里。这意味着在抽象运行过程中会绕过许可证检查。
抽象外壳设计流程
IP与SoC设计
这章节将比较抽象外壳流和默认的 DFX 流,核验生成和使用抽象外壳的底层命令。在使用抽象外壳流的情况下,上层配置的实现与用户实现静态设计,然后锁定静态设计结果所使用的标准 DFX 流完全相同。两个流程在保存纯静态设计结果前并无差异。write_abstract_shell 命令用于将目标分区装入黑盒子,修剪掉不需要的静态设计,锁定剩余的设计,并用 pr_verify验证结果。对于任何要成为抽象外壳的 RP,都必须调用这个命令,因为每个 RP 有唯一的资源占用和对静态设计的唯一连接。最后,其余 RM 的实现与标准流程一致,不过现在的重点是用于每个子运行的单个 RP。不采用构建新的全设计配置来实现(或重复使用)每个设计的多个 RM,每个 RM 在自己的抽象外壳内通过自己运行来实现,从而提高效率。
注释:在 Vivado 设计套件中,以非项目 Tcl 模式支持抽象外壳流。
图 3:用于抽象外壳解决方案的设计流程
上层设计配置可用于创建完整的器件编程镜像。最初的 RM 包含到任何 RP 内之后,每个 RP 都可以创建部分比特流。抽象外壳能为它们实现的功能生成更多部分比特流。对单家公司或单个设计团队的单用户环境,通过链接已完成布线的静态和动态检查点,能为比特流生成创建更多完整的设计配置。可以重建静态镜像与可重配置镜像的任意组合,从而为目标系统创建所需的完整比特流或部分比特流。在这个方面,与标准 DFX 流相比不存在限制。
几乎在任何场景下抽象外壳都能加快编译速度。具体提速程度取决于设计的结构。如果设计的动态区域很大,静态区域很小,创建抽象外壳只删除了很少的静态逻辑,那么获得的效益一般。例如,含有很少静态逻辑的赛灵思 Alveo™ 平台设计,使用抽象外壳流能将编译速度提高 2 倍以上。鉴于静态平台较少被再次访问,主要用途是用于构建新的 RM,这样可以显著节省编译时间。对动态区域较小、静态区域较大的设计而言,取得的效益要显著得多。就各类设计套件而言,与标准的 DFX 流相比速度能加快 5 倍、10 倍或更多倍。尽管创建抽象外壳会花费时间,但它并非是经常性步骤。下图所示的是,在各类 UltraScale+ 器件设计上使用抽象外壳后得到的编译时间节省(灰线)
图 4:编译时间节省
下图是有关具体示例设计更详细的图示。该设计动态区域占器件约四分之一大小,静态区域略大于三个 SLR Virtex®UltraScale+™ FPGA (VU9P) 里的单个超级逻辑区域 (SLR)。在静态设计实现后,新的 RM 用时 1.5 小时完成编译,部分因为 266MB 的静态设计检查点。使用抽象外壳流,外壳的设计检查点缩小至仅 10MB,存储器使用减少三分之一,同时编译时间缩短三分之二。
图 5:全外壳(左)与抽象外壳(右)比较示例
面向多用户环境的抽象外壳
IP与SoC设计
当对多用户环境使用 DFX 时,使用抽象外壳流能提供显著优势。DFX 帮助您使用赛灵思器件内部的动态应用空间构建解决方案。用户构建的平台可传递给另一用户,以便后续在此空间内加载任意数量的能在运行中交换的应用。一级用户构建的平台锁定了不允许修改的关键设计细节,包括存储器接口、通信通道和设计安全特性。二级用户将其功能插入到这个锁定环境,以便在硬件中加速。在这个场景下,一级用户通过使用标准的 DFX 设计流程,与二级用户共享完整的静态设计检查点(有可能泄漏设计秘密)。此外,对于任何包含在静态设计内的 IP,二级用户都需要许可证,即使二级用户并不实现设计的那个部分。
采用抽象外壳流后,静态设计的主体被删减,隐藏了专有设计信息。部分与目标动态区域有连接的片段可能仍然存在。这要求一级用户在分发抽象外壳前检查抽象外壳的内容。然而,基本上在任何情况下,都没有足够的信息对这些功能进行逆向工程。出于相同的理由,因为不可能使用这些 IP(除非它是由一级用户实现的),所以静态外壳中的任何 IP 的 IP 许可证检查都被绕过。
重要提示!因为 IP 功能在静态设计比特流中传递给二级用户,一级用户有责任审核任何 IP 的条款条件,确保自己有权利再分发该知识产权。
在单用户环境下为器件编程时,标准的 DFX 方法仍然适用。链接静态和可重配置的已布线检查点,然后调用 write_bitstream 生成完整器件的位文件,就能装配任何完整的设计镜像。然而对于多用户环境而言,一级用户必须提供初始的全器件比特流,首先对赛灵思器件进行编程。从无功能灰箱到 hello world,再到执行系统的某些基本功能的测试应用,该镜像可在动态区域内保有任何类型的默认应用。接着二级用户部分重配置该器件,使用从抽象外壳运行中生成的部分比特流,加载他们的加速功能。
图 6:面向多用户环境的编程流程
这个多用户环境例展示了 DFX 的全部优势:
·使用运行中的动态功能交换为应用提供硬件加速
·使用 Vivado DFX 开发流程实现快速编译
·从静态平台删除任何敏感的设计信息
关键在于为包括抽象外壳在内的任何 DFX 方法同步保有所有的完整比特流和部分比特流。尽管部分比特流可以从抽象外壳环境内生成,但它们也兼容用于创建外壳的原始静态设计。通过调用 pr_verify,将单独的抽象外壳和带有任何布线 RM 的抽象外壳进行比较就可以确认。也可以重新装配不同的全设计配置并再度运行 pr_verify。
面向扁平化设计的抽象外壳
IP与SoC设计
抽象外壳流甚至有助于不使用动态重配置的设计。大型 FPGA 设计可能会在布局布线流程中遇到编译时间长的问题,这是因为在这个流程中需要考虑海量信息。对于这些设计,特别是在较大型的 多 SLR Virtex UltraScale+ 器件中,DFX 可用于建立情景内层级设计 (HD) 流解决方案。通过将设计分割成较小的、更容易管理的片段,DFX 能够降低设计迭代的粒度。用户设置层级,获得小厚度的顶层封装程序和多个 RP。如果设计的某个部分需要少许迭代,只有 RM 必须重新实现。抽象外壳流通过删减设计其余部分,重点关注被修改的模块,大幅缩短编译时间,进一步强化这个方法。
这种情景内 HD 方法需要细分的、已完成布局规划的设计。资源使用受限或性能受限的设计并不十分适合这种方法,因为应用 DFX 会妨碍跨边界逻辑优化,限制目标 Pblock 内的布局。然而,如果您的设计可以划分为独立的构建块,各自在器件上占用自己的区域,那么将 DFX 与抽象外壳工作流程相结合,就能在稍加改动设计的情况下大幅提高生产力。
在下图里,一个四 SLR VU13P 被划分成四个可重配置分区,一个 SLR 一个分区。每个 RP 都可以提取为抽象外壳,方便每个 RP 以独立的方式实现。这些抽象外壳能与不同的团队成员共享,或是直接并行运行。每个区域完成后,RM 级的检查点被链接到布线完毕、锁定完成的顶层检查点,接着再生成比特流。
图 7:利用分段动态区域提升生产力
结论
IP与SoC设计
DFX 的抽象外壳是一种强大的工具,能大幅缩短设计处理时间,并增强设计安全性。请检查您的设计结构和设计目标,查看抽象外壳是否能为您的环境带来效益。
参考资料
《Vivado 设计套件用户指南:动态功能交换》(UG909)
《Vivado 设计套件教程:动态功能交换》(UG947)
本文来源:Xilinx白皮书
本文内容仅代表作者观点,不代表平台观点。
如有任何异议,欢迎联系我们。
2021年的第一场雪!英特尔2020年Q4财报解读
博文速递:静态时序分析 - Static Timing Analysis
Tcl 与 Design Compiler :环境、设计规则和面积约束
FPGA行业深度研究报告(一)