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

    文章

    5590

    浏览量

    129092
  • 路由器
    +关注

    关注

    22

    文章

    3892

    浏览量

    118885
  • Slice
    +关注

    关注

    0

    文章

    7

    浏览量

    8368
  • Vivado
    +关注

    关注

    19

    文章

    847

    浏览量

    70479
  • 时钟网络
    +关注

    关注

    0

    文章

    16

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

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

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

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

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

    记忆示波器设置有哪些常见错误

    记忆示波器(数字存储示波器,DSO)的设置错误可能导致波形失真、测量不准确或捕获关键信号失败。以下是常见设置错误解决方案:一、垂直设置错误
    发表于 04-14 15:29

    IGBT IPM的错误输出功能

    本文将介绍“保护功能和工作时序”系列的第五个功能——“错误输出功能(FO)”。
    的头像 发表于 03-19 17:22 1080次阅读
    IGBT IPM的<b class='flag-5'>错误</b>输出功能

    多板 PCB 组装中最常见的逻辑错误

    到电路板原型制作结束后,也无法发现这些错误。幸运的是,您可以采取一些简单的解决方案和设计选择,避免电路板之间出现这些逻辑连接错误。01什么是电路板之间的逻辑连接错误
    的头像 发表于 03-14 18:15 707次阅读
    多板 PCB 组装中最常见的逻辑<b class='flag-5'>错误</b>

    常见xgboost错误解决方案

    的XGBoost错误及其解决方案: 1. 数据预处理错误 错误 :未对数据进行适当的预处理,如缺失值处理、特征编码、特征缩放等。 解决方案
    的头像 发表于 01-19 11:22 4656次阅读

    电桥电路的常见错误分析

    电桥电路的常见错误分析主要包括以下几个方面: 一、电阻值不准确 电阻值不准确是电桥电路常见的错误之一。这可能是由于电阻本身的误差,如电阻的标称值与实际值存在偏差,或者电阻老化、温度变化等因素导致
    的头像 发表于 01-09 10:08 1947次阅读

    GPIO错误排查与解决

    在嵌入式系统和微控制器编程中,通用输入输出(GPIO)是最常见的接口之一。然而,在使用GPIO时,我们可能会遇到各种错误。 1. 理解GPIO GPIO是微控制器上的一组引脚,可以被配置为输入或输出
    的头像 发表于 01-09 09:46 3726次阅读

    RTOS中的错误检查机制

    在嵌入式应用中,有可能发生各种各样的错误,系统必须能够检测到这些错误并作出适当的响应。RTOS通常内置了一些错误检查功能,用于检测错误并向应用提供响应
    的头像 发表于 01-03 14:44 1022次阅读

    常见电位测量错误解决方案

    常见电位测量错误解决方案 1. 接触不良 错误描述: 在电位测量中,接触不良是最常见的问题之一。这可能是由于探针接触不良、氧化层、污垢或腐蚀造成的。 解决方案: 清洁探针和被测点,确
    的头像 发表于 12-28 14:08 1919次阅读

    EEPROM编程常见错误解决方案

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