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

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

3天内不再提示

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

XILINX开发者社区 来源:XILINX开发者社区 作者:赛灵思开发者 2021-09-10 09:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本篇博文中的分析是根据真实客户问题撰写的,该客户发现在现场出现罕见的比特翻转, 本篇博文旨在演示用于缩小根本原因范围以及修复此问题的部分调试技巧。

最终发现,此问题是由于时钟域交汇 (CDC) 处理不当所导致的,在 report_methodology 和 report_cdc 报告中高亮显示了相关处理错误。

这是使用方法论报告系列博文的第 4 部分。如需阅读整个系列中的所有博文,请点击如下标题查看。

第1部分:时序以满足,但硬件功能出现错误

第2部分:方法违例对于QoR的影响

第3部分:时序已满足,但硬件中存在 DDR4 校准失败

问题说明:

此客户在现场部署了数万个基于 Zynq-7000 系列的产品,这些产品都是使用 Vivado 2013.4 开发的,其最终客户报告称大量卡上出现数据包损坏,调查显示在所有数据包损坏案例中,设计中的相同位置都发生了比特翻转。

根本原因分析:

为了缩小范围,我们首先要求客户提供网表中这些寄存器的位置:

我们要求客户提供 DCP 以便我们使用各项报告来审查设计。

虽然通常随机问题是由电源问题所导致的,但我们同时还要求客户提供操作期间的 VCCINT/VCCAUX/VCCIO 测量方法,以便测量电平和噪声,如(赛灵思答复记录 62181-点击阅读原文可查看)中的硬件调试最佳实践中所述。

我们还要求其提供板级原理图 (schematic) 以复查使用的去耦电容是否足够。

很快我们就把电源问题排除在原因之外。

收到 DCP 后,我们首先使用最新版本的 Vivado 运行

report_timing_summary、report_methodology、report_drc 和 report_cdc。

有多个问题马上显现了出来。

最重要的发现与可疑 FF 相关,report_methodology LUTAR-1 检查标记出了这些可疑 FF:LUT 驱动异步复位警告

FF 具有异步复位,由逻辑级数深度为 2 的路径驱动:

其危险性在于 LUT(红色箭头)可出现毛刺并触发意外复位。

第二项最严重的发现与时钟域交汇和约束有关。

Report_cdc 发现约有 40000 条路径采用非推荐 CDC 架构:

不安全的时钟域交汇可能导致翻转 FF 下游或上游出现问题,并且可能成为所观测到的行为的真正根源。

就约束而言,report_methodology 的“TIMING-24:仅最大延迟数据路径已被覆盖”检查发现多项严重违例。

在移除 set_clock_groups -asynchronous 约束并将其替换为 set_max_delay -datapath_only 和时钟对的最小时钟周期后,发现出现了非常严重的时序违例:-5.8ns,原因是异步时钟之间的逻辑级数达到 11。

第二轮审查发现设计中几乎所有复位上都存在伪路径约束,这些约束是为了帮助达成时序收敛而添加的,根据经验,我们知道这是非常危险的:如果状态机的各个位在不同时间脱离复位,则可能进入非法状态、无法恢复并且导致设计运行错误。

即使复位为异步,取消复位仍需达成时序收敛,因此永远不能忽略复位上的时序收敛,您应该尽可能明确自己实际是否需要复位,因为不使用复位可节省宝贵的布线资源,并且使 SR 管脚可用于控制置位的重映射,从而减小设计规模,因为逻辑函数可部分映射到这些 SR 管脚。

修复所报告的问题(LUT 驱动异步复位、CDC、CDC 约束)并在现场部署一些新固件后,这些罕见的比特翻转就没有再出现。

结论:

Vivado 报告功能(方法论、CDC)的进步使我们得以成功调试并解决罕见的比特翻转问题。

无论何时遇到任何疑问,都应该首先考虑使用最新版本的 Vivado 来重新审查设计,最新版本的 Vivado 中包含 CDC 分析和最新的方法论检查,这些都是进行原始设计所没有的。

责任编辑:haq

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

    关注

    11

    文章

    761

    浏览量

    69564
  • 硬件
    +关注

    关注

    12

    文章

    3633

    浏览量

    69172
  • Xinlix
    +关注

    关注

    0

    文章

    6

    浏览量

    8142

原文标题:开发者分享 | 使用方法论报告4: 罕见的比特翻转

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    门控时钟(Clock-gating)介绍

    ,但是在电路不工作时候,由于一些电平翻转导致的功耗就是无用的,比如:数字电路中的时钟作为整个电路的驱动源,有着很大的扇出,但是当有的电路不工作时候,我们希望该电路上的时钟停止工作,这样
    发表于 01-16 06:30

    什么是位

    有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。 例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种
    发表于 12-15 08:07

    如何降低系统时钟频率?

    使用低频率的高速时钟 HSI、HSE 或低速时钟 LSI、LSE 通过编程预分频寄存器,降低 SYSCLK、HCLK、PCLK 的频率 - 设置 SYSCTRL_CR0 寄存器的 SYSCLK 位
    发表于 12-10 07:34

    如何解决MCU系统时钟频率改变导致的程序跑飞?

    如何解决MCU系统时钟频率改变导致的程序跑飞问题
    发表于 12-05 08:20

    解读

    C语言除了开发桌面应用等,还有一个很重要的领域,那就是「单片机」开发。单片机上的硬件资源十分有限,容不得我们去肆意挥洒。单片机使一种集成电路芯片,使采用超大规模集成电路技术把具有数据处理能力的CPU
    发表于 12-05 06:45

    时钟移项电路加速模块的设计

    入了Xilinx公司解决差分输入的原语IBUFGS,直接在接收端例化一个接口逻辑门,可将LVDS信号转换成单端信号。之后考虑是数据对齐的问题,由于传感器的数据信号和时钟信号是同步跳变的,如果不加处理直接传入到
    发表于 10-29 07:38

    E203软核提高CPU时钟频率方法

    本文将分享我们团队提高E203软核主频的办法。 查阅芯来科技官方出版的《手把手教你设计CPU——RISC-V处理器篇》教材,我们发现,原本设计的E203主时钟应该是100MHZ
    发表于 10-29 06:19

    rtthread 4.1.1 lwip 2.1.2 由于系统计数溢出导致的发送超时如何处理

    been written */ err = ERR_WOULDBLOCK; } else { /* partial write */ err = ERR_OK; } } 当系统计数器溢出时,不是会导致退出超时么?有什么处理比较好的
    发表于 09-24 07:49

    黑芝麻智能跨时间同步技术:消除多计算单元的时钟信任鸿沟

    ,并以黑芝麻智能武当 C1296 芯片为例,通过多方式同步实现多高精度对齐,消除时钟信任鸿沟的实测效果。 智能汽车的核心是通过多维度感知、实时决策和精准控制实现辅助驾驶与智能交互,而这一切的前提是 "时间基准一致",由于不同传
    的头像 发表于 07-22 09:17 678次阅读
    黑芝麻智能跨<b class='flag-5'>域</b>时间同步技术:消除多<b class='flag-5'>域</b>计算单元的<b class='flag-5'>时钟</b>信任鸿沟

    废旧电池处理不当对环境的影响

    在技术驱动的世界中,电池为我们的设备供电并推动科技发展。但是,处理不当的电池会带来严重的环境和安全风险,导致污染和潜在危害。
    的头像 发表于 06-19 15:34 1159次阅读

    使用STM32H755ZIQ-NUCLEO时,由于数据线的原因导致固件升级失败怎么解决?

    使用STM32H755ZIQ-NUCLEO时,由于数据线的原因导致固件升级失败,目前没有办法下载程序,大佬们解决的办法?
    发表于 06-17 06:47

    使用STM32H755ZIQ-NUCLEO时,由于数据线的原因导致固件升级失败,怎么解决?

    使用STM32H755ZIQ-NUCLEO时,由于数据线的原因导致固件升级失败,目前没有办法下载程序,大佬们解决的办法?
    发表于 06-16 06:20

    rtthread 4.1.1 lwip 2.1.2 由于系统计数溢出导致的发送超时如何处理

    been written */ err = ERR_WOULDBLOCK; } else { /* partial write */ err = ERR_OK; } } 当系统计数器溢出时,不是会导致退出超时么?有什么处理比较好的
    发表于 06-13 08:07

    存储示波器触发电平设置不当导致什么后果?

    触发电平(Trigger Level)是存储示波器捕获稳定波形、定位关键事件的核心参数。若设置不当,会导致波形显示异常、触发不稳定、关键信号丢失等问题,甚至影响测试结果的准确性。以下为详细分析及应对
    发表于 05-29 14:13

    跨异步时钟处理方法大全

    该方法只用于慢到快时钟的1bit信号传递。在Xilinx器件中,可以使用(* ASYNC_REG = "TRUE" *)标记,将两个寄存器尽量靠近综合,降低 亚稳态因导线延迟太大而传播到第二个寄存器的可能性。
    的头像 发表于 05-14 15:33 1698次阅读
    跨异步<b class='flag-5'>时钟</b><b class='flag-5'>域</b><b class='flag-5'>处理</b>方法大全