【xilinx】解决vivado中 I/O 时钟布局器错误

典型时钟

AMD 设备上的典型时钟电路结构如下:

输入端口 (IBUF ) → BUFG → FDCE/C

如果使用 MMCM 或 PLL 修改时钟,则其结构如下:

输入端口 (IBUF) → BUFG → MMCM/PLL → BUFG → FDCE/C

对于 GT 时钟,其结构如下:

GT_QUAD → BUFG_GT → FDCE/C

I/O 时钟布局阶段可能会发生错误,表明该工具无法放置时钟结构直到最后一个 BUFG。

分析

发生这种情况的原因可能有多种:

  1. 时钟结构单元上的 LOC 或 CLOCK_REGION 的选择
  2. 时钟结构复杂,无法不经过人工干预就放置
  3. 工具中的 I/O Clock Placer 算法存在错误

当该工具遇到这种情况时,它会打印详细的错误消息,其中包括以下信息:

  • 可以解决此错误的 CLOCK_DEDICATED_ROUTE 约束
  • 来自时钟结构的细胞
  • 由工具决定的时钟缓冲器和 MMCM 的临时位置
  • 所有 I/O 时钟架构规则,以及临时放置所违反的规则

虽然 CLOCK_DEDICATED_ROUTE 可以解决错误,但用户在将其纳入工作流程之前了解以下内容非常重要。

  • 使用 CDR 对设计 QoR 的影响
  • 错误是否是由于用户约束、LOC、CLOCK_REGION 或 P-BLOCK 造成的
  • 时钟结构是否复杂,可以通过手动约束来解决
  • 这是否是 I/O Clock Placer 算法的一个真正问题

本博客讨论了如何理解 I/O 时钟布局器错误、评估 CDR 约束的必要性以及如何确定工具是否可以放置具有附加约束的结构。

以下用户指南中提到了 CLOCK_DEDICATED_ROUTE 的各种值:

对于复杂的时钟结构,I/O Clock Placer 错误的解决方案可以是多个单元和网络的 CDR、LOC 和 CLOCK_REGION 约束的混合。

在深入调试之前,您应该熟悉以下先决条件:

  1. 您使用的设备的 I/O 架构:
    1. 对于 UltraScale,请参阅UltraScale 架构 SelectIO 资源用户指南 (UG571)
    2. 对于 Versal,请参阅Versal Adaptive SoC SelectIO 资源架构手册 (AM010)
  2. 您使用的设备的时钟架构:
    1. 对于 UltraScale,请参阅UltraScale 架构时钟资源用户指南 (UG572)
    2. 对于 Versal,请参阅Versal 自适应 SoC 时钟资源架构手册 (AM003)
  3. 使用**"查找"**窗口列出设备中的各个可用站点(BUFG 和 MMCM/PLL)。
  4. 使用网络表中的**"查找"** 窗口列出错误中提到的单元和网络。
  5. 使用 Vivado Design Suite 进行基本的 Tcl 脚本编写。

调试

I/O Clock Placer 算法是一种基于规则的算法,它将网表中的时钟结构映射到特定规则。这些规则用于为设计中的 MMCM/PLL 和 BUFG 分配临时布局。

然而,需要注意的是,这些临时放置可能对某些单元格是正确的,但对其他单元格则不正确。下面提供的规则可用于理解和评估算法所做的放置。

Versal - Versal 自适应 SoC 硬件、IP 和平台开发方法指南 (UG1387)
UltraScale - AMD Technical Information Portal

由于这些规则源自实际硅片,因此 I/O Clock Placer Error 不太可能是工具中的真正错误。不过,本博客介绍了这种可能性,以防万一。

每当您遇到这些问题时,建议对 .runs /impl_1文件夹中的后期选择检查点进行操作。

如果您是非项目模式用户,则需要明确生成后期选择检查点。

  1. 打开检查点 post_opt.dcp
  2. 使用place_ports命令代替place_design
    当place_design失败时,它不会在内存设计中留下部分布局以供检查。可以改为运行place_ports命令,以便重现相同的错误,同时提供结果部分布局以供检查。
  3. 显示所提及的单元和网络的示意图。
    您可以使用 Vivado 中的 Ctrl+F 选项返回错误中提到的单元,或者使用 Tcl 脚本将单元和网络放入错误消息中的 Tcl 变量中。
  4. 显示时钟区域中的 BUFG 和 MMCM 站点的对象,以检查特定时钟区域的利用率。
  5. 将时钟结构分成几段。
    例如,如果时钟结构如下-
    (IBUF) → BUFG → MMCM/PLL → BUFG → FDCE/C
    第 1 段 = IBUF → BUFG
    第 2 段 = BUFG → MMCM/PLL
    第 3 段 = MMCM/PLL → BUFG
  6. 使用文档中提到的规则交叉检查 Vivado 的临时布局。
    例如,如果这是 Versal 设备,段 1 很明显,并且位于同一时钟区域,即第一行。
    段 2 位于规则中提到的最后一行。为了解决这个问题,如果您在 MMCM 上放置 LOC,则段 3 位于规则的第 2 行。
    检查提到的单元是否有任何用户约束,以及它们是否影响任何规则。
    如果进行迭代分析: 您需要验证布局是否符合规则。如果不符合,请检查其他单元是否影响此布局。
    **注意:**规则在上面的链接中提到。
  7. 确定强制 Vivado 遵循规则的约束。
  8. 使用新的约束在后期选择中重新运行。

重复上述步骤,以识别错误中报告的任何新单元。通过反复执行这些步骤,我们将获得一组可用于继续进行设计实施的约束。

**注意:**在某些情况下,CDR = false 是不可避免的,例如当使用非 CCIO 引脚作为输入时钟时。在这种情况下,必须对 IBUF 的输出进行 CDR = False 约束。

相关推荐
Anin蓝天(北京太速科技-陈)6 小时前
252-8路SATAII 6U VPX高速存储模块
fpga开发
如何学会学习?8 小时前
2. FPGA基础了解--全局网络
fpga开发
Anin蓝天(北京太速科技-陈)9 小时前
271-基于XC7V690T的12路光纤PCIe接口卡
嵌入式硬件·fpga开发
碎碎思12 小时前
FPGA新闻速览-WiMi开发基于FPGA的数字量子计算机验证技术
fpga开发·量子计算
hi941 天前
Vivado - 远程调试 + 远程综合实现 + vmWare网络配置 + NFS 文件共享 + 使用 VIO 核
嵌入式硬件·fpga开发·vivado 远程开发·vmware网络配置
乘风~&1 天前
基于发FPGA 练手智能小车顶层文件
fpga开发
_Hello_Panda_2 天前
高云GW5AT系列FPGA在接口扩展和桥接领域的应用方向探讨分享
fpga开发·高云·gw5at
aningxiaoxixi2 天前
音频接口:PDM TDM128 TDM256
fpga开发·pcm
希言自然也2 天前
赛灵思ZYNQ系列的启动过程分析
嵌入式硬件·fpga开发
十三啊嘞2 天前
Vivado安装System Generator不支持新版Matlab解决方法
fpga·vivado