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 端口最终将会挂起,因为它在等待一个永远也不会出现的响应。

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

    (1楼)解决方案 这种行为主要出现在 Virtex

    judyzhong 在 星期四, 11/08/2018 - 09:59 发表。

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

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

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

    如果需要跨堆栈事务,请使用以下方法:
    1. 将附带的补丁文件应用到设计中
    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 ]