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

    关注

    30

    文章

    5025

    浏览量

    117707
  • 路由器
    +关注

    关注

    22

    文章

    3491

    浏览量

    111331
  • Slice
    +关注

    关注

    0

    文章

    7

    浏览量

    7884
  • Vivado
    +关注

    关注

    18

    文章

    789

    浏览量

    65092
  • 时钟网络
    +关注

    关注

    0

    文章

    15

    浏览量

    6547
收藏 人收藏

    评论

    相关推荐

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

    本文将介绍一个跨时钟错误的案例如图所示,phy_status作为一个多bit的phy_clk时钟域的信号,需要输入csr模块作为一个可读状态寄存器
    的头像 发表于 03-11 15:56 205次阅读
    介绍一个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

    FPGA时钟内部设计方案

    组合逻辑产生的时钟可能有毛刺,会被错误地当成有效时钟边沿,在设计中会导致功能错误。因此,不要使用组合逻辑的输出作为
    发表于 01-22 09:30 249次阅读
    FPGA<b class='flag-5'>时钟</b>内部设计<b class='flag-5'>方案</b>

    CMOS设置错误的解决方法

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

    AD2S1210错误检测中有一种叫失配错误,这种错误存在于电机的哪种状态?是否独立存在?

    错误检测中有一种叫失配错误,这种错误存在于电机的哪种状态?是否独立存在? 以我的理解是进入电机的两路正余弦信号相差过大,然而这并不是失配错误!所以请问失配
    发表于 12-12 07:36

    invalid synrax是什么错误

    “invalid synrax” 是英语中的拼写错误,正确的拼法是 “invalid syntax”。语法错误是指程序代码中出现了不符合编程语言规则的语法结构,导致编译器无法理解和编译代码。 语法
    的头像 发表于 11-28 15:59 2804次阅读

    c语言代码错误怎么找

    ,它们通常是由于C语言编写规则被打破所引起的。实际上,C编译器会提供非常详细的错误消息,告诉我们在哪个地方发生了错误。 当我们在编译过程中遇到语法错误时,我们需要仔细阅读编译器提供的错误
    的头像 发表于 11-24 10:05 1452次阅读

    当串口通信接收的数据错误时如何重发?

    当串口通信接收的数据错误时如何重发
    发表于 10-28 06:54

    ORE上溢错误是什么意思呢?

    了它们所能容纳的范围,通常情况下,计算机会自动处理掉溢出的数据,但在某些情况下,程序员必须对此进行处理,否则会导致程序运行失败或计算结果不正确的情况发生。 ORE上溢错误通常发生在进行
    的头像 发表于 10-25 11:07 427次阅读

    FAQ0135 AT32MCU时钟配置错误或晶振大小选择错误导致异常

    AT32MCU时钟配置错误或晶振大小选择错误导致异常在时钟配置错误或晶振大小选择错误的情况下,下
    发表于 10-23 07:12

    哪些错误PLC新手容易犯?

    PLC新手在使用和编程PLC时容易犯以下一些常见错误: (1)电气接线错误:PLC的输入和输出需要正确地与外部设备进行连接。新手可能会犯接线错误,例如接错线圈端子、断开或短路电线等。这可能导致
    的头像 发表于 10-11 17:10 406次阅读

    红外对管控制电路错误输出?原因解析与解决方案

    的原因,并提出相应的解决方案。二、原因解析硬件故障:红外对管控制电路的硬件设备可能发生故障,如传感器故障、信号处理电路故障等,导致输出的信号不正确。软件故障:与红
    的头像 发表于 09-20 08:30 481次阅读
    红外对管控制电路<b class='flag-5'>错误</b>输出?原因解析与<b class='flag-5'>解决方案</b>

    时钟偏移时序收敛有什么影响呢?

    FPGA设计中的绝大部分电路为同步时序电路,其基本模型为“寄存器+组合逻辑+寄存器”。同步意味着时序路径上的所有寄存器在时钟信号的驱动下步调一致地运作。
    的头像 发表于 08-03 09:27 958次阅读
    <b class='flag-5'>时钟</b><b class='flag-5'>偏移</b>对<b class='flag-5'>时序</b><b class='flag-5'>收敛</b>有什么影响呢?

    你一定要懂的CDC错误

    本文描述的跨时钟错误在特定场景下,有些是允许的,甚至有些是正常设计。因此IC设计者想要确认跨时钟错误需要分析应用场景。
    的头像 发表于 07-24 17:00 1802次阅读
    你一定要懂的CDC<b class='flag-5'>错误</b>

    VW机器人关于RIP/HIP(水流量)的程序设置V5.4

    该块用于控制介质,例如水监测器、压缩空气阀等。它监测流量,并在出现错误时向报警系统发出错误消息。
    发表于 05-31 14:44 614次阅读
    VW机器人关于RIP/HIP(水流量)的程序设置V5.4