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

    文章

    5342

    浏览量

    120323
  • 路由器
    +关注

    关注

    22

    文章

    3732

    浏览量

    113755
  • Slice
    +关注

    关注

    0

    文章

    7

    浏览量

    8064
  • Vivado
    +关注

    关注

    19

    文章

    812

    浏览量

    66509
  • 时钟网络
    +关注

    关注

    0

    文章

    16

    浏览量

    6570
收藏 人收藏

    评论

    相关推荐

    EEPROM编程常见错误解决方案

    EEPROM(电可擦可编程只读存储器)在编程过程中可能会遇到多种错误。以下是一些常见的EEPROM编程错误及其解决方案: 常见错误 数据写入错误
    的头像 发表于 12-16 17:08 555次阅读

    dac161p997这几个寄存器全配置为0,当发生错误时,dac161p997会不会依据错误的数据进行输出?

    请问dac161p997这几个寄存器全配置为0,当发生错误时(比如奇偶校验),dac161p997会不会依据错误的数据进行输出?
    发表于 12-06 08:12

    常见的GND连接错误解决方案

    GND(接地)连接在电子设计和硬件开发中至关重要,错误的GND连接可能导致电路不稳定、信号干扰甚至设备损坏。以下是一些常见的GND连接错误及其解决方案: 一、GND网络未连接 问题描述
    的头像 发表于 11-29 16:02 1162次阅读

    SQL错误代码及解决方案

    在SQL数据库开发和管理中,常见的错误代码及其解决方案可以归纳如下: 一、语法错误(Syntax Errors) 错误代码 :无特定代码,但通常会在
    的头像 发表于 11-19 10:21 1577次阅读

    aes加密的常见错误解决方案

    的归纳以及相应的解决方案: 常见错误 编码问题 : 在将字节数组转换成字符串时,如果使用了不同的编码格式,可能会导致解密后的数据出现乱码。 密钥长度问题 : AES算法支持128位、192位和256位三种密钥长度。如果加密和解密
    的头像 发表于 11-14 15:13 1307次阅读

    socket 常见错误解决方案

    在网络编程中,使用套接字(socket)是进行网络通信的基础。然而,在实际应用中,开发者可能会遇到各种错误。以下是一些常见的套接字错误及其解决方案: 1. 连接超时(ETIMEDOUT) 错误
    的头像 发表于 11-12 14:15 1684次阅读

    CAN总线常见错误码及其解决方法

    错误码,这些错误码可以帮助我们诊断和解决问题。 1. 错误帧(Error Frame) 错误码 :当CAN控制器检测到一个帧的错误时,会发送
    的头像 发表于 11-12 10:05 2014次阅读

    SUMIF函数常见错误解决方案

    求和范围,导致函数无法正确执行。 解决方案: 确保条件范围和求和范围正确无误。SUMIF函数的基本语法是: SUMIF(条件范围, 条件, [求和范围]) 条件范围 :这是包含您要应用条件的单元格区域。 条件 :这是您希望条件范围中的单元格满足的条件。 求和范围
    的头像 发表于 11-11 09:10 1182次阅读

    网关错误是什么意思

    网关错误计算机网络中一个常见且复杂的问题,它通常发生在客户端和服务器之间的通信过程中,导致客户端的请求无法被正确处理或响应。为了全面理解网关错误,本文将从其定义、原因、类型、影响、诊
    的头像 发表于 09-30 11:40 3081次阅读

    时钟抖动和时钟偏移的区别

    时钟抖动(Jitter)和时钟偏移(Skew)是数字电路设计中两个重要的概念,它们对电路的时序性能和稳定性有着显著的影响。下面将从定义、原因、影响以及应对策略等方面详细阐述
    的头像 发表于 08-19 18:11 1012次阅读

    FPGA 高级设计:时序分析和收敛

    、16ns、17ns、18ns,有两条路径能够满足要求,布局布线就会选择满足要求的两条路径之一。 图 1 静态时序分析模型 因此,有些说法是错误的,不分什么情况就说时序收敛
    发表于 06-17 17:07

    介绍一个IC设计错误案例:可读debug寄存器错误时钟

    本文将介绍一个跨时钟错误的案例如图所示,phy_status作为一个多bit的phy_clk时钟域的信号,需要输入csr模块作为一个可读状态寄存器
    的头像 发表于 03-11 15:56 511次阅读
    介绍一个IC设计<b class='flag-5'>错误</b>案例:可读debug寄存器<b class='flag-5'>错误</b>跨<b class='flag-5'>时钟</b>

    如何在SPI中设置SLSI错误时进行调试?

    在调试 36 服务时,它通过 SPI 进行通信,等待来自 L2 的响应。Lane2 侧中断会生成带有 CRC 错误的短块,当我看到 QSPI 状态注册错误标志(SLSI 错误)时,设置了 QSPI 状态注册
    发表于 01-25 06:27

    导致PLC信号干扰的错误操作

    以下是一些可能导致PLC(可编程逻辑控制器)信号干扰的错误操作。
    的头像 发表于 01-22 10:05 571次阅读

    CMOS设置错误的解决方法

    CMOS设置错误的解决方法  CMOS是计算机中的一块电路,用于存储电脑的基本配置信息。如果设置错误,可能会导致计算机无法正常启动或运行,因
    的头像 发表于 12-28 15:13 8405次阅读