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

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

3天内不再提示

硬件中存在DDR4校准错误的调试方法与根本原因分析

vinww特烦恼 来源:vinww特烦恼 作者:vinww特烦恼 2022-08-02 11:55 次阅读

本篇博文中的分析是根据真实客户问题撰写的,该客户发现硬件中存在 DDR4 校准错误,不同板以及不同构建 (build) 之间出现的故障并不一致。

本篇博文旨在演示用于缩小根本原因范围以及修复此问题的部分调试技巧。

最后,问题是由于用户 XDC set_false_path 约束覆盖 MIG IP 约束所导致的,错误使用 set_false_paths 的危险性由此可见一斑。

这是使用方法论报告系列博文的第 3 部分。如需阅读本系列中的其他博文,请点击

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

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

问题说明:

用户的设计使用的是 Vivado 和 SDx 流程。此设计包含 2 个 DDR4 64 位接口,运行速度为 2000 Mbps。此设计已达成时序收敛,但在某一个 DDR4 接口或者有时在 2 个接口上都会观察到校准失败。

硬件故障与构建有关:

■成功的构建在多个板上都成功完成

■而失败的构建则在多个板上都失败

■大部分情况下其中一个接口或者 2 个接口都会发生故障

■失败的比特因构建而不同

调试方法:

失败特征表明存在时序约束或 CDC 问题,因此我们使用以下步骤进行调试。

1) 添加 ILA 并重新运行设计实现。现在,故障消失了,或者转移到其它比特。

2) 使用增量实现流程,以保留失败特征。

3) 向 ILA 添加流水线阶段以简化时序收敛。此测试的目标是在失败的阶段中寻找期望的模式,以便缩小失败的比特的范围。

4) 尝试 Pblock 以使 MIG IP 的布局保持彼此接近。在此情况下,失败特征并未发生改变:

■成功完成时序收敛的接口在硬件中失败

■未完成时序收敛的接口在硬件中则能成功完成时序收敛

根据以上结果可见,问题可能在于某些 MIG 约束被用户或者被 Vivado 流程所覆盖。

下一步是复查用户的 XDC 约束。

执行此操作时,我们注意到时钟间的 false_paths 约束是由用户设置的。

现在,运行以下建议的报告组合。关键的报告是 report_methodology 和 report_cdc。

■Report CDC

■Report Methodology

■Report Exception

■Report MIG set_max_delay(用于确认这些约束是否被忽略)

根本原因分析:

MIG set_max_delay 路径并未被忽略。

report_timing 报告了最大延迟

我们在部分 MIG 路径(互连结构 (fabric) 到 PHY)上发现了以下 CDC 严重警告。

现在,将这些路径与 MIG 设计示例中的示例进行比对,这些示例是使用 IP integrator 流程创建的,且已安全完成时序收敛。

poYBAGGYHXKAZ47sAAFcuzHQzwk980.png

根据发现的结果,我们移除了用户添加的所有 false_paths 约束,并在未重新实现整个设计的情况下重新报告时序。

报告显示针对 2 个 DDR4_rx/tx,在最差情况下存在超过 3ns 的时序收敛失败,如下所示。

我们可以利用时序汇总报告 (Report Timing Summary) 的限定机制仅对 MIG 接口进行集中分析。

pYYBAGGYHXOAYVB2AAFv6U5wp_Q626.png

现在,我们发现用户添加的 false_paths 约束导致从互连结构 (fabric) 到 PHY 路径被忽略。

解决办法:

■从目标 XDC 移除上述 false_paths 并重新运行设计实现。

■设计重新恢复正常时序。

■现在,CDC 报告显示先前忽略的路径已安全达成时序收敛。

■测试硬件上的比特文件时,2 个 DDR4 接口都一致通过校准。

结论:

请务必谨慎处理 set_false_path 约束。

此约束很容易导致必须达成时序收敛的路径被忽略。在此类约束中使用通配符时或者在整个时钟域之间设置 false_paths 时,除非您确定这些时钟域之间没有任何路径需达成时序收敛,否则请务必谨慎操作。操作错误可能导致硬件故障,并导致调试流程难以持续且耗时冗长。

面临在时序无错误的设计上遇到硬件故障的情况时,可在 Vivado 中运行几项检查。下列检查应始终运行,尤其是在布局布线之后。仅仅确认时序无错是不够的,您仍需要完成这些检查:

1) 时钟交互报告 (Report Clock Interaction):

提供有关设计中所有时钟的信息

2) 方法论报告 (Report Methodology)

如果观察到不安全的路径或用户忽略的路径,则可使用 Report Methodology 并集中解决严重警告。

3) CDC 报告 (Report CDC)

在此示例中,Report CDC 帮助发现了由于用户约束导致被忽略的关键路径。

将这些结果与 MIG 设计示例进行比对有助于从设计中存在的数百万条路径中发现可疑路径。

使用限定机制可将分析范围缩小到选定的模块。

4) 例外报告 (Report exception):

此报告可提供有关由于时序例外(如果有)而被忽略的路径的信息,例如,set_false_paths 或 set_clock_groups。

一些小技巧:

对于超大型设计,解析数百万条路径是非常困难且耗时的。

为了加速周转,可使用以下命令缩小报告范围:

要在原理图视图中高亮实例,请执行以下操作:

report_cdc -cells [get_selected_objects] -details  -name 
report_timing_summary -cells [get_selected_objects ] -name 

要检查是否已忽略 set_max delay,请执行以下操作:

report_timing -from [get_pins  */*/*/*/slave_rdy_cptd_sclk_reg/C] -to [get_pins  */*/*/*/u_slave_rdy_cptd_sync/SYNC[*].sync_reg_reg[0]/D] -name t3

可从 MIG XDC 找到以上时序路径。“-name”开关将在 GUI 中生成报告。

审核编辑:汤梓红

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

    关注

    12

    文章

    288

    浏览量

    40244
  • 时序
    +关注

    关注

    5

    文章

    356

    浏览量

    36942
  • 校准
    +关注

    关注

    1

    文章

    123

    浏览量

    21656
  • Vivado
    +关注

    关注

    18

    文章

    781

    浏览量

    65014
收藏 人收藏

    评论

    相关推荐

    烦恼是焦虑加重的根本原因

    进入你的潜意识之中,作为一种焦虑的性格进入个体之中,人的性格和个性主要是在这种无数次的经历的组合下形成的。记忆的过程只是对事件的叙述,而这种内在的状态才是形成性格的根本原因。记忆是有形的,状态是无形
    发表于 10-16 10:35

    电池漏液的根本原因?如何判定电池是否漏液?

    电池漏液的根本原因?如何判定电池是否漏液?
    发表于 03-11 06:57

    引起调节的根本原因是什么

    西安交通大学17年3月课程考试《计算机控制技术》作业考核试题一、单选题(共 30 道试题,共 60 分。)1.引起调节的根本原因是偏差,所以在下列说法,不正确的是( )A. 偏差的正、负决定
    发表于 09-01 08:38

    引起调节的根本原因是偏差吗

    1. 引起调节的根本原因是偏差,所以在下列说法,不正确的是()A. 偏差的正、负决定调节作用的方向B. 偏差的大、小决定调节作用的强、弱C. 差为零,调节作用为零D. 偏差太大,调节失效正确答案
    发表于 09-10 06:31

    低功耗产生的根本原因及其控制方法

    一、低功耗管理要点1、低功耗的实现(本质就是不产生多余的漏电流) a、功耗的产生的根本原因:引脚之间存在电压差,电流不断流走;2、关闭单片机外部耗电器件a、利用开关电路,将其彻底断开电源;3、单片机
    发表于 12-31 08:02

    rt_assert_handler死循环根本原因是什么?

    请教:调用rt_mb_send()函数,往邮箱发消息;结果死在rt_assert_handler函数。把这个函数的死循环 while (dummy == 0);注释掉,代码运行正常,不知根本原因是什么?求高手赐教
    发表于 03-23 11:12

    内核oops的根本原因是什么?我们如何调试内核oops?

    问题不能在我们的实验室卡上重现。请参阅附件的内核 oops、中断和 dmesg 信息。内核 oops 的根本原因是什么?我们如何调试内核 oops?
    发表于 04-20 06:19

    如何修复硬件存在DDR4校准错误

    本篇博文中的分析是根据真实客户问题撰写的,该客户发现硬件存在 DDR4 校准错误,不同板以及不
    的头像 发表于 09-03 09:33 2251次阅读

    硬件存在DDR4校准后数据错误

    本篇博文中的分析是根据真实客户问题撰写的,该客户发现硬件存在 DDR4 校准后数据错误,此问题
    的头像 发表于 09-16 09:30 1830次阅读

    XILINX使用方法论设计无法连贯布线

    本篇博文中的分析是根据真实客户问题撰写的,该客户的 DFX 设计无法连贯布线,存在布线重叠。本篇博文旨在演示用于缩小根本原因范围以及修复此问题的部分调试技巧。 这是“使用
    的头像 发表于 09-28 10:41 1488次阅读

    DFX设计无法连贯布线的根本原因及修护

    本篇博文中的分析是根据真实客户问题撰写的,该客户的 DFX 设计无法连贯布线,存在布线重叠。本篇博文旨在演示用于缩小根本原因范围以及修复此问题的部分调试技巧。
    的头像 发表于 08-02 08:03 1113次阅读
    DFX设计无法连贯布线的<b class='flag-5'>根本原因</b>及修护

    DDR4 IP校准硬件故障的调试方法根本原因分析

    本篇博客将为您演示如何使用此报告来帮助加速调试,甚至完全避免硬件故障,最后确定此问题根本原因校准完成时出现争用状况。出现争用状况的原因是由
    的头像 发表于 08-02 12:02 1850次阅读
    <b class='flag-5'>DDR4</b> IP<b class='flag-5'>校准</b>后<b class='flag-5'>硬件</b>故障的<b class='flag-5'>调试</b><b class='flag-5'>方法</b>与<b class='flag-5'>根本原因</b><b class='flag-5'>分析</b>

    时钟域交汇相关处理错误根本原因分析

    本篇博文中的分析是根据真实客户问题撰写的,该客户发现在现场出现罕见的比特翻转, 本篇博文旨在演示用于缩小根本原因范围以及修复此问题的部分调试技巧。
    的头像 发表于 08-02 11:58 727次阅读
    时钟域交汇相关处理<b class='flag-5'>错误</b>的<b class='flag-5'>根本原因</b><b class='flag-5'>分析</b>

    速率越高的DDR4,等长控制越严格?

    按照上面的操作来做等长是不是可以更准一点,给DDR4系统留取更多的裕量呢?由于李工的项目最根本原因不是等长,而是由于他使用了多颗粒双die DDR4表底贴设计,阻抗和拓扑结构优化不到位导致(这种设计在我司的定位难度级别最高)
    发表于 09-13 17:08 1002次阅读

    MES系统没效果的根本原因

    电子发烧友网站提供《MES系统没效果的根本原因.docx》资料免费下载
    发表于 02-22 09:10 0次下载