当前位置: 首页 > article >正文

FPGA 时钟约束

时钟约束
物理 XDC 约束驱动时钟树的实现并控制使用高扇出时钟资源。由于 UltraScale 器件时钟比采用以前架构的时钟更灵
活,并且包括额外的体系结构约束,因此了解如何正确约束时钟以实现是非常重要的。
使用 LOC 约束 IO/MMCM/PLL/GT
要约束时钟,您可以按如下所示分配布局约束:
I/O 端口的时钟输入
GCIO 上的时钟分配 PACKAGE_PIN 约束或为 IOB 分配 LOC 会影响时钟网络。直接连接到输入端口的 MMCM/PLL
和时钟缓存必须布局在相同的时钟区域中。
MMCM PLL
直接连接到 MMCM PLL 输出的时钟缓存,连接到 MMCM PLL 输入的输入时钟端口自动布局在相同的时钟区
域中。如果输入时钟端口和 MMCM PLL 直接连接并限制在不同的时钟区域,则必须手动插入时钟缓存并在连接
MMCM PLL 的网络上设置 CLOCK_DEDICATED_ROUTE 约束。
GT*_CHANNEL IBUFDS_GTE3 单元上
由单元驱动的 BUFG_GT 布局在相同的时钟区域中。
注意! 赛灵思不推荐在时钟缓存单元上使用 LOC 约束。此方法将时钟强制到特定轨道 ID ,这可能导致无法合法布线的
布局。当您明确设计的整个时钟树并且设计中的布局一致时,只能使用 LOC 约束在 UltraScale 器件中布局高扇出时钟
缓存。即使在采取这些预防措施后,由于设计或约束变化,在实现期间可能会发生冲突。
在时钟缓存上使用 CLOCK_REGION 属性
您可以使用 CLOCK_REGION 约束为时钟区域分配时钟缓存,而不指定 site 位置。这在优化所有时钟树以及确定适当的
缓存 site 位置以成功布线所有时钟时,将赋予布局器更大的灵活性。
您还可以使用 CLOCK_REGION 约束来提供关于级联时钟缓存或由非时钟原语 (例如,构造逻辑)驱动的时钟缓存的布
局的指导。
在以下示例中, XDC 约束将 clkgen/clkout2_buf 时钟缓存分配给 CLOCK_REGION X2Y2
set_property CLOCK_REGION X2Y2 [get_cells clkgen/clkout2_buf]
注释: 在大多数情况下,时钟缓存由已经约束到时钟区域的输入时钟端口, MMCM PLL GT*_CHANNEL 直接驱动。
在这种情况下,则时钟缓存将自动布局在同一时钟区域中,并且您不需要使用 CLOCK_REGION 约束。
使用 Pblock 限制时钟缓存布局
当不需要将时钟缓存布局在特时序钟区域中时,可以使用 Pblock 指时序钟区域的范围。例如,当需要 BUFGCTRL 来复
用位于不同区域的两个时钟时,使用 Pblock 。您可以将 BUFGTRL 分配给包含两个时钟驱动程序之间的时钟区域的
Pblock ,并让布局器识别有效的布局。
注释: 赛灵思不推荐在单个时钟区域使用 Pblock
在时钟网络上使用 USER_CLOCK_ROOT 属性
您可以使用 USER_CLOCK_ROOT 属性,来强制限时序钟缓存驱动的时钟根位置。指定 USER_CLOCK_ROOT 属性会影响
设计布局,因为它通过修改时钟布线来影响插入延迟和偏移。 USER_CLOCK_ROOT 值对应时钟区域,并且必须在由高
扇出时钟缓存直接驱动的网段上设置属性。下面给出一个实例:
set_property USER_CLOCK_ROOT X2Y3 [get_nets clkgen/wbClk_o]
如下例所示,布局后,您可以使用 LOCK_ROOT 性查询实际的时钟根。 CLOCK_ROOT 将报告分配根,无论是由用户分
配还是由 Vivado 工具自动分配。
get_property CLOCK_ROOT [get_nets clkgen/wbClk_o]
=> X2Y3
另一种查看已实现设计的时钟根分配的方法是使用 report_clock_utilization Tcl 命令。例如:
report_clock_utilization [-clock_roots_only]
下图显示了此报告。
在多个时钟网络上使用 CLOCK_DELAY_GROUP 约束
您可以使用 CLOCK_DELAY_GROUP 约束来匹配由不同时钟缓存驱动的多个相关时钟网络的插入延迟。此约束通常用于
最小化源自同一 MMCM ,或 PLL 的时钟之间的同步 CDC 时序路径上的偏移。您必须在与时钟缓存直接联通网段上设
CLOCK_DELAY_GROUP 约束。下面的示例显示了 clk1_net clk2_net 时钟网络,这些网络由时钟缓存直接驱
动:
set_property CLOCK_DELAY_GROUP grp12 [get_nets {clk1_net clk2_net}]

http://www.kler.cn/a/511104.html

相关文章:

  • Linux-性能分析top
  • Android SystemUI——CarSystemBar添加到窗口(十)
  • Redis 中 TTL 的基本知识与禁用缓存键的实现策略(Java)
  • 2024年度个人成长与技术洞察总结
  • 从玩具到工业控制--51单片机的跨界传奇【3】
  • Maven在Win10上的安装教程
  • MySQL union和union all
  • 算法随笔_12:最短无序子数组
  • 基于Spring Boot的车间调度管理系统
  • 前端TS 时间格式化函数
  • VSCode+EIDE 环境搭建
  • 仿 RabbitMQ 的消息队列1(实战项目)
  • HTML5 教程(下)
  • 第12章:Python TDD完善货币加法运算(一)
  • Linux操作系统的灵魂,深度解析MMU内存管理
  • 为AI聊天工具添加一个知识系统 之49 “‘之47’和蒙板有关的术语”的腾讯云 AI 代码助手答问(部分)
  • 【版图设计】2025年 最新 Cadence Virtuoso IC617 虚拟机环境配置全过程 集成电路版图设计环境配置
  • Math Reference Notes: 矩阵行变换与列变换
  • 【vLLM 学习】使用 ROCm 安装
  • STM32单片机芯片与内部76 Cortex-M3架构 内核概览
  • 如何爬取淘宝关键字接口
  • 傅里叶变换在语音识别中的关键作用
  • 实战经验:使用 Python 的 PyPDF 进行 PDF 操作
  • Python爬虫---中国大学MOOC爬取数据(文中有数据集)
  • 同城生鲜配送系统架构与功能分析
  • springboot学生成绩管理系统