S32V234 記憶體壓力測試與工具介紹

 NXP S32V234    Memory stress test Hands On

 

 

1.       S32V234 記憶體壓力測試介紹

  • 軟件工具介绍

    此 DDR stress tool 是一個 S32V234 專門針對記憶體顆粒 LPDDR2/DDR3/DDR3L 進行驗證與測試的工具,並且不需要完整

    的 BSP 與 Linux 的環境下測試,有兩種方式可以進行測試,一種是透過 JTAG 上傳 test binary (.elf) 給 S32V234 ,或是在

    Windows 上執行 GUI.exe 透過 JTAG 與 UART進行 。 兩個 binary 都能在板上支持 DQS 讀/寫延遲的校正 , 壓力測試則

    可以跨平台針對 S32VXXX 系列裸機測試

 

 

P.S 由於 JTAG 工具相對較少,金額較高,故本測試均以UART 當作主要溝通        介面來進行測試

  • 軟體工具來源
  • 可透過世平業務窗口或是硬件工程師索取!!!

 

  • 測試目的
  • 本軟體可以實現校正 DRAM 配合 MMDC PHY 的延遲設定,並且在 PCB 板上達到優化的功效,過程全都自動化,
    讓使用者在 DRAM 的調適上面縮短時間


  • 本軟體也可在可靠度層面實行壓力測試來驗證 DRAM 的功能,壓力測試可以驗證硬體連結到 MMDC registers 的參數
    以及 DRAM registers 的參數設定,簡單來說最重要的目的就是驗證使用者在 PCB 板上運行的穩定性

 

  

2.       測試工具 GUI 介面介紹

  • Load Image :上傳 .bin ,根據 DDR stress tool 放置的目錄選取,圖片為另放位置 (目錄位置不得有中文字,否則沒辦法進行測試)

 

  • Load Init Script :上傳腳本檔案 .inc ,同樣也是根據放置的目錄選取 (目錄位置不得有中文字,否則沒辦法進行測試)

 

  • COM port : 選取 PC 上可溝通的 COM port

  

  • S32VXXXX information

  • TARGET : 為本機平台的 SOC 晶片名稱

 

  • DDR dentisy : 選取所測試的記憶體容量 , 這裡允許你可以選取你所要測試的最低容 量 , 你可以從 32MB - 4GB 去選擇,以
    S32V234 為例子,S32V234 每一個 MMDC( Multi Mode DDR Controller ) 硬件設置最大容量為 1024 MB ,故 DDR channel 0
    或者是 DDR channel 1 可以測試的 DDR Density 最大為 1024MB,假設 DDR Density 選擇 32MB去測試,
    則測試行為則是以 DDR Density 1024MB 前面的 32MB 去跑,若選擇 128MB 以上則以此類推

 

  • ARM Speed : 主核心 ( CPU ) 的處理速度

 

  • DDR channel : MMDC ( Multi Mode DDR Controller ) 實際所控制 DDR 顆粒的編號  

 

  • DDR CS : MMDC( Multi Mode DDR Controller ) 所控制 DRAM 的 chip select 數量

 

  Note :  DDR CS 為設計者設計 MMDC Chip Select 控制 DRAM 的編號, 每一個 MMDC 擁有2 Chip Select ( CS0 CS1 )

              例如: MMDC 0 控制一顆帶有 2 CS0 CS1 256 MB ( 2 Die )  DRAMDDR CS 則可以選 ALL,則表示可以測試這

              顆 256MB 帶有兩顆 Die DRAM,請依硬件實際設計的狀況去選擇 DDR CS,否則會出現錯誤

 

  • DDR Calibration

 

  • MR1 Value (HEX) : 16進制的 Mode Register 1 (MR1),初始值為 0000 , 只需填入4 位數的 16 進制的數值,而不用填入 0x04003000 (請參考附錄1)

 

  • DDR Freq( MHZ ) : 設置跑 DRAM 顆粒的頻率,此參數可選擇範圍則 333MHZ ~ 533MHZ

 

  • DDR Stress Test

 

  • Overnight Test : 打勾後即可一直 loop 測試,整個測試跑完後再重新測試

 

  • Star Freq ( MHZ )- End Freq ( MHZ ) : 開始測試的頻率到可測試完的頻率,目前範圍只能333 MHZ~533MHZ ( 範圍越大測試越久 )

   

  • 32bit Memory Read/Write (此功能不會驗證你輸入到記憶體的 Mapping 只能讀取/寫入從 S32V234 datasheet 中對應的記憶體位置)

 

  • ADDR(HEX) : 也是 16進制的 Memory address ,例如可填入值為 80000000 ,不需要加 0x 80000000

 

  • Size (Read) : DRAM 的 IO 存取為 32 bit ,1 word 為 4 bytes , 所以可以 Read 1 word 在同一時間,可選擇以下的數值都可以用來 read :

 

  • 1 Word
  • 4 Word
  • 8 Word
  • 16 Word
  • 32 Word

 

  • Data (HEX)/ Write : 將資料寫入指定的記憶體位置 , 同樣 1 word 代表 4 byte ,可以於一個時間內寫入一個 Word

 


3.       S32V234 測試驗證步驟

  • 先調整為 Boot mode 設定

 

               00 :Flexcan download                             

                01 :Serial download ( Uart )                             

                10 :Boot from RCON                               

                11 :Reserved

  • UART 0 is default serial port , COM port rate is 115200 bps

 

  • 選取你所要 Load Image ( .bin ) 根據你所放置的目錄

 

  

  • 選取你所要測試的腳本 ( .inc ) 檔, 根據你所放置的目錄

 

  

  • 選取你所要通訊的 COM port , 本測試為 COM3

 

 

  • 設定你所要測試的所需的最低區塊容量 (32MB) 核心速度 哪一顆 DDR CS (Chip Select ) 以及你所要測試的通道 DDR channel l 以上都需先選取好 這邊預設 CS 為 0 DDR channel 也為 0

 


  • 設置完成可按 Download 鈕 , 畫面會顯示正在 Loading image

 



  • Loading Image 完成後會顯示你所設定要測試的參數
  • 紅色圈起表示 , 當前板子設計所用到的 MMDC 編號為何 ? 綠色圈起處 , 為當前板子MMDC 所用到的 Chip select , 一般來說
    DDR channel 0 為 MMDC0 , 而 DDR channel 1 為 MMDC1 , 若原理圖沒設計使用到 MMDC1 , 就不要選擇 1 , 否則 calibration 會失敗

 

  • 填入 MR1 Value ( Hex ) & DDR frequency ( Mhz ) 這邊 MR1 以 0006或是0004 DDR frequency暫定以 400mhz  去測試 過了數分鐘後 會產生測試結果如下圖

 

 

  • 儲存 log 檔

 

 

  • 對照 log 檔案來修改 Script ( .inc ) 檔 , 以達到優化的目的 (請參考附錄2)

 

  • 另存腳本檔 ( .inc ) , 再 load 新的腳本檔 ,並把你要測試的資訊設置好,再按下 download

  

  • DDR 測試的起始頻率可以從 333 ~ 533 MHZ 本測試從 400MHZ 開始測試到 533MHZ ,設置完成即可按下 Stress Test

 

 

  • 若顯示欄上顯示 Test complete ,表示這個優化過後的腳本可以通過壓力測試 ,本項 Stress test 即到此結束

 

 

 

  • 若顯示 the script is not suitable , 則可能腳本不適當 ,或是參數不對 導致應該應換個腳本或更換參數

 

  

4.       附錄1

  • MR1 Value 選擇 請先參考設計時 DRAM datasheet 本範例以美光 MT41K256M16

           的 Datasheet 做說明

 

  • 軟體工具建議的測試值有 0006 0004 對照下面 spec Mode Register 1 ( A18~A0)

           即為 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 前面0 0 1 可以忽略 本軟件

           已經寫入 後面 4 0 1 0 0 代表 A3 ~ A0 若要詳細知道下圖 Register 的功

           能 請詢問 DRAM 供應商或是 FAE

 


  • 假設分別做完 MMDC0 與 MMDC1 calibration 後,各得到一份 calibration 的值如下:

 

MMDC0 (Ch0)

MMDC1 (Ch1)

MMDC MPWRDLCTL = 0x44444442

   MMDC registers updated from calibration

   Write leveling calibration

   MMDC_MPWLDECTRL0 ch0 (0x1F001F) =            0x001F001F

   MMDC_MPWLDECTRL1 ch0 (0x1F001F) = 0x001F001F

   Read DQS Gating calibration

   MPDGCTRL0 PHY0 (0x4A0044) =
0x004A0044

   MPDGCTRL1 PHY0 (0x340038) =
0x00340038

   Read calibration

   MPRDDLCTL PHY0 (0x3A404240) =
0x3A404240

   Write calibration

   MPWRDLCTL PHY0 (0x44444442) =
0x44444442

MMDC MPWRDLCTL = 0x3E3E403E

   MMDC registers updated from calibration

   Write leveling calibration

   MMDC_MPWLDECTRL0 ch0 (0x1F001F) = 0x001F001F

   MMDC_MPWLDECTRL1 ch0 (0x1F001F) = 0x001F001F

   Read DQS Gating calibration

   MPDGCTRL0 PHY0 (0x46003F) =
0x0046003F

   MPDGCTRL1 PHY0 (0x370039) =
0x00370039

   Read calibration

   MPRDDLCTL PHY0 (0x161E241E) =
0x161E241E

   Write calibration

   MPWRDLCTL PHY0 (0x3E3E403E) =
0x3E3E403E

                                                                          


 

5.       附錄2

  • 一般 calibration 完後 , 會得到 六 組需要修改的參數 ,其中兩組參數 ( MMDC_MPWLDECTRL0 ch0 & MMDC_MPWLDECTRL1 ch0 ) 在修改檔裡面是找不到的 ,
    故此我們暫時忽略 , 而剩下的四組參數以下項參數為例 : ( Note 1)

 MPRDDLCTL PHY0 (0x3A404240) = 0x3A404240 ß 需要修改的值

查詢 Reference Manual 34.12 章節得知848 Address Offset 的值

 

再查詢 Reference Manual Table 30-29 查詢 MMDC0 MMDC1 的記憶體範圍

           MPRDDLCTL PHY0 為 MMDC0 再加上 offset 的值即為 MPRDDLCTL PHY0 的暫存器位置

           0x40036000 + 848 = 0x40036848 的位址即為該參數

 

 

                0x3A404240取代 0x3C424442值儲存即完成 , 接著依序把剩下三組的值修改

 

Note1 : 無論是選擇 MMDC0 或者是 MMDC1 去做 Calibration 測試時 , 都會得到 六 組參數 , 以上面的數值為例,選擇 MMDC 0 所得到的值如下:

        Write leveling calibration

   MMDC_MPWLDECTRL0 ch0 (0x1F001F) = 0x001F001F

   MMDC_MPWLDECTRL1 ch0 (0x1F001F) = 0x001F001F

        紅色字樣的值在原廠提供的 .inc 檔找不到,這邊暫時忽略

 

   Read DQS Gating calibration

   MPDGCTRL0 PHY0 (0x4A0044) = 0x004A0044

   MPDGCTRL1 PHY0 (0x340038) = 0x00340038

   Read calibration

   MPRDDLCTL PHY0 (0x3A404240) = 0x3A404240

   Write calibration

   MPWRDLCTL PHY0 (0x44444442) = 0x44444442

        由於當初設定是由校正為 MMDC0 , 故以下 四 組參數位置範圍都是 0x40036000 開始

    MPDGCTRL0 PHY0  --> 0x4003683C

    MPDGCTRL1 PHY0  -->0x40036840

    MPRDDLCTL PHY0  -->0x40036848

    MPWRDLCTL PHY0  -->0x40036850

 

 

若設定是由校正為 MMDC1  , 故以下 四 組參數位置範圍都是 0x400A2000 開始

    MPDGCTRL0 PHY0  -->0x400A283C

    MPDGCTRL1 PHY0  -->0x400A2840

    MPRDDLCTL PHY0  -->0x400A2848

    MPWRDLCTL PHY0 -->0x400A2850

 

 

Note2 . 如測試失敗,需要把板重上电,需要重新加載脚本,才能再進行測試

Note3 . 此測試為 CPU 沒有 loading 下的狀況測試,沒有經過系統平衡的狀況下得到的結果,建議測試過再跑一下系統下的mem test 等程式

 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論

Aken

Aken

2020年3月12日
不錯的測試工具,讓客戶可以確認是否是DRAM單體不良或是其它相容性問題。