打印
[i.MX]

DDR STRESS test问题

[复制链接]
6770|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luchangsen|  楼主 | 2015-8-26 10:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Hi,我在测试的时候DQS gating calibration报错,并且在stress test时也报错
Q1:DQS gating calibration报错如何解决,试过改变DDR Freq也不行
Q2:stress test报错的东西如何去理解,能根据报错的地址判断是哪个DDR问题吗(我的是两个DDR)

ddr_mr1=0x00000000
Start write leveling calibration...
running Write level HW calibration
Write leveling calibration completed
    MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x001B001D
    MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x001A0012
Write DQS delay reult:
   Write DQS0 delay: 29/256 CK
   Write DQS1 delay: 27/256 CK
   Write DQS2 delay: 18/256 CK
   Write DQS3 delay: 26/256 CK
Starting DQS gating calibration
. . . . . . . . . . . . . . ERROR FOUND, we can't get suitable value !!!!
dram test fails for all values.
Error: failed during ddr calibration


Beginning stress test
DDR Freq: 396 MHz
t0.1: data is addr test
Address of failure: 0x10000000
Data was: 0x10000800
But pattern  should match address
Error: failed to run stress test!!!

相关帖子

沙发
ccw1986| | 2015-8-26 10:34 | 只看该作者
你自己计算一下看看,看看地址是在什么位置

使用特权

评论回复
板凳
luchangsen|  楼主 | 2015-8-26 10:52 | 只看该作者
ccw1986 发表于 2015-8-26 10:34
你自己计算一下看看,看看地址是在什么位置

但是我的地址线是并在一起的啊

使用特权

评论回复
地板
FSL_TICS_Rita| | 2015-8-26 15:53 | 只看该作者
楼主你好,请问你这里DDR参数的配置都是OK的吗?你这里是哪块板子?DDR的频率设置的为多少?

使用特权

评论回复
5
luchangsen|  楼主 | 2015-8-26 16:38 | 只看该作者
FSL_TICS_Rita 发表于 2015-8-26 15:53
楼主你好,请问你这里DDR参数的配置都是OK的吗?你这里是哪块板子?DDR的频率设置的为多少? ...

配置应该对的,在正常板子上用DDR stress test是正常测试的。DDR freq设置过528、400.我的板子是产线正常生产的,就是这个failure mode如何判定是哪个DDR呢

使用特权

评论回复
6
小猫爱吃鱼| | 2015-8-26 21:00 | 只看该作者
即使的并在一起的也能分别计算出每个ddr的地址吧

使用特权

评论回复
7
luchangsen|  楼主 | 2015-8-27 08:45 | 只看该作者
小猫爱吃鱼 发表于 2015-8-26 21:00
即使的并在一起的也能分别计算出每个ddr的地址吧

主要是不会计算。。

使用特权

评论回复
8
大苏牙| | 2015-8-27 10:57 | 只看该作者
我也遇到了同样的问题,测试起来真麻烦

使用特权

评论回复
9
风的样子| | 2015-8-28 10:04 | 只看该作者
根据总线和片选信号算一下各个ddr的地址

使用特权

评论回复
10
xiaoaide| | 2015-8-29 11:02 | 只看该作者
Starting DQS gating calibration
. . . . . . . . . . . . . . ERROR FOUND, we can't get suitable value !!!!
这步校准失败后,下面的stress test是通不过的,你可以降低下频率试试能否通过,如果能的话就可以进行压力测试了,如果校准一直失败表明DDR部分硬件存在问题。

使用特权

评论回复
11
春风的暖暖| | 2015-8-29 14:27 | 只看该作者
是不是因为clk的速率太高了呢

使用特权

评论回复
12
mini1986| | 2015-9-1 09:47 | 只看该作者
关注一下......学习学习......

使用特权

评论回复
13
FSL_TICS_Rita| | 2015-9-1 15:41 | 只看该作者
luchangsen 发表于 2015-8-26 16:38
配置应该对的,在正常板子上用DDR stress test是正常测试的。DDR freq设置过528、400.我的板子是产线正常 ...

是按照https://community.freescale.com/docs/DOC-105652中的脚本来配置的吗?

使用特权

评论回复
14
春风的暖暖| | 2015-9-1 21:18 | 只看该作者
有可能是焊接的有问题

使用特权

评论回复
15
luchangsen|  楼主 | 2015-9-2 10:40 | 只看该作者
FSL_TICS_Rita 发表于 2015-9-1 15:41
是按照https://community.freescale.com/docs/DOC-105652中的脚本来配置的吗?

是的,在其他板子上测试可以通过的

使用特权

评论回复
16
FSL_TICS_Rita| | 2015-9-24 17:19 | 只看该作者
luchangsen 发表于 2015-9-2 10:40
是的,在其他板子上测试可以通过的

你这里在别的正常的板子上测试是OK的话,那应该是你这块板子硬件上有问题,建议你再查一下硬件,看一看焊接还有器件是否有问题。

使用特权

评论回复
17
LXingJian| | 2015-9-28 11:12 | 只看该作者
楼主你好,请问你的问题找到了吗?我的板子也出现这样的问题。是SoloLite的片子,两片DDR3(单片256MB),使用T型拓扑。

Start write leveling calibration...
running Write level HW calibration
Write leveling calibration completed
    MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x001F001F
    MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x001F001F
Write DQS delay reult:
   Write DQS0 delay: 31/256 CK
   Write DQS1 delay: 31/256 CK
   Write DQS2 delay: 31/256 CK
   Write DQS3 delay: 31/256 CK
Starting DQS gating calibration
. . . . . . . . . . . . . . ERROR FOUND, we can't get suitable value !!!!

我的板子 DQS delay reult怎么都是一样的呢:
     Write DQS0 delay: 31/256 CK
     Write DQS1 delay: 31/256 CK
     Write DQS2 delay: 31/256 CK
     Write DQS3 delay: 31/256 CK

压力测试也不行。这下头大了。

@Rita有什么看法不,难道真的是板子内存布得有问题?

使用特权

评论回复
18
LXingJian| | 2015-9-28 13:49 | 只看该作者
FSL_TICS_Rita 发表于 2015-9-24 17:19
你这里在别的正常的板子上测试是OK的话,那应该是你这块板子硬件上有问题,建议你再查一下硬件,看一看焊 ...

@Rita,我的板子也出现这样的问题。是SoloLite的片子,两片DDR3(单片256MB),使用T型拓扑,单片选的。

Start write leveling calibration...
running Write level HW calibration
Write leveling calibration completed
    MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x001F001F
    MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x001F001F
Write DQS delay reult:
   Write DQS0 delay: 31/256 CK
   Write DQS1 delay: 31/256 CK
   Write DQS2 delay: 31/256 CK
   Write DQS3 delay: 31/256 CK
Starting DQS gating calibration
. . . . . . . . . . . . . . ERROR FOUND, we can't get suitable value !!!!

我的板子 DQS delay reult怎么都是一样的呢:
     Write DQS0 delay: 31/256 CK
     Write DQS1 delay: 31/256 CK
     Write DQS2 delay: 31/256 CK
     Write DQS3 delay: 31/256 CK

压力测试也不行。这下头大了。

有什么看法不,难道真的是板子内存布得有问题?

使用特权

评论回复
19
FSL_TICS_Rita| | 2015-9-28 15:13 | 只看该作者
LXingJian 发表于 2015-9-28 11:12
楼主你好,请问你的问题找到了吗?我的板子也出现这样的问题。是SoloLite的片子,两片DDR3(单片256MB), ...

你好,你这里是不是DDR配置的有问题啊,你可以先看一下Freescale i.MX6 DRAM Port Application Guide-DDR3文档,https://community.freescale.com/docs/DOC-101708

使用特权

评论回复
20
LXingJian| | 2015-9-28 15:32 | 只看该作者
FSL_TICS_Rita 发表于 2015-9-28 15:13
你好,你这里是不是DDR配置的有问题啊,你可以先看一下Freescale i.MX6 DRAM Port Application Guide-DDR ...

Hi Rita:
下面是我的配置文件:

//=============================================================================
//init script for i.MX6SL DDR3
//=============================================================================
// Revision History
// v0.7
//=============================================================================
                       
wait = on
//=============================================================================
// Disable        WDOG
//=============================================================================
//setmem /16        0x020bc000 =        0x30
                       
//=============================================================================
// Enable all clocks (they are disabled by ROM code)
//=============================================================================
setmem /32        0x020c4068 =        0xffffffff
setmem /32        0x020c406c =        0xffffffff
setmem /32        0x020c4070 =        0xffffffff
setmem /32        0x020c4074 =        0xffffffff
setmem /32        0x020c4078 =        0xffffffff
setmem /32        0x020c407c =        0xffffffff
setmem /32        0x020c4080 =        0xffffffff
setmem /32        0x020c4084 =        0xffffffff

setmem /32        0x020c4018 =        0x00260324        //DDR clk to 400MHz
                       
//=============================================================================
// IOMUX
//=============================================================================
//DDR IO TYPE:
setmem /32        0x020e05c0 =        0x00020000        // IOMUXC_SW_PAD_CTL_GRP_DDRMODE
setmem /32        0x020e05b4 =        0x00000000        // IOMUXC_SW_PAD_CTL_GRP_DDRPKE
                       
//CLOCK:
setmem /32        0x020e0338 =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK_0
                       
//Control:
setmem /32        0x020e0300 =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_CAS
setmem /32        0x020e031c =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_RAS
setmem /32        0x020e0320 =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_RESET
setmem /32        0x020e032c =        0x00000000        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDBA2 - DSE can be configured using Group Control Register: IOMUXC_SW_PAD_CTL_GRP_CTLDS
//setmem /32        0x020e033c =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT0
//setmem /32        0x020e0340 =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDODT1
setmem /32        0x020e05ac =        0x00000030        // IOMUXC_SW_PAD_CTL_GRP_ADDDS
setmem /32        0x020e05c8 =        0x00000030        // IOMUXC_SW_PAD_CTL_GRP_CTLDS
                       
//Data Strobes:
setmem /32        0x020e05b0 =        0x00020000        // IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL
setmem /32        0x020e0344 =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0
setmem /32        0x020e0348 =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1
setmem /32        0x020e034c =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS2
setmem /32        0x020e0350 =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS3
                       
//Data:
setmem /32        0x020e05d0 =        0x000C0000        // IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE
setmem /32        0x020e05c4 =        0x00000030        // IOMUXC_SW_PAD_CTL_GRP_B0DS
setmem /32        0x020e05cc =        0x00000030        // IOMUXC_SW_PAD_CTL_GRP_B1DS
setmem /32        0x020e05d4 =        0x00000030        // IOMUXC_SW_PAD_CTL_GRP_B2DS
setmem /32        0x020e05d8 =        0x00000030        // IOMUXC_SW_PAD_CTL_GRP_B3DS
                       
setmem /32        0x020e030c =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM0
setmem /32        0x020e0310 =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM1
setmem /32        0x020e0314 =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM2
setmem /32        0x020e0318 =        0x00000030        // IOMUXC_SW_PAD_CTL_PAD_DRAM_DQM3
                       
//=============================================================================
// DDR Controller Registers
//=============================================================================
// Manufacturer:        SAMSUNG               
// Device Part Number:        K4B2G1646Q-BCK0               
// Clock Freq.:         400MHz               
// Density per CS in Gb:         4
// Chip Selects used:        1               
// Total DRAM density (Gb)        4               
// Number of Banks:        8
// Row address:            14
// Column address:         10
// Data bus width        32
//=============================================================================
setmem /32        0x021b0800 =        0xa1390003         // DDR_PHY_P0_MPZQHWCTRL, enable both one-time & periodic HW ZQ calibration.
                       
// write leveling, based on Freescale board layout and T topology               
// For target board, may need to run write leveling calibration                
// to fine tune these settings               
// If target board does not use T topology, then these registers               
// should either be cleared or write leveling calibration can be run               
setmem /32        0x021b080c =         0x001F001F
setmem /32        0x021b0810 =         0x001F001F       
               
//######################################################               
//calibration values based on calibration compare of 0x00ffff00:               
//Note, these calibration values are based on Freescale's board               
//May need to run calibration on target board to fine tune these                
//######################################################               
               
setmem /32        0x021b083c =        0x407E007F        // MPDGCTRL0 PHY0  
setmem /32        0x021b0840 =        0x00690069        // MPDGCTRL1 PHY0  
setmem /32        0x021b0848 =        0x42424645        // MPRDDLCTL PHY0  ******************
setmem /32        0x021b0850 =        0x3B383630        // MPWRDLCTL PHY0  ******************
               
                       
setmem /32        0x021b081c =        0x33333333        // DDR_PHY_P0_MPREDQBY0DL3
setmem /32        0x021b0820 =        0x33333333        // DDR_PHY_P0_MPREDQBY1DL3
setmem /32        0x021b0824 =        0x33333333        // DDR_PHY_P0_MPREDQBY2DL3
setmem /32        0x021b0828 =        0x33333333        // DDR_PHY_P0_MPREDQBY3DL3
               
// Complete calibration by forced measurement:               
setmem /32        0x021b08b8 =        0x00000800         // DDR_PHY_P0_MPMUR0, frc_msr
               
setmem /32        0x021b0004 =        0x00020024        // MMDC0_MDPDC
setmem /32        0x021b0008 =        0x00333040        // MMDC0_MDOTC
setmem /32        0x021b000c =        0x3F435313        // MMDC0_MDCFG0  
setmem /32        0x021b0010 =        0xB68E8B63        // MMDC0_MDCFG1   
setmem /32        0x021b0014 =        0x01FF00DB        // MMDC0_MDCFG2
setmem /32        0x021b0018 =        0x00081740        // MMDC0_MDMISC
               
setmem /32        0x021b001c =        0x00008000        // MMDC0_MDSCR, set the Configuration request bit during MMDC set up
setmem /32        0x021b002c =        0x000026d2        // MMDC0_MDRWD; recommend to maintain the default values
setmem /32        0x021b0030 =        0x00431023        // MMDC0_MDOR
setmem /32        0x021b0040 =        0x0000004F        // CS0_END
setmem /32        0x021b0000 =        0x83190000        // MMDC0_MDCTL  
// Mode register writes               
setmem /32        0x021b001c =        0x04008032        // MMDC0_MDSCR, MR2 write, CS0
setmem /32        0x021b001c =        0x00008033        // MMDC0_MDSCR, MR3 write, CS0
setmem /32        0x021b001c =        0x00048031        // MMDC0_MDSCR, MR1 write, CS0
setmem /32        0x021b001c =        0x05208030        // MMDC0_MDSCR, MR0 write, CS0
setmem /32        0x021b001c =        0x04008040        // MMDC0_MDSCR, ZQ calibration command sent to device on CS0
               
setmem /32        0x021b001c =        0x0400803A        // MMDC0_MDSCR, MR2 write, CS1
setmem /32        0x021b001c =        0x0000803B        // MMDC0_MDSCR, MR3 write, CS1
setmem /32        0x021b001c =        0x00048039        // MMDC0_MDSCR, MR1 write, CS1
setmem /32        0x021b001c =        0x05208038        // MMDC0_MDSCR, MR0 write, CS1
setmem /32        0x021b001c =        0x04008048        // MMDC0_MDSCR, ZQ calibration command sent to device on CS1
               
               
setmem /32        0x021b0020 =        0x00005800        // MMDC0_MDREF
setmem /32        0x021b0818 =        0x00011117        // DDR_PHY_P0_MPODTCTRL
                       
setmem /32        0x021b0004 =        0x00025564        // MMDC0_MDPDC now SDCTL power down enabled
setmem /32        0x021b0404 =        0x00011006         //MMDC0_MAPSR ADOPT power down enabled
               
setmem /32        0x021b001c =        0x00000000        // MMDC0_MDSCR, clear this register (especially the configuration bit as initialization is complete)

应该是没有什么问题的啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

27

帖子

1

粉丝