AR# 71312

Virtex UltraScale + HBM FPGA XCVU31P,XCVU33P,XCVU35P,XCVU37P ES983x - 交叉堆栈事务可以挂起堆栈间通道

描述

发现问题的版本: HBM v1.0

解决问题的版本: 查看 (Xilinx Answer 69267)

在使用工程样品 Virtex UltraScale+ HBM 器件时,有可能跨堆栈事务会在堆栈间通道中挂起。

只有在以下所有条件都为真时,才可能出现潜在的挂起:
  • 使用 Virtex UltraScale+ HBM 工程样品器件
  • 两个 HBM 堆栈都启用了
  • 启用了 AXI 交换机全局寻址
  • 出现了跨堆栈内存访问

当从 AXI 端口发送读取或写入命令时,而该端口通过 AXI 交换机从一个 HBM 堆栈到另一个 HBM 堆栈,该命令将无法传播。  

 没有错误标记或正常响应返回至 AXI 端口。

AXI 端口最终将会挂起,因为它在等待一个永远也不会出现的响应。

一个可工作一段时间的器件并不意味着该器件不受该问题的影响,因为在有跨堆栈事务的情况下,可能就会出现这种情况。

解决方案

这种行为主要出现在 Virtex UltraScale+ HBM 器件的芯片量产期间。

对于工程示例器件,您可以通过不发出任何跨堆栈事务来避免该锁定。

两个堆栈都可以启用,只要不出现跨堆栈事务,就不会遇到挂起问题。

如果需要跨堆栈事务,请使用以下方法:

  1. 将附带的补丁文件应用到设计中
    • 为 2018.2 和 2019.1 Vivado 版本提供了补丁文件
  2. 由于补丁文件的变化,因此 HBM 堆栈的 AXI 开关时钟不能由 BUFG 驱动
    • 如果 AXI 开关时钟(在 HBI IP 配置 GUI 的 HBM 配置选择页面中指定)由 BUFG 驱动,就请从该时钟路径中删除 BUFG
  3. 由于路径文件的改变,因此有一个从需要进行约束的八分之一 APB 时钟生成的新时钟
    • 这些时钟的默认名称是 o_APB_PCLK_by8_st0 和 o_APB_PCLK_by8_st1
    • 这些时钟需要以下约束。请确保修改名称,以匹配您的设计:
set_clock_groups -logically_exclusive -group [get_clocks AXI_ACLK*_st0 ] -group [get_clocks o_APB_PCLK_by8_st0 ]
set_clock_groups -logically_exclusive -group [get_clocks AXI_ACLK*_st1 ] -group [get_clocks o_APB_PCLK_by8_st1 ]

修订历史:

11/06/2018初始版本
01/06/2019更新了 2018.3 补丁文件
08/23/2019更新了 2019.1 补丁文件

附件

链接问答记录

主要问答记录

Answer Number 问答标题 问题版本 已解决问题的版本
69267 Virtex UltraScale+ HBM 控制器 - 发布说明与已知问题 N/A N/A
AR# 71312
日期 08/23/2019
状态 Active
Type 综合文章
器件
Tools
IP