【xilinx】解决 I/O 时钟布局器错误:CLOCK_DEDICATED_ROUTE 异常示例

news2024/11/16 11:53:14

问题描述

设备: xcvm1102-sfva784-2HP-iS
问题:尽管使用 GCIO 引脚作为时钟,但布局器返回 I/O 时钟错误

错误:

<span style="background-color:#f3f3f3"><span style="color:#333333"><code>ERROR: [Place 30-675] Sub-optimal placement for a global clock-capable IO pin and BUFG pair.If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
    < set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_in_IBUF] >
 
    Clock Rule: rule_gclkio_bufg
    Status: FAILED
    Rule Description: An IOB driving a BUFG must use a GCIO in the same clock region as the BUFG
 
    clk_in_IBUF_inst (IBUF.O) is locked to IOB_X13Y8
    bufg_in (BUFGCE.I) is provisionally placed by clockplacer on BUFGCE_X1Y23
 
    The above error could possibly be related to other connected instances. Following is a list of
    all the related clock rules and their respective instances.
 
    Clock Rule: rule_mmcm_bufg
    Status: PASS
    Rule Description: A MMCM driving a BUFG must be placed in the same clock region of the device as the
    BUFG
    MMCME5_inst (MMCME5.CLKOUT0) is provisionally placed by clockplacer on MMCM_X0Y0
    bufg_out (BUFGCE.I) is provisionally placed by clockplacer on BUFGCE_X0Y0
 
    Clock Rule: rule_bufgce_bufg_conflict
    Status: PASS
    Rule Description: Only one of the 2 available sites (BUFGCE or BUFGCE_DIV/BUFGCTRL) in a pair can be
    used at the same time
    bufg_in (BUFGCE.O) is provisionally placed by clockplacer on BUFGCE_X1Y23
 
    Clock Rule: rule_io_bufg_mmcm_1load
    Status: FAIL
    Rule Description: A BUFGCE with I/O driver driving a single MMCM must both be in the same clock region
    if CLOCK_DEDICATED_ROUTE=BACKBONE is NOT set
    bufg_in (BUFGCE.O) is provisionally placed by clockplacer on BUFGCE_X1Y23
    MMCME5_inst (MMCME5.CLKIN1) is provisionally placed by clockplacer on MMCM_X0Y0
    ERROR: The above is also an illegal clock rule
    Workaround: < set_property CLOCK_DEDICATED_ROUTE ANY_CMT_REGION [get_nets clk_in_temp] >
 
    Clock Rule: rule_bufgce_bufg_conflict
    Status: PASS
    Rule Description: Only one of the 2 available sites (BUFGCE or BUFGCE_DIV/BUFGCTRL) in a pair can be
    used at the same time
    bufg_out (BUFGCE.O) is provisionally placed by clockplacer on BUFGCE_X0Y0
 
Resolution: A dedicated routing path between the two can be used if: (a) The global clock-capable IO (GCIO) is placed on a GCIO capable site (b) The BUFG is placed in the same bank of the device as the GCIO pin. Both the above conditions must be met at the same time, else it may lead to longer and less predictable clock insertion delays.
ERROR: [Place 30-1971] Sub-optimal placement for a global clock-capable IO pin-BUFGCE-MMCM pair.
 Resolution: A dedicated routing path between the pairs can be used if: (a) The global clock-capable IO (GCIO) is placed on a GCIO capable site (b) The BUFGCE and MMCM is placed in the same clock region as the GCIO pin. If the IOB is driving BUFGCE and driving multiple MMCMs, all MMCMs must be placed in the same clock region. Both the above conditions must be met at the same time, else it may lead to longer and less predictable clock insertion delays. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
    < set_property CLOCK_DEDICATED_ROUTE ANY_CMT_REGION [get_nets clk_in_temp] >
 
    Clock Rule: rule_io_bufg_mmcm_1load
    Status: FAILED
    Rule Description: A BUFGCE with I/O driver driving a single MMCM must both be in the same clock region if CLOCK_DEDICATED_ROUTE=BACKBONE is NOT set
 
    bufg_in (BUFGCE.O) is provisionally placed by clockplacer on BUFGCE_HDIO_X0Y0
    MMCME5_inst (MMCME5.CLKIN1) is provisionally placed by clockplacer on MMCM_X0Y0
 
    The above error could possibly be related to other connected instances. Following is a list of
    all the related clock rules and their respective instances.
 
    Clock Rule: rule_mmcm_bufg
    Status: PASS
    Rule Description: A MMCM driving a BUFG must be placed in the same clock region of the device as the
    BUFG
    MMCME5_inst (MMCME5.CLKOUT0) is provisionally placed by clockplacer on MMCM_X0Y0
    bufg_out (BUFGCE.I) is provisionally placed by clockplacer on BUFGCE_X0Y23
 
 
    Clock Rule: rule_bufgce_bufg_conflict
    Status: PASS
    Rule Description: Only one of the 2 available sites (BUFGCE or BUFGCE_DIV/BUFGCTRL) in a pair can be
    used at the same time
    bufg_in (BUFGCE.O) is provisionally placed by clockplacer on BUFGCE_HDIO_X0Y0
 
 
    Clock Rule: rule_bufgce_bufg_conflict
    Status: PASS
    Rule Description: Only one of the 2 available sites (BUFGCE or BUFGCE_DIV/BUFGCTRL) in a pair can be
    used at the same time
    bufg_out (BUFGCE.O) is provisionally placed by clockplacer on BUFGCE_X0Y23
 
 
    Clock Rule: rule_gclkio_bufg
    Status: PASS
    Rule Description: An IOB driving a BUFG must use a GCIO in the same clock region as the BUFG
    clk_in_IBUF_inst (IBUF.O) is locked to IOB_X13Y8
    bufg_in (BUFGCE.I) is provisionally placed by clockplacer on BUFGCE_HDIO_X0Y0</code></span></span>

在这个简单的设计示例中,我们有两个错误,提示两个 CLOCK_DEDICATED_ROUTE 解析指向两个网络。
使用错误中提到的网络名称并生成原理图,我们会看到以下时钟结构:。

  1. 输入缓冲器 → BUFG 
  2. BUFG → MMCM

输入时钟端口使用来自 HDIO 组的 Global Clock Capable Package 引脚 D11。尽管如此,布局器仍会出错,并出现上述 I/O Clock Placer 错误。让我们使用Vivado 实施 - 解决 I/O Clock Placer 错误
中概述的方法调试此问题。

这个时钟结构有两个部分

  1. 段 1 = IBUF → BUFG
  2. 段 2 = BUFG → MMCM

通过打开 post opt DCP 并运行place_ports,我们将得到这个错误。

标记输入端口、BUFG 和 MMCM 将突出显示这些单元的临时位置。

 

 根据规则 1,布局器应将输入端口 (粉色)、BUFG (黄色) 和 MMCM (绿色) 放置在同一个时钟区域 X0Y2 中。
让我们检查设备中可用的资源。
由于涉及的组件是 BUFG 和 MMCM,我们在设备中得到了 MMCM (橙色) 和 BUFG (蓝色)。

 

命令:

<span style="background-color:#f3f3f3"><span style="color:#333333"><code>show_objects -name find_1 [get_sites -filter { SITE_TYPE == "MMCM" } ]
show_objects -name BUFGs [get_sites BUFG*]</code></span></span>

使用此信息,很明显,在同一个 CLOCK_REGION X0Y2 中有可用的 BUFG,但没有 MMCM。因此,在没有任何 CLOCK_DEDICATED_ROUTE 约束的情况下,布局器根据其可行性放置了段 1 和 2。
我们可以使用 CLOCK_REGION 将 BUFG 约束到 X0Y2,但是布局器仍然会在段 2 上出错,即 BUFG→MMCM

<span style="background-color:#f3f3f3"><span style="color:#333333"><code>set_property CLOCK_REGION X0Y2 [get_cells bufg_in]</code></span></span>

新错误:

<span style="background-color:#f3f3f3"><span style="color:#333333"><code>ERROR: [Place 30-1971] Sub-optimal placement for a global clock-capable IO pin-BUFGCE-MMCM pair.
 Resolution: A dedicated routing path between the pairs can be used if: (a) The global clock-capable IO (GCIO) is placed on a GCIO capable site (b) The BUFGCE and MMCM is placed in the same clock region as the GCIO pin. If the IOB is driving BUFGCE and driving multiple MMCMs, all MMCMs must be placed in the same clock region. Both the above conditions must be met at the same time, else it may lead to longer and less predictable clock insertion delays. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule.
    < set_property CLOCK_DEDICATED_ROUTE ANY_CMT_REGION [get_nets clk_in_temp] >
 
    Clock Rule: rule_io_bufg_mmcm_1load
    Status: FAILED
    Rule Description: A BUFGCE with I/O driver driving a single MMCM must both be in the same clock region if CLOCK_DEDICATED_ROUTE=BACKBONE is NOT set
 
    bufg_in (BUFGCE.O) is provisionally placed by clockplacer on BUFGCE_HDIO_X0Y0
    MMCME5_inst (MMCME5.CLKIN1) is provisionally placed by clockplacer on MMCM_X0Y0
 
    The above error could possibly be related to other connected instances. Following is a list of
    all the related clock rules and their respective instances.
 
    Clock Rule: rule_mmcm_bufg
    Status: PASS
    Rule Description: A MMCM driving a BUFG must be placed in the same clock region of the device as the
    BUFG
    MMCME5_inst (MMCME5.CLKOUT0) is provisionally placed by clockplacer on MMCM_X0Y0
    bufg_out (BUFGCE.I) is provisionally placed by clockplacer on BUFGCE_X0Y23
 
 
    Clock Rule: rule_bufg_clockregion_prop
    Status: PASS
    Rule Description: A global clock source buffer with CLOCK_REGION property should get placed in the
    clock region specified by the property
    bufg_in (BUFGCE.O) is provisionally placed by clockplacer on BUFGCE_HDIO_X0Y0
 
 
    Clock Rule: rule_bufgce_bufg_conflict
    Status: PASS
    Rule Description: Only one of the 2 available sites (BUFGCE or BUFGCE_DIV/BUFGCTRL) in a pair can be
    used at the same time
    bufg_in (BUFGCE.O) is provisionally placed by clockplacer on BUFGCE_HDIO_X0Y0
 
 
    Clock Rule: rule_bufgce_bufg_conflict
    Status: PASS
    Rule Description: Only one of the 2 available sites (BUFGCE or BUFGCE_DIV/BUFGCTRL) in a pair can be
    used at the same time
    bufg_out (BUFGCE.O) is provisionally placed by clockplacer on BUFGCE_X0Y23
 
 
    Clock Rule: rule_gclkio_bufg
    Status: PASS
    Rule Description: An IOB driving a BUFG must use a GCIO in the same clock region as the BUFG
    clk_in_IBUF_inst (IBUF.O) is locked to IOB_X13Y8
    bufg_in (BUFGCE.I) is provisionally placed by clockplacer on BUFGCE_HDIO_X0Y0</code></span></span>

因此,除了将 CLOCK_DEDICATED_ROUTE 设置为 ANY_CMT_REGION 之外,没有其他方法可以放置此时钟结构。

这是因为 CLOCK_REGION X0Y2 中没有适用于段 2 的 MMCM。

<span style="background-color:#f3f3f3"><span style="color:#333333"><code>set_property CLOCK_DEDICATED_ROUTE ANY_CMT_REGION [get_nets clk_in_temp]</code></span></span>

在下一次运行中,我们在设计中对段 1 有 CLOCK_REGION 约束,对段 2 有 CLOCK_DEDICATED_ROUTE ANY_CMT_REGION 约束,布局器会按预期放置结构。

 

因此,结论是,在某些情况下使用 CLOCK_DEDICATED_ROUTE 是不可避免的,但始终建议用户了解使用该过程得出的约束时的影响。 


这里还有另一个问题需要考虑;如果时钟来自使用 MMCM 的角落时钟区域 (绿色) 的时钟功能输入,会怎么样?
在这种情况下,布局器将对 MMCM 站点 (绿色) 产生冲突,不知道是将现有 MMCM 放置在那里还是放置新的 MMCM。 

始终建议在现有 MMCM 上使用 LOC 约束来指导布局器并考虑设计中的其他时钟。

附上本文所用到的简单例子,以供分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2076387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《机器学习》 贝叶斯分类器 原理、参数讲解及代码演示

目录 一、贝叶斯算法 1、简介 2、贝叶斯算法具有以下特点&#xff1a; 二、贝叶斯原理 1、正向概率&#xff08;先验概率&#xff09; 例如&#xff1a; 2、逆向概率&#xff08;后验概率&#xff09; 3、公式 1&#xff09;实例1 2&#xff09;实例2 • 目标&#x…

基于初始运行数据的电池循环寿命预测

这个例子展示了如何使用线性回归(一种监督机器学习算法)预测快速充电锂离子电池的剩余循环寿命。使用基于物理的建模方法预测锂离子电池的循环寿命是非常复杂的&#xff0c;因为不同的操作条件和显著的设备可变性&#xff0c;即使是来自同一制造商的电池。对于这种情况&#xf…

FPGA上板项目(四)——FIFO测试

目录 实验内容实验原理FIFO IP 核时序绘制HDL 代码仿真综合实现上板测试 实验内容 理解 FIFO 原理调用 FIFO IP 核完成数据读写 实验原理 FIFO&#xff1a;First In First Out&#xff0c;先入先出式数据缓冲器&#xff0c;用来实现数据先入先出的读写方式。可分类为同步 FI…

论文翻译 | 通过逻辑增强大型语言模型中的零样本思维链推理

摘要 大型语言模型的最新进展已经展示了它们在各个领域的卓越泛化性。然而&#xff0c;他们的推理能力仍有很大的提高空间&#xff0c;特别是在面对需要多步骤推理的场景时。虽然大型语言模型拥有广泛的知识&#xff0c;但它们的推理往往不能有效地利用这些知识来建立连贯的思维…

机器学习/数据分析--通俗语言带你入门决策树(结合分类和回归案例)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 机器学习是深度学习和数据分析的基础&#xff0c;接下来将更新常见的机器学习算法注意&#xff1a;在打数学建模比赛中&#xff0c;机器学习用的也很多&a…

[LeetCode]根据决策树设计代码解决dfs

目录 46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 决策树&#xff1a;根据题意可以知道&#xff0c;全排列需要找到数组内元素不重复的所有排列方式&#xff0c…

Java面向接口编程——开发打印机

题目&#xff1a; 墨盒&#xff1a;彩色、黑白 纸张类型&#xff1a;A4、B5 墨盒和纸张都不是打印机厂商提供的 打印机厂商要兼容市场上的墨盒、纸张 墨盒接口&#xff1a; public interface InkBox {String colorInkBox(); // 墨盒颜色} 纸张接口&#xff1a; public i…

Centos 添加双网卡 (生产环境配置记录)

1、在虚拟机中添加网卡2 [rootntpserver network-scripts]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo …

前端(Vue)tagsView(子标签页视图切换) 原理及通用解决方案

文章目录 tagsView 方案总结tagsView 原理分析创建 tags 数据源生成 tagsViewtagsView 国际化处理contextMenu 展示处理contextMenu 事件处理处理 contextMenu 的关闭行为处理基于路由的动态过渡 tagsView 方案总结 整个 tagsView 整体来看就是三块大的内容&#xff1a; tags…

【SAM下游任务微调】TS-SAM: Fine-Tuning Segment-Anything Model for Downstream Tasks

TS-SAM: Fine-Tuning Segment-Anything Model for Downstream Tasks 论文链接&#xff1a;https://arxiv.org/pdf/2408.01835 代码链接&#xff1a;https://github.com/maoyangou147/TS-SAM 一、摘要 基于适配器的微调方法已经被研究用于改进SAM在下游任务上的性能。然而&am…

【2024】Datawhale X 李宏毅苹果书 AI夏令营 Task1

本文是关于李宏毅苹果书“第1章 机器学习基础”学习内容的记录。 1、术语解释 术语解释机器学习&#xff08;Machine Learning, ML&#xff09;机器学习是一种人工智能&#xff08;AI&#xff09;技术&#xff0c;它使计算机能够从数据中学习并做出决策或预测&#xff0c;而无…

【python计算机视觉编程——3.图像到图像的映射】

python计算机视觉编程——3.图像到图像的映射 3.图像到图像的映射3.1 单应性变换3.1.1 直接线性变换算法&#xff08;DLT&#xff09;3.1.2 仿射变换 3.2 图像扭曲3.2.1 图像中的图像3.2.2 分段仿射扭曲3.2.3 图像配准 3.3 创建全景图3.3.1 RANSAC3.3.2 稳健的单应性矩阵估计3.…

【二叉树】LC405-删除二叉搜索树的节点

文章目录 1 删除二叉树的节点思路其他代码参考 1 删除二叉树的节点 https://leetcode.cn/problems/delete-node-in-a-bst/description/ 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。…

探索全球设计灵感:六大海外设计平台

海外设计网站对于设计师而言&#xff0c;不仅是灵感的源泉&#xff0c;更是专业成长的加速器。这些平台聚集了全球创意人士&#xff0c;提供了一个分享和发现最新设计趋势的环境。设计师可以通过这些网站学习行业内的创新技术&#xff0c;参与设计挑战&#xff0c;提升个人设计…

End-to-End视觉里程计新突破:从运动模糊图像中精确估计相机姿态

更多优质内容&#xff0c;请关注公众号&#xff1a;智驾机器人技术前线 1.论文信息 论文标题&#xff1a;MBRVO: A Blur Robust Visual Odometry Based on Motion Blurred Artifact Prior 作者&#xff1a;Jialu Zhang, Jituo Li*, Jiaqi Li, Yue Sun, Xinqi Liu, Zhi Zheng,…

饮水机复杂交互功能联网调试

饮水机复杂交互功能联网调试 引言 饮水机我们从最开始的放水和加热, 逐渐拓展到保温功能, 童锁功能, 红外检测功能, 对于这些复杂的交互功能, 我们如果通过按键进行调试, 会极大的增加我们的开发时间和成本, 如果我们频繁的进行烧录, 则如果涉及到一些中间变量, 则无法进行调试…

帆软BI怎么制作不等宽柱状图

帆软BI怎么制作不等宽柱状图 文章目录 帆软BI怎么制作不等宽柱状图不等宽柱状图起源一、怎么做不等宽柱状图准备二、操作步骤1.展示效果2.操作步骤-3.操作步骤 -图形属性4.操作步骤 -组件样式5.操作步骤 -横轴和纵轴6.完成7.不等宽柱状图与传统等宽柱状图对比 总结 不等宽柱状图…

【深度学习】嘿马深度学习笔记第5篇:神经网络与tf.keras,学习目标【附代码文档】

本教程的知识点为&#xff1a;深度学习介绍 1.1 深度学习与机器学习的区别 TensorFlow介绍 2.4 张量 2.4.1 张量(Tensor) 2.4.1.1 张量的类型 TensorFlow介绍 1.2 神经网络基础 1.2.1 Logistic回归 1.2.1.1 Logistic回归 TensorFlow介绍 总结 每日作业 神经网络与tf.keras 1.3 …

介绍云计算在医疗领域的应用实例

云计算在医疗领域的应用日益广泛&#xff0c;为医疗行业带来了诸多便利和创新。以下是几个典型的应用实例&#xff1a; 电子病历管理系统&#xff1a; 基于云计算技术的电子病历管理系统&#xff0c;通过互联网实现对病历数据的存储、管理、维护和查询等功能。这类系统能够自动…

关于助记词,词库的讨论

我有个想法&#xff0c;既然私钥碰撞的难度大。 -seed-&#xff08;pathmasterkey&#xff09;-privatekey-publickey-address 通过反推的难度大&#xff0c;那我可以尝试使用助记词碰撞 就例如&#xff0c;我生成1000个eth地址 1000个地址的助记词全部拿到&#xff0c;然后…