跳到主要内容

Rockchip DDR DQ 眼图工具开发指南

文件标识:RK-KF-YF-168

发布版本:V1.0.0

日期:2021-03-05

文件密级:□绝密 □秘密 ■内部资料 □公开

免责声明

本文档按“现状”提供,瑞芯微电子股份有限公司(“本公司”,下同)不对本文档的任何陈述、信息和内容的准确性、可靠性、完整性、适销性、特定目的性和非侵权性提供任何明示或暗示的声明或保证。本文档仅作为使用指导的参考。

由于产品版本升级或其他原因,本文档将可能在未经任何通知的情况下,不定期进行更新或修改。

商标声明

“Rockchip”、“瑞芯微”、“瑞芯”均为本公司的注册商标,归本公司所有。

本文档可能提及的其他所有注册商标或商标,由其各自拥有者所有。

版权所有 © 2021 瑞芯微电子股份有限公司

超越合理使用范畴,非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

瑞芯微电子股份有限公司

Rockchip Electronics Co., Ltd.

地址: 福建省福州市铜盘路软件园A区18号

网址: www.rock-chips.com

客户服务电话: +86-4007-700-590

客户服务传真: +86-591-83951833

客户服务邮箱: fae@rock-chips.com


前言

概述

Rockchip DDR DQ 眼图工具提供了在 U-Boot 下输入命令查看各 DQ 读写眼图的功能,供客户检查自己设计的板子 DQ 眼宽是否足够。

产品版本

芯片名称软件版本
RV1126U-Boot 2017.09
RK356xU-Boot 2017.09

读者对象

本文档(本指南)主要适用于以下工程师:

软件开发工程师

技术支持工程师

硬件工程师

修订记录

版本号作者修改日期修改说明
V1.0.0姚旭伟2021-03-05初始版本

目录

[TOC]


Rockchip DDR DQ 眼图工具工作原理

本工具其实是在 Loader 阶段将 DDR read eye training 和 write eye training 的结果保存下来,在 U-Boot 中通过 ddr_dq_eye 命令以图形化眼图的形式展示出来。

Loader 保存 DDR read & write eye training 结果

(u-boot 工程 drivers/ram/rockchip/sdram_rxxxxx.c,如 drivers/ram/rockchip/sdram_rv1126.c)

  1. 每次 read & write eye training 完成后,save_rw_trn_min_max() 函数将各 DQ 的 deskew 最大值和最小值保存至 rw_trn_result.rd_fsp[x].cs[x] 或 rw_trn_result.wr_fsp[x].cs[x] 中,注意每个 cs 做完都要保存 deskew min & max,否则结果会被下次 training 覆盖。

  2. 每个 fsp 所有 cs 的 training 完成后,save_rw_trn_deskew() 函数将各 DQ 的 deskew 保存至 rw_trn_result.rd_fsp[x] 或 rw_trn_result.wr_fsp[x] 中;RV1126 平台下同时保存 modify_dq_deskew() 所用的 min_value 用于还原 training 确定的采样位置。

  3. DDR 初始化完成后,save_rw_trn_result_to_ddr() 将 training 结果 rw_trn_result 存储至 DDR 中(地址 RW_TRN_RESULT_ADDR)。

U-Boot 下查看 DDR DQ 读写眼图

(u-boot 工程 cmd/ddr_tool/ddr_dq_eye.c)

  1. 检查 RW_TRN_RESULT_ADDR 地址处的 flag 是否等于 FSP_FLAG;若不是,说明 Loader 没有保存 training 结果,返回 CMD_RET_FAILURE。
  2. 获取 ddr_dq_eye 的输入参数,选择对应 fsp 的 training 结果,若参数为空则选择最高频;Rockchip-User-Guide-DDR-DQ-Eye-Tool 中规定 ddr_dq_eye 的输入参数是 DDR 时钟频率(单位 MHz),其实输入参数也可以是 fsp 或 DDR 时钟频率(单位 Hz)。
  3. 由于 RK356x 平台有 128 个 rd deskew、256 个 wr deskew,将眼图完整地打印出来可能会超出屏幕范围,宏定义 PRINT_RANGE_MAX 规定了眼图最大打印长度,眼图的长度被等比例缩小至 PRINT_RANGE_MAX。
  4. 以图形化眼图形式打印 DDR read & write eye training 结果。

DDR DQ 最小眼宽限制值的确定

测试多块 EVB 后获取 EVB 的最小眼宽,取 EVB 测试结果的最小眼宽和 JEDEC 规定的最小眼宽(向上取整折算成 deskew)的平均值作为最小眼宽限制值。

RV1126 DDR DQ 最小眼宽限制值

LPDDR4

DDR 时钟频率读写方向EVB 测试最小眼宽JEDEC 规定的最小眼宽确定最小眼宽限制值
1056MHz18612
1056MHz19613
924MHz23715
924MHz22715
784MHz27818
784MHz26817

LPDDR4 共测试 15 块 EVB。

DDR4

DDR 时钟频率读写方向EVB 测试最小眼宽JEDEC 规定的最小眼宽确定最小眼宽限制值
1056MHz19613
1056MHz1169
924MHz22715
924MHz14711
784MHz27818
784MHz19814

DDR4 共测试 14 块 EVB。

LPDDR3

DDR 时钟频率读写方向EVB 测试最小眼宽JEDEC 规定的最小眼宽确定最小眼宽限制值
1056MHz22715
1056MHz18713
924MHz24816
924MHz22815
784MHz291020
784MHz271019

品质部正常运行的 RV1126 EVB 中只有 5 块 LPDDR3,测试样本较少。

DDR3

DDR 时钟频率读写方向EVB 测试最小眼宽JEDEC 规定的最小眼宽确定最小眼宽限制值
1056MHz21614
1056MHz22614
924MHz26817
924MHz25817
784MHz31518
784MHz31518

DDR3 共测试 20 块 EVB。

RK356x DDR DQ 最小眼宽限制值

LPDDR4

DDR 时钟频率读写方向EVB 测试最小眼宽JEDEC 规定的最小眼宽确定最小眼宽限制值
1560MHz331625
1560MHz321624
1332MHz411528
1332MHz371526
1184MHz441530
1184MHz421529
1056MHz461531
1056MHz441530

LPDDR4 共测试 14 块 EVB。

DDR4

DDR 时钟频率读写方向EVB 测试最小眼宽JEDEC 规定的最小眼宽确定最小眼宽限制值
1560MHz441530
1560MHz291522
1332MHz461531
1332MHz341525
1184MHz501332
1184MHz381326
1056MHz521333
1056MHz411327

DDR4 共测试 13 块 EVB。

LPDDR3

DDR 时钟频率读写方向EVB 测试最小眼宽JEDEC 规定的最小眼宽确定最小眼宽限制值
1184MHz491834
1184MHz321825
1056MHz521634
1056MHz341625
920MHz601739
920MHz391728
780MHz721845
780MHz381828

LPDDR3 共测试 7 块 EVB。

DDR3

DDR 时钟频率读写方向EVB 测试最小眼宽JEDEC 规定的最小眼宽确定最小眼宽限制值
1184MHz471732
1184MHz441731
1056MHz521534
1056MHz461531
920MHz601739
920MHz511724
780MHz73941
780MHz53931

DDR3 共测试 9 块 EVB。

注意事项

  1. Rockchip DDR DQ Eye Tool 集成在 DDR Test Tool 中,编译 U-Boot 前请在 menuconfig 中开启 Command line interface -> Enable ddr test tool 来使能本工具。
  2. RV1126 的 DDR 初始化代码(drivers/ram/rockchip/sdram_rv1126.c)已开源,Loader 中 DDR 初始化时保存 Read/Write Eye Training 结果的相关代码通过 CONFIG_CMD_DDR_TEST_TOOL 宏定义使能,可以直接烧写 menuconfig 使能本工具后打包的 Loader;RK356x 的 DDR 初始化代码未开源,更新后的 u-boot-ddr 工程中 dram_init 下编译的 Loader 已支持本工具。
  3. Loader 将 training 结果保存在 RW_TRN_RESULT_ADDR 处;RW_TRN_RESULT_ADDR 现定义为 (0x2000000 | 0x8000),0x2000000(32M)处是 Kernel 的位置,在 Loader 到 U-Boot 阶段是相对安全的;前 0x8000(32K)的空间预留给 FSP_PARAM_STORE_ADDR,用于 Trust 中 DDR 休眠唤醒功能。
  4. 不同平台 deskew 的单位延迟时间不同;RV1126 每个 deskew 约 18.5ps,具体请参考 internal-docs\DDR\Internal\RV1126_DDR_note 文档中“关于 de-skew”的第 5 点和第 6 点;RK356x 单位 deskew 为 UI / 64。
  5. 本工具所打印的眼图中,RV1126 的 Sample 的位置其实不是最终使用的 DQ perbit deskew;为了节省功耗,Loader 阶段的 modify_dq_deskew() 函数将所有 deskew 一起平移至尽可能小的位置。