0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

错误时钟偏移计算导致错误时序收敛的解决方案

454398 来源:XILINX技术社区 作者:XILINX技术社区 2020-12-24 11:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

描述
本设计咨询主要介绍一个错误的时钟偏移计算导致错误时序收敛的问题。

出现问题的情况:

这可能会影响使用生成时钟的设计,其具有以下特征:

  • 使用 Vivado 2018.2.x 及更早版本。
  • 用户生成的时钟没有使用‘-master_clock’定义
  • 在同一时钟网络的并行分支上的层级引脚上创建的主时钟或生成的时钟连接至上述用户生成的时钟源引脚

在上述情况下,时序引擎可能会为生成的时钟选择错误的主时钟,这可能会导致在路径上报告的不正确时钟偏移。

在 Vivado 2018.3 中,定时器使用正确的主时钟,这会导致相同路径上不同的时钟偏移和不同的签收时序。

注:如果用户生成的时钟用‘-master_clock’创建并指向正确的主时钟,该问题就不会出现。

该问题的示例:

在本示例中,datapath 通过 LUT 循环回到相同的寄存器。寄存器和 LUT 都放在同一个 SLICE 中。

示例时钟拓扑:

示例 Datapath 拓扑:

o4YBAF9uGVeAQmkPAADbwhMFxQM968.jpg

使用 Vivado 2018.2.x 及更早版本,在‘route_design’后使用正裕量报告上述路径:

o4YBAF9uGVyAeJT2AAJVcCSrFZ8047.jpg

请注意,由于缺少源时钟路径,2.560nS 的路径偏移过大。

由于选择了错误的主时钟进行时序分析,因此在工具选择的主时钟和用户生成的时钟之间没有路径,从而导致较大的时钟偏移。

这将迫使路由器在路径上通过一个较长的路由绕道来修复保持违规。

该路径通过在 Vivado 2018.3 中重新加载路由后检查点来显示违规:

pIYBAF9uGWGAKD5-AAJQdLN_uoM605.jpg

在 Vivado 2018.3 中,由于可以计算源时钟延迟,因此路径偏移要小得多。

时钟偏移会导致设置违规,这是由于在该路径上为了修复 Vivado 2018.2.x 及更早版本中出现的保持违规而绕道了很长的路由路径。

可能会出现问题的典型情况:

在本实例中,在层级引脚上创建的主时钟不正确。

pIYBAF9uGWKACaodAACXrN4xRMQ659.jpg

有问题的时钟约束来自输入时钟源选项被设置为“单端时钟支持引脚(默认)”或“差分时钟支持引脚”而 IP 时钟输入没有连接至顶层输入端口的时钟向导。

####################################################################################

# Constraints from file : 'pfm_top_clkwiz_kernel_0.xdc'

####################################################################################

current_instance -quiet

current_instance pfm_top_i/static_region/slr1/base_clocking/clkwiz_kernel/inst

create_clock -period 10.000 [get_ports -scoped_to_current_instance clk_in1]

set_input_jitter [get_clocks -of_objects [get_ports -scoped_to_current_instance clk_in1]] 0.100

在时钟向导输入时钟源设置为“全缓冲”或“无缓冲”时,层级引脚上没有创建主时钟。

确认:

上述问题由‘report_methodology’检测报告。

建议始终运行“report_methodology”并处理报告的违规:
TIMING-6#1 Warning

No common primary clock between related clocks

The clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q and microblaze_0_Clk are related (timed together) but they have no common primary clock. The design could fail in hardware. To find a timing path between these clocks, run the following command: report_timing -from [get_clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q] -to [get_clocks microblaze_0_Clk]

Related violations:

TIMING-30#1 Warning

Sub-optimal master source pin selection for generated clock

The generated clock pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q has a sub-optimal master source pin selection, timing can be pessimistic

Related violations:

TIMING-36#1 Warning

Invalid Generated Clock due to missing edge propagation

There is no rising/falling edge propagation between master clock pfm_top_i/static_region/slr1/base_clocking/clkwiz_pcie/inst/clk_in1 to generated clock pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q

Related violations:

Vivado 2018.2.x 和 2018.3 中也会报告 TIMING-27 违规。

TIMING-27 检查指向层级引脚上不正确的主时钟定义,这可能会导致不安全的时序。
TIMING-27#1 Warning

Invalid primary clock on hierarchical pin

A primary clock pfm_top_i/static_region/slr1/base_clocking/clkwiz_kernel/inst/clk_in1 is created on an inappropriate internal pin pfm_top_i/static_region/slr1/base_clocking/clkwiz_kernel/inst/clk_in1. It is not recommended to create a primary clock on a hierarchical pin when its driver pin has a fanout connected to multiple clock pins

Related violations:

此外,在 Vivado 2018.2 中,‘report_clock_interaction’也会显示不安全的时钟对,但在 2018.3 版中不会:

o4YBAF9uGWWAPLoMAAENSe7QOBA796.jpg

‘check_timing’报告了一个在 2018.2.x 中生成的时钟的问题:

pIYBAF9uGWeALFcSAACjqg4_mnA029.jpg

‘report_clock’报告 Vivado 为用户生成的时钟使用的实际主时钟。

虽然时钟 microblaze_0_Clk 传播至所生成时钟的源引脚,但‘report_clocks’会按照主时钟报告 pfm_top_i/static_region/slr1/base_clocking/clkwiz_pcie/inst/clk_in1:

o4YBAF9uGWmAAJ-OAADWl0NRdVg523.jpg

Vivado 2018.2.x:
report_clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q

Generated Clock : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q

Master Source : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/C

Master Clock : pfm_top_i/static_region/slr1/base_clocking/clkwiz_pcie/inst/clk_in1

Divide By : 8

Generated Sources : {pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q}

Vivado 2018.3:
report_clocks pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q

Generated Clock : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q

Master Source : pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/C

Master Clock : microblaze_0_Clk

Divide By : 8

Generated Sources : {pfm_top_i/static_region/slr1/mgmt_debug_bridge/inst/axi_jtag/inst/u_jtag_proc/tck_i_reg/Q}

解决方案
该问题将在 Vivado 2018.3 中修复。

出现该问题时,通常的解决方法是在创建用户生成的时钟时指定主时钟名:
create_generated_clock -source [get_pins -filter REF_PIN_NAME=~C -of_objects [get_cells -hierarchical -filter {NAME =~ "*/u_jtag_proc/tck_i_reg*"}]] -divide_by 8 [get_pins -filter REF_PIN_NAME=~Q -of_objects [get_cells -hierarchical -filter {NAME =~ "*/u_jtag_proc/tck_i_reg*"}]] -master_clock microblaze_0_Clk

但在本示例设计中,最初的问题是没有正确配置时钟向导。

对于该设计,需要重新运行时钟向导并纠正配置。

常见问题解答:

1) 该问题会影响 Vivado 的哪些版本?

该问题会影响 Vivado 2018.2 及更早版本。

2) 如果一个设计使用 2018.2 及更早 Vivado 版本符合时序要求,那用户对时序覆盖范围应该有多大的信心?(如果他们不想升级至最新 Vivado 版本,即 2018.3)

该漏洞主要针对错误的/部分时钟定义。因此,如果设计有适当的约束,并且符合时序要求,那就不应该有问题。

要进行完整性检查,您可以运行以下命令并查找与时序相关的警告/重要警告。

  • 运行‘report_clock’命令并验证 所有主时钟(‘create_clock’约束)是否都在 I/O 端口上。
  • 运行‘report_method’命令并验证在设计中是不是没有 Timing-6、Timing-27、Timing-30 和 Timing-36 警告。
  • 建议使用‘master_clock’选项编辑‘generated_clock’约束。

注:请参阅 (UG903) 和 (UG835),了解更多详情。

3) 在 Vivado 2018.3 中,用户是需要为生成的时钟约束使用‘master_clock’选项,还是这只是在早期 Vivado 版本中避免该问题的解决方法?

该问题已在 Vivado 2018.3 中修复。

根据 Xilinx 方法指南,始终建议为‘generated_clock’约束使用‘master_clock’选项。这个建议不仅仅只针对早期的 Vivado 版本。

4) 将设计从 Vivado 2018.2 及更早版本升级至 Vivado 2018.3 版有多安全?

该问题已在 Vivado 2018.3 中修复。

将设计从旧 Vivado 版本升级至最新的 Vivado 版本(即 2018.3)没有风险。

5) 在我的设计中有一个上述警告,但是电路板上一切正常,时序得分为 0,忽略该警告安全吗?

Xilinx 建议搞清楚警告的根本原因并正确修复。

重要通知:

Timing-6:如果该警告发生在介绍部分列出的条件下,就需要应用上述解决方法来解决该问题。

编辑:hfy
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5618

    浏览量

    130386
  • 路由器
    +关注

    关注

    22

    文章

    3931

    浏览量

    120114
  • Slice
    +关注

    关注

    0

    文章

    7

    浏览量

    8409
  • Vivado
    +关注

    关注

    19

    文章

    860

    浏览量

    71383
  • 时钟网络
    +关注

    关注

    0

    文章

    16

    浏览量

    6711
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CAN总线报错看不懂?5种错误帧+5步排查法一次讲清

    CAN总线通信异常?错误帧频繁出现?本文详解五种错误帧类型,并提供五步排查法,助你快速定位问题根源。错误帧的作用错误帧是CAN总线用于错误
    的头像 发表于 03-16 11:36 324次阅读
    CAN总线报错看不懂?5种<b class='flag-5'>错误</b>帧+5步排查法一次讲清

    FPGA时序收敛的痛点与解决之道——从一次高速接口调试谈起

    在FPGA开发中,时序收敛往往是项目后期最令人头疼的环节。许多工程师都有过这样的经历:RTL仿真通过,综合布线后却出现大量时序违例,为了满足时序不得不反复修改代码、调整约束,甚至重构设
    的头像 发表于 03-11 11:43 316次阅读

    烧录芯片总失败?五大常见错误与解决方法

    产线常见 Verify Error 校验错误,多非芯片本身问题,而是五大典型因素导致:烧录座接触不良、电源供电不稳、信号与时序异常、加密保护误触、静电与温度影响。按物理连接、电气环境、软件配置逐级排查,规范耗材更换与产线防护,可
    的头像 发表于 02-24 15:37 1279次阅读

    深入剖析RF430CL330H设备的错误情况及解决方案

    深入剖析RF430CL330H设备的错误情况及解决方案 在电子设备的设计和开发过程中,我们常常会遇到各种设备问题,这些问题可能会影响设备的正常运行和性能表现。今天,我们就来详细探讨一下德州仪器
    的头像 发表于 01-28 16:10 308次阅读

    瀚海微SD NAND/TF卡数据损坏与校验错误(含CRC错误、数据比对失败)问题解析

    数据损坏与校验错误是瀚海微SD NAND/TF卡在数据存储与传输过程中的关键故障,除常见的CRC错误外,数据比对失败(读取数据与写入数据不一致)是核心表现形式,直接影响数据准确性,在工业控制、高清存储等场景中可能引发严重后果。以下从故障表现、成因及
    的头像 发表于 11-30 15:15 1094次阅读

    AI技术在工程设计的应用

    在不需要硬件交互的纯软件项目中,ChatGPT和Gemini等大语言模型(LLM)可以帮助程序员以前所未有的速度加速开发进程。这种辅助通常包括在开发人员编写代码时提供补全建议,或在排查错误和语法错误时提供故障排除建议——这些都是耗时的编程环节。
    的头像 发表于 09-23 16:21 1058次阅读
    AI技术在工程设计的应用

    如何解决I/O时钟布局器错误

    在 I/O 时钟布局器阶段可能会发生错误,指出该工具无法对该时钟结构进行布局,直至最后 BUFG 仍然无法完成布局。
    的头像 发表于 09-23 16:05 1266次阅读

    唯品会:利用订单地址API校验收货信息,降低因地址错误导致的退货率

    Interface)来实时校验收货信息,有效减少了因地址问题引发的退货,提升了用户体验和运营效率。本文将逐步解析这一创新方案,帮助读者理解其工作原理和实际效益。 问题背景:地址错误如何推高退货率 电商交易中,用户在下单时可能因输入错误
    的头像 发表于 09-11 15:47 681次阅读

    规避生产陷阱:PCB设计中常见的错误解决方案

    生产阶段造成严重问题,导致设计报废、生产延误和成本增加。原型的成功并不意味着量产也能成功,因此 在设计早期阶段就应考虑生产可行性的重要性。   本文总结了常见的与生产相关的设计缺陷并提供了解决方案。 缺乏关键信号测试点   问题 : 这是最
    的头像 发表于 09-08 11:15 5861次阅读
    规避生产陷阱:PCB设计中常见的<b class='flag-5'>错误</b>及<b class='flag-5'>解决方案</b>

    国巨贴片电容的电压标识有哪些常见错误

    国巨贴片电容的电压标识在识别和使用过程中可能存在一些常见错误,这些错误可能源于标识本身的模糊性、不同系列产品的差异、对标识规则的误解,或使用环境的影响。以下是具体分析: 一、标识模糊或缺失导致
    的头像 发表于 08-28 16:51 918次阅读

    避雷!树莓派初学者常犯的5个错误

    卡、安装错误的操作系统版本、同时使用两个网络适配器、使用不合适的电源以及创建无法恢复的备份。但是,只指出问题而不提供解决方案又有什么用呢?继续阅读,我还将推荐一些
    的头像 发表于 07-22 17:16 1532次阅读
    避雷!树莓派初学者常犯的5个<b class='flag-5'>错误</b>!

    NCS放大器DAD3350常见错误码及解决方案

    NCS放大器DAD3350在工业应用中可能出现的错误码及解决方案如下: ‌ 一、常见错误码及原因 ‌ ‌ 过载报警(如LV低电压报警、OVC过电流报警) ‌ ‌ 原因 ‌: 电源电压异常(如过低或
    的头像 发表于 07-12 09:41 1123次阅读

    电商API常见错误排查指南:避免集成陷阱

      在电商平台开发中,API集成是连接系统、实现数据交换的核心环节。然而,许多开发者在集成过程中常遇到错误导致项目延迟、数据丢失或用户体验下降。本文将逐步介绍常见错误类型、排查方法以及预防策略
    的头像 发表于 07-11 14:21 2273次阅读
    电商API常见<b class='flag-5'>错误</b>排查指南:避免集成陷阱

    内网穿透避坑指南 6 大常见错误 + 保姆级解决方案

    在内网穿透部署中,哪怕是老手也可能踩坑!今天整理了6大高频错误场景+实战解决方案,帮你少走弯路,效率翻倍 1.端口映射失败:访问显示「连接超时」 ❌错误原因: 本地服务未启动或端口被占用 防火墙
    的头像 发表于 05-20 12:14 924次阅读

    FPGA时序约束之设置时钟

    Vivado中时序分析工具默认会分析设计中所有时钟相关的时序路径,除非时序约束中设置了时钟组或false路径。使用set_clock_gro
    的头像 发表于 04-23 09:50 1610次阅读
    FPGA<b class='flag-5'>时序</b>约束之设置<b class='flag-5'>时钟</b>组