目前用test2_RP,presim正常,postsim不正常
-
Input
- W_EN
- R_EN
- W_ADDR[13:0]
- R_ADDR[13:0]
- clk
- INn[63:0]
- selectt[63:0]
-
Onput
- real_data[63:0]
- R_ADDRr[13:0]
- wrong_real_data[63:0]
- SGLl
- DBLl
主要根據SB DB做判斷
目前不管單個or雙個error發生,都會輸出real_data
-
Input
- [13:0] R_ADDR
- R_EN
- [63:0] real_data
- [63:0] wrong_real_data
- DB_DETECT
- SB_CORRECT
-
Onput
- [63:0] error_data
- [13:0] R_ADDRr
- 沒讀取動作
- R_ADDRr = 0 , error_data = 0
- 有讀取動作, 但data都正確 ,所以不輸出值
- R_ADDRr = 0 , error_data = 0
- 有讀取動作, 但data有單個錯誤但被修正( real_data != wrong_real_data ) ,輸出位置和錯誤的data
- R_ADDRr = R_ADDR , error_data = wrong_real_data
- 有讀取動作, 但data有多個錯誤且沒被修正( real_data = wrong_real_data ) ,輸出位置和錯誤的data
- R_ADDRr = R_ADDR , error_data = wrong_real_data
- real_data = wrong_real_data : 正確的data
- real_data : 更正過的data
- wrong_real_data : 沒更正過的data
- real_data = wrong_real_data : 沒更正過的data
DB_DETECT | SB_CORRECT | 意思 |
---|---|---|
0 | 0 | 沒error,data正確不須更正 |
0 | 1 | 單個error被偵測到,在output會被更正 |
1 | 1 | 兩個error被偵測到,但不會更正 |
- DBLl有問題
- get address new的
if( (SB_CORRECT != DB_DETECT) && (SB_CORRECT ==1) )begin // singel error , will be corrected,( || (real_data != wrong_real_data) )
(real_data != wrong_real_data)在LSRAM(ECC)會出問題,因為wrong_real_data是直接抓W_DATA會和R_ADDR,R_DATA出問題