Chip123 科技應用創新平台

標題: 記憶體如何驗證 [打印本頁]

作者: kyopc    時間: 2008-5-1 05:17 PM
標題: 記憶體如何驗證
各位前輩大家好:
; T/ q# q# ~: t. o8 w    小弟最近在做的project有很大量的記憶體存取
) Y% H- L1 T; Z6 d' \    但在做的過程中曾想過,
7 l4 ]3 k2 h. g+ E2 r3 s6 p' ~   
' r3 M; T' q( u7 I. e3 @* X    在使用modelsim 看過控制訊號正確後" g6 l5 ^  Y' q5 p% Z1 m
    "如何驗證自己寫的memory controller有資料真的寫入或讀出"4 a% l3 e* P0 ~0 _7 i0 P4 [

7 f, M6 S. k2 `% E1 w& Z' m# I    因為在模擬的時候data line都不可能真的有資料進出,頂多看adress輸出跟控制訊號的關係而已$ M6 b9 y- W0 I% Y3 F8 D
    而我之前的做法還蠻爛的,就是先寫固定的資料進去,再讀取出來
% M5 D" D8 \: n, O8 Y( h     然後在內部寫比較器去比對,如果讀回來的跟寫入的資料一樣則讓LED亮某個燈; {  n, o# k1 x6 I0 }/ i- x( C
    想想這好像不是很好的方法
5 k: D; t9 O) X) C* }    想請問各位在做memory controller的驗證時有沒有什麼更好的方法呢 ?- e$ M# M9 y: ]; r
    p.s1 : 還是小弟使用軟體模擬的方向錯了?
6 P  d; ]5 C- S: F# o    p.s2 : 我有一台簡單的LA , 可是飛機夾對memory的pin腳來說太粗了,很難夾,有前輩有什麼好方法可以讓我量到真實訊號呢???) O7 u2 E: }, R% O3 u

; m" f" t+ i; u1 y% H- ^3 M; o    以上是我的問題,如果之前有人問過請版主告知,小弟會刪掉的
作者: kevin    時間: 2008-5-2 11:11 AM
對memory controller做驗證,要做到完整不容易,跟你要驗證的memory type有關,要做到每一家的memory都適用,更須了解各種memory的規格.
& G" s5 _7 u- {$ c7 p: P8 o& U2 e基本上要有software interface (c/c++ program)到memory controller,還要建立各家memory model,然後先驗證memory controller 的control and status register 的reset values,再改變control and status register 值看是否正確,都正確後,再去做各種memory model的 read/write.
作者: tommywgt    時間: 2008-5-18 01:39 AM
聽起來是你的ram是外掛的
3 E. w! f$ R" E5 Q/ d; |
. c! X  B+ U6 ], \% X& v7 Z+ P針對你用LA去來信號這個問題而言, 你可以考慮利用FPGA內建LA去捉信號來看
作者: m851055    時間: 2008-5-18 05:43 AM
針對量測的問題給你意見,探棒可以用轉接成小的或是將要量測點作拉線之處理。
作者: walltsou    時間: 2008-5-18 03:54 PM
之前我在寫SDRAM控制器,因為容量達8MB時也遇到相同問題。要一個一個寫入再讀回送到PC去做驗證,花的時間很長。另一個問題是要放那一種資料。
; p! C; s) G/ ^5 j/ k; Z後來試了幾個方法:
- V* @# g' b: z6 M% _3 ~& K6 `0 M1.放在Address相同的資料binary code。驗證是很簡單,可是覺得資料太規律,可能會有沒考量到的,像high byte data大多為零,驗不到。
& @1 C9 j( x7 A% u- L2 \- q: H0 S2.利用固定加入數值的counter做為資料,每次加入像97等質數,這樣就可以驗到high byte data。而且Address和data之間有數學關係,也很容易驗。3 k! s  P  \- K: u
3.使用CRC(或Linear  Feedback Shift Register)產生數列方法來驗,數值近似亂數,效果最好。
作者: yhchang    時間: 2008-5-18 06:05 PM
樓主的方法雖然不好  但卻是大部分 DRAM IC廠做 Function Check使用的方法! s2 H2 b8 t/ _( V( c
對自己準備要寫的資料  做一番精心的設計   0101  1010   0001  1110 .....etc  O6 E% r1 c# O; T7 Q% C
在同一套PATTERN  對Memory Controller 下不同的指令( f( f, O6 n0 A0 B# u7 @4 W1 }
比如   Burst Length =1,2,4,8   Cas Latency= 1,2,31 }0 v, d* f( E/ W, j* K
Data type是 sequential 還是 Interleave ....等9 W- o4 A. [- N. j) }/ A; X) u
6 U; u4 j/ q1 `1 p7 p4 H$ f" D
每種MODE 都做一次 Write + Read 看看是否 一樣?) ?; B7 k( F* }$ Y# C- n4 X4 b
有些則是  你寫進去的DATA 會被 Mask掉  或是被 Trucate掉  所以你讀出來的資料不會與寫的一樣1 V  E9 [) q1 X0 V
反正各種PATTERN的設計  都是希望在 輸出端 看到想要的 WAVEFORM  但不見得要跟寫進去的一樣
% e. P8 u$ b/ V/ P當你把 CHIP全部類型的指令組合 都下過一次   1 Q* y3 j7 R! M. E) }$ Q
都沒有問題  基本上FUNCTION就沒問題了
8 p" v& a8 {0 ~8 E) @! J剩下的就是 Timing Spec能否調進去的問題.




歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2