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

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

3天内不再提示

如何调试设计中的时钟域交汇问题

思佳讯SkyworksSolutions 来源:XILINX开发者社区 作者:XILINX开发者社区 2021-08-20 09:32 次阅读

本篇博文中的分析是根据客户真实问题撰写的,该客户发现即使时序已得到满足的情况下,硬件功能仍出现错误。最后发现,问题与时钟域交汇 (Clock Domain Crossing) 有关,因此,本篇博文介绍了如何调试设计中的时钟域交汇问题。

问题说明:

在此设计中,用户生成了比特流并将其用于器件编程,在硬件上进行测试时,用户发现少量时钟域上无法获得期望的功能。

用户对行为仿真和实现后仿真进行了测试,发现信号上可得到正确的结果。

同时,这些用户未发现任何种类的时序违例,所有值均为正值,如“设计时序汇总 (Design Timing Summary)” 中所示。

注:您可使用以下选项自行检查设计的时序汇总信息

■ 在 Vivado GUI 中,转至“报告 (Reports)”选项卡 -》“时序 (Timing)”-》“时序汇总报告 (Report Timing Summary)”

■运行以下 Tcl 命令:

report_timing_summary -file 《filepath》/timingreport.txt

根本原因:

硬件功能问题背后可能存在多种原因。

包括缺少时钟域交汇 (CDC) 同步器、时钟拓扑欠优化、时钟结构中使用了组合逻辑、亚稳态以及经典的未约束路径问题。

要检查与时钟/架构/CDC 等相关的警告/严重警告,可使用方法论报告。

要在 Vivado GUI 中打开方法论报告,请转至“报告 (Report)”选项卡 -》“方法论报告 (Report Methodology)”,或者在 Tcl 控制台 (Tcl console) 中,使用 report_methodology。

报告打开后,您可能会看到几条与设计相关的警告和严重警告,需您进行检查。

在此示例中,报告中显示了几条警告,这些警告与 CDC 相关的错误实践有关(这些警告的 ID 为 Timing-9 和 Timing-10),如下所示。

a4422284-00d4-11ec-9bcf-12bb97331649.png

这些警告声称工具经由约束语句(例如,set_false_path 或 set_clock_groups)的使用,在 2 个时钟域之间检测到一个或多个异步时钟域交汇。

但它在捕获时钟端未找到任何双寄存器逻辑同步器。因此,它建议用户运行 report_CDC 并对这些 CDC 路径执行进一步分析。

要在 Vivado GUI 中打开 CDC 报告,请转至“报告 (Report)”选项卡 -》 “时序 (Timing)”-》“CDC 报告 (Report CDC)”。或者,您可在 Tcl 控制台中运行 report_cdc 命令。

请参阅 (UG906) 以获取有关阅读此 CDC 报告的详细指南。

CDC 报告显示在发生硬件功能错误的时钟域内存在不安全的未知 CDC 端点(如下所示)。请参阅 (UG906) 以了解此报告命名法。

如何解决这些警告/严重警告?

1) (UG906)包含有关这些警告以及其它时序方法论检查的详细说明。请详查其中提供的示例,以理解每一项警告及其根本原因。您可通过添加适当的同步电路(通过修改 RTL 或者使用赛灵思可参数化宏 (XPM))来相应改善设计。

2) 您可能还需要相应添加或修改约束,或者在 RTL 源代码中为 CDC 端点添加 ASYNC_REG 属性。(您还可参阅(UG906)以便详细了解 CDC 拓扑结构。)

3) 对于伪静态寄存器接口,最好将 CDC 接口豁免,而不是对其进行过度设计。

如需获取有关豁免以及如何创建豁免的更多信息,请参阅 (UG906)。

注:伪静态 CDC 寄存器接口为包含近似静态的配置寄存器的 CDC 路径。这些路径初始化后可能不再改变,或者可能仅改变 1 次,因此用户几乎可以将其看作是静态的。

结论

对 CDC 路径完成必要修改后,客户得以成功通过硬件的功能测试。

编辑:jq

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

    关注

    30

    文章

    4995

    浏览量

    117424
  • RTL
    RTL
    +关注

    关注

    1

    文章

    373

    浏览量

    58998
  • CDC
    CDC
    +关注

    关注

    0

    文章

    55

    浏览量

    17665

原文标题:开发者分享 | 使用方法论报告 1:时序已满足,但硬件功能出现错误

文章出处:【微信号:gh_2d0d1910c28b,微信公众号:思佳讯SkyworksSolutions】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA设计中有多个时钟时如何处理?

    FPGA设计中有多个时钟时如何处理?跨时钟的基本设计方法是:(1)对于单个信号,使用双D触发器在不同时钟
    发表于 02-24 15:47

    关于异步时钟的理解问题:

    关于异步时钟的理解的问题: 这里面的count[25]、和count[14]和count[1]算是多时钟吧?大侠帮解决下我的心结呀,我这样的理解对吗?
    发表于 02-27 15:50

    【FPGA设计实例】FPGA跨越多时钟

    跨越时钟FPGA设计可以使用多个时钟。每个时钟形成一个FPGA内部时钟
    发表于 03-19 15:16

    FPGA请重视异步时钟问题

    [size=11.818181991577148px]FPGA开发,遇到的最多的就是异步时钟了。[size=11.818181991577148px]检查初学者的代码,发现最多的就是这类
    发表于 08-13 15:36

    怎么将信号从一个时钟传递到另一个时钟

    亲爱的朋友们, 我有一个多锁设计。时钟为50MHz,200MHz和400Mhz。如果仅使用400MHz时钟并使用时钟使能产生200Mhz和50Mhz时钟
    发表于 03-11 08:55

    如何处理好FPGA设计时钟问题?

    时钟处理。先利用 ADC 芯片提供的 60MHz 时钟将 ADC 输出的数据写入异步双口 RAM,然后使用 100MHz 的时钟从 RAM
    发表于 09-22 10:24

    三种跨时钟处理的方法

    60MHz的时钟上升沿变化,而FPGA内部需要使用100MHz的时钟来处理ADC采集到的数据(多bit)。在这种类似的场景,我们便可以使用异步双口RAM来做跨时钟
    发表于 01-08 16:55

    时钟时钟简介

    文章目录前言时钟时钟时钟,时序逻辑的心跳时钟信...
    发表于 07-29 07:43

    如何处理好FPGA设计时钟间的数据

    时钟处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟间的数据,可以说是每个FPGA初学者的必修课。如果是还是在校的学生,跨时钟
    发表于 07-29 06:19

    时钟的设计和综合技巧系列

    时钟)的逻辑。在真正的ASIC设计领域,单时钟设计非常少。2、控制信号从快时钟同步到慢时钟
    发表于 04-11 17:06

    IC设计时钟处理的常用方法相关资料推荐

    1、IC设计的多时钟处理方法简析我们在ASIC或FPGA系统设计,常常会遇到需要在多个时钟
    发表于 06-24 16:54

    讨论一下在FPGA设计时钟和异步信号处理有关的问题和解决方案

    和发送数据,处理异步信号,以及为带门控时钟的低功耗ASIC进行原型验证。  这里以及后面章节提到的时钟,是指一组逻辑,这组逻辑的所有同步单元(触发器、同步RAM块以及流水乘法器等)
    发表于 10-14 15:43

    调试FPGA跨时钟信号的经验总结

    1、跨时钟信号的约束写法  问题一:没有对设计进行全面的约束导致综合结果异常,比如没有设置异步时钟分组,综合器对异步时钟路径进行静态时序分析导致误报时序违例。  约束文件包括三类,建
    发表于 11-15 14:47

    由于时钟交汇处理不当所导致罕见的比特翻转

    本篇博文中的分析是根据真实客户问题撰写的,该客户发现在现场出现罕见的比特翻转, 本篇博文旨在演示用于缩小根本原因范围以及修复此问题的部分调试技巧。 最终发现,此问题是由于时钟交汇 (CDC) 处理
    的头像 发表于 09-10 09:44 1177次阅读

    如何调试设计中的时钟交汇问题

    本篇博文中的分析是根据客户真实问题撰写的,该客户发现即使时序已得到满足的情况下,硬件功能仍出现错误。最后发现,问题与时钟交汇 (Clock Domain Crossing) 有关,因此,本篇博文介绍了如何调试设计中的
    发表于 08-02 11:44 251次阅读
    如何<b class='flag-5'>调试</b>设计中的<b class='flag-5'>时钟</b>域<b class='flag-5'>交汇</b>问题