在赛灵思器件中为部分重配置编译设计时,会创建不同类型的比特流。
本文档为 7 系列和 UltraScale 器件的每种比特流类型定义了术语,并进行了详细说明。
《部分重配置用户指南》(UG909) 中提供了以下所示全部主题的更多信息。
此处记述的比特流类型包括:
完整配置比特流
部分比特流
空白比特流
清除比特流
完整配置比特流。所有 PR 设计都是从使用完整配置比特流对完整器件进行标准配置开始的。
其中使用的格式和结构与扁平设计解决方案并无不同。
使用此比特流对 FPGA 进行初始编程的方式也无不同。
但请注意,设计本身已完成处理,并已准备就绪,能够在完成完整编程后对器件进行部分重配置。
包括加密和压缩在内的所有标准特性均受支持。
支持设为黑盒的可重配置分区 (RP),因此在初始配置过程中可交付不含任何功能的可重配置模块 (RM),稍后将其替换为所需的可重配置模块。
在此情况下,比特流压缩非常有效,有助于显著减小比特流大小和缩短初始配置时间。
部分比特流。部分比特流在器件正常运行期间交付,用于替换器件预定义区域中的功能。
这些比特流与完整比特流具有相同的结构,但仅限于特定的地址集,用于对器件的某一特定部分进行编程。
有专用 PR 功能特性(例如,用于确保比特流完整性的逐帧 CRC 校验)和自动初始化(使区域以已知状态启动)可供使用,也有包括加密和压缩在内的完整比特流功能特性。
部分比特流的大小与它执行重配置的区域大小成比例。
例如,如果可重配置分区占器件资源的 20%,那么部分比特流约占完整设计比特流大小的 20%。
部分比特流为完全自包含形式,因此仅交付至相应的配置端口。
所有寻址、报头和报尾详细信息都包含在这些比特流中,就像完整配置比特流一样。
用户可通过任何外部非主配置模式(例如,JTAG、Slave Serial 或 Slave SelectMap)将部分比特流交付至 FPGA。
内部配置访问包括 ICAP(所有器件)、PCAP (Zynq 7000 SoC) 和 MCAP(通过 PCIe 的 UltraScale)。
在 PR 配置上运行 write_bitstream 时会自动创建部分比特流。
每个部分比特流文件名都会引用用户提供的顶层设计名称,加上可重配置分区的 Pblock 名称,再加上 _partial。
例如,对于完整设计 BIT 文件 top_first.bit,部分 BIT 文件可能名为 top_first_pblock_red_partial.bit。
请注意,Pblock 实例始终相同,而与其中包含的 RM 无关,因此建议使用描述性基本配置名称,或者重命名部分 BIT 文件以澄清它所表示的模块。
空白比特流。 空白比特流是一种特殊类型的部分比特流,它呈现为黑盒。
它移除了现有可重配置模块的功能,并将其替换为新功能,此新功能只包含所有相应的模块 I/O 上的捆绑 LUT。
要创建黑盒可重配置模块,只需移除已完全布局布线的设计配置的逻辑和物理呈现,并将其替换为捆绑 LUT。
请使用处于活动状态的存储器中已布线的配置(含已锁定的静态设计)开始操作,运行下列步骤:
update_design -cell <foo> -black_box; update_design -cell <foo> -buffer_ports; place_design; route_design
此设计必须完成布局布线,才能实现已插入设计的 LUT。
黑盒 RM 的输出默认绑定到接地,但可通过在目标端口上设置 HD.PARTPIN_TIEOFF,将输出设为 Vcc。
您可使用压缩来显著减小空白比特流的大小。
请注意,这些比特流不仅仍包含捆绑 LUT,还包含穿过 FPGA 内此区域的所有静态布线。
空白比特流的生成和命名方式与标准部分比特流相同,因为黑盒变体仅会保存为另一个配置检查点。
清除比特流。不同于上述几种比特流类型,此类型专用于 UltraScale 器件。
对于这种架构有一项新要求,就是必须先清除现有模块,然后才能加载新模块。
清除比特流通过为将要重新配置的区域建立全局信号掩码,帮助器件准备就绪,以便为该可重配置分区交付任何后续的部分比特流。
虽然从技术角度而言不会移除现有模块(保留当前逻辑模块),但将其视作为已移除是最简单的方法。
清除比特流并非部分比特流。
构成清除比特流的帧仅占目标区域帧的不足 10%,因此,其大小约为对应部分比特流的 10%。
清除比特流并不会更改功能,但必须在部分比特流之间交付。
每个清除比特流都是为一个特定的可重配置模块而构建的,必须在使用该模块后才能应用,并且必须先将其发送到配置引擎,紧接着交付下一个部分比特流。
例如,要从模块 A 转换到模块 B,必须先交付针对 A 的清除比特流,紧接着交付针对 B 的部分比特流。
要从模块 B 转换回模块 A,必须先交付针对 B 的清除比特流,紧接着交付针对 A 的部分比特流。
即使涉及的任意部分比特流是空白比特流也同样如此。
清除比特流是自动生成的,其名称与部分比特流相同,但末尾带有 _clear。
对于上述示例,如果 top_first 是 UltraScale 设计,那么清除比特流 BIT 文件名应当为 top_first_pblock_red_partial_clear.bit。
文章来源:AMD开发者社区