基於FPGA實現DDR接口自動化讀寫測試的裝置及方法與流程
2023-11-11 15:37:12 1

本發明涉及數據通信領域,具體涉及基於fpga(fieldprogrammablegatearray,現場可編程門陣列)的ddr(dualdatarate,雙倍速率同步動態隨機存儲器)實現自動化讀寫測試的裝置及方法。
背景技術:
ddr由jedec(電子設備工程聯合委員會)於2004年發布,經歷了ddr、ddr2、ddr3、ddr4的發展,ddr因其具有成本低廉、容量大和高速等優點而被廣泛應用於存儲需求高的數據通信領域。
ddr系統通常由ddr控制器和ddr存儲器組成,ddr控制器根據用戶的請求,按照ddr規範中定義的時序向ddr存儲器發起初始化、讀或寫等指令。ddr存儲器用於對數據進行存儲和對ddr控制器的指令進行響應。
對於ddr控制器用戶接口的測試主要分為正確性和有效速率兩部分,正確性要求結果準確,有效速率測量要求快速遍歷ddr器件的每一個地址。在一般的基於fpga的ddr控制器設計中,採用cpu執行讀寫命令的方式測試ddr控制器用戶接口,存在測試周期長和測試數據不準確的缺陷。
技術實現要素:
本發明所要解決的技術問題是在現有的基於fpga的ddr控制器設計中,採用cpu執行讀寫命令的方式測試ddr控制器用戶接口,存在測試周期長和測試數據不準確的缺陷。
為了解決上述技術問題,本發明所採用的技術方案是提供一種基於fpga實現ddr接口自動化讀寫測試的裝置,包括:
配置下發模塊,將cpu下發的讀/寫配置文件轉換為dma指令並發送;
dma控制器,接收配置下發模塊下發的dma指令,將dma指令依次切割為多個讀/寫指令並發送;
讀寫命令生成模塊,將dma控制器下發的讀/寫指令轉換為與ddr控制器接口適配的讀操作或寫操作,寫數據的格式採用與ddr控制器接口的內存地址相匹配的自定義格式;
讀數據校驗模塊,對已寫入數據的ddr控制器接口進行讀取操作後的回讀數據進行檢測,若回讀數據與寫入數據不一致則發送讀取錯誤的消息;
計時器,記錄自動化讀/寫測試的起始時間戳和結束時間戳,在自動化測試結束後發送;
測試數據上報模塊,接收讀數據校驗模塊發送的讀取錯誤的消息並記錄讀取錯誤的累計次數;接收計時器發送的起始時間戳和結束時間戳;在自動化讀/寫測試結束後將上述測試數據上報至cpu;
cpu根據測試數據上報模塊發送的起始時間戳和結束時間戳計算自動化讀/寫測試的時長,並根據自動化讀/寫測試的時長與讀/寫配置文件中的自動化測試長度計算出讀/寫速率。
在上述技術方案中,所述讀/寫配置文件中包括自動化測試模式,所述自動化測試模式為突發模式。
在上述技術方案中,所述配置下發模塊設置一組公共配置寄存器,將所述公共配置寄存器引出的信號線與到每一個所述ddr控制器接口,向每一個所述ddr控制器接口獨立發起自動化讀/寫測試或向多個所述ddr控制器用戶接口同時發起自動化讀/寫測試。
在上述技術方案中,所述計時器的計時步長為8納秒,記錄的所述起始時間戳和結束時間戳由秒、毫秒、微秒和納秒四級單元組成。
在上述技術方案中,所述讀/寫配置文件中還包括自動化測試類型、自動化測試起始地址以及自動化測試周期;
所述自動化測試類型包括寫測試和讀測試;
所述自動化測試起始地址為本次自動化測試的ddr控制器用戶接口的起始地址;
所述自動化測試長度為本次自動化測試批量進行的讀操作或寫操作的次數;
所述自動化測試模式還包括均勻模式,表示按照固定的時隙下發讀操作或寫操作;所述突發模式,表示每次讀操作或寫操作後立即發起下一次讀操作或寫操作;
所述自動化測試周期表示在均勻模式下設置的每次讀操作或寫操作之間的時隙。
在上述技術方案中,在均勻模式下,所述讀數據校驗模塊在預設時間內未收到回讀數據時,發送讀取超時的消息至所述測試數據上報模塊;所述測試數據上報模塊接收讀取超時的消息並記錄讀取超時的累計次數,在自動化讀/寫測試結束後上報至cpu。
在上述技術方案中,所述dma控制器根據所述自動化測試起始地址和所述自動化測試長度對所述dma指令進行切片。
本發明還提供了一種基於fpga實現ddr接口自動化讀寫測試的方法,包括以下步驟:
將cpu下發的讀/寫配置文件轉換為dma指令,並將dma指令依次切割為多個讀/寫指令;
將讀/寫指令轉換為與ddr控制器用戶接口適配的讀操作或寫操作,寫數據的格式採用與ddr控制器用戶接口的內存地址相匹配的自定義格式;
對已寫入數據的ddr控制器用戶接口進行讀取操作後的回讀數據進行檢測,若回讀數據與寫入數據不一致則記錄讀取錯誤的累計次數;
在自動化讀/寫測試結束後,將讀取錯誤的累計次數、記錄的自動化讀/寫測試的起始時間戳和結束時間戳上報至cpu;
根據起始時間戳和結束時間戳計算自動化讀/寫測試的時長,並根據自動化讀/寫測試的時長與讀/寫配置文件中的自動化測試長度計算出讀/寫速率。
本發明實現了對ddr控制器用戶接口快速且準確的自動化測試,寫數據的格式採用與ddr控制器用戶接口的內存地址相匹配的自定義格式,在讀測試中無需為比對值分配大量緩存,可以快速高效地完成大容量器件的讀測試;同時,採用計時器計時,計時精度較高,極大地提高了讀寫速率測試值的準確性。
附圖說明
圖1為本發明提供的一種基於fpga實現ddr接口自動化讀寫測試的裝置結構示意圖;
圖2為本發明提供的一種基於fpga實現ddr接口自動化讀寫測試的方法流程圖。
具體實施方式
為了解決在現有的基於fpga的ddr控制器設計中,採用cpu執行讀寫命令的方式測試ddr控制器用戶接口,測試周期長以及測試數據不準確的問題,本發明一種基於fpga實現ddr接口自動化讀寫測試的裝置及方法,支持用戶執行類似dma(directmemoryaccess,直接內存存取)的批量自動化讀寫測試操作,同時,還能夠記錄測試時長,實現了對ddr控制器用戶接口快速而精確的自動化測試,實現讀寫速率的精確計算,大大簡化了用戶的操作方式。
下面結合說明書附圖和具體實施方式對本發明做出詳細的說明。
本發明實施例提供了一種基於fpga實現ddr接口自動化讀寫測試的裝置,如圖1所示,包括配置下發模塊10、dma控制器20、讀寫命令生成模塊30、讀數據校驗模塊40、計時器50以及測試數據上報模塊60。
配置下發模塊10,將cpu下發的讀/寫(讀或寫)配置文件轉換為dma指令,並下發至dma控制器20。
cpu下發的讀/寫配置文件中包括:
自動化測試類型,為寫測試或讀測試;
自動化測試起始地址,為本次自動化測試的ddr控制器用戶接口的起始地址;
自動化測試長度,為本次自動化測試批量進行的讀操作或寫操作的次數
自動化測試模式,包括均勻模式和突發模式,本實施例中採用突發模式,保證了可以測試ddr控制器用戶接口讀寫極限的寫入速率,相比cpudma方式可以更精確的測試ddr控制器用戶接口讀寫的極限性能;均勻模式表示按照固定的時隙下發讀操作或寫操作;突發模式表示每次讀操作或寫操作之間沒有間隔(即每次讀操作或寫操作後立即發起下一次讀操作或寫操作);
自動化測試周期,表示在均勻模式下設置的每次讀操作或寫操作發起時刻之間的間隔,即時隙。
dma控制器20,接收配置下發模塊10下發的dma指令,根據自動化測試起始地址和自動化測試長度將dma指令依次切割為多個讀/寫指令,並將讀/寫命指令下發至讀寫命令生成模塊30。
讀寫命令生成模塊30,將dma控制器20下發的讀/寫指令轉換為與ddr接口適配的讀操作或寫操作;其中寫數據的格式採用與ddr控制器用戶接口的內存地址相匹配的自定義格式,即ddr控制器用戶接口的每一個內存地址對應不同的寫數據,例如內存地址0x00001234對應的寫數據為0xd0001234。在讀測試中可以直接根據此對應關係進行比對,無需為比對值分配大量緩存,可以快速高效的完成大容量器件的讀測試,節省了硬體緩存並大大提高了讀數據校驗模塊40的校驗效率。
讀數據校驗模塊40,對已寫入數據的ddr控制器用戶接口進行讀取操作後的回讀數據進行檢測,若回讀數據與寫入數據不一致則將讀取錯誤的消息發送至測試數據上報模塊塊60。
計時器50,記錄自動化讀/寫測試的起始時間戳和結束時間戳,在自動化測試結束後發送至測試數據上報模塊60。
測試數據上報模塊60,接收讀數據校驗模塊40發送的讀取錯誤的消息並記錄讀取錯誤的累計次數;接收計時器50發送的起始時間戳和結束時間戳;在自動化讀/寫測試結束後將上述測試數據上報至cpu。
cpu根據測試數據上報模塊60發送的起始時間戳和結束時間戳計算自動化讀/寫測試的時長,並根據自動化讀/寫測試的時長與讀/寫配置文件中的自動化測試長度計算出讀/寫速率。
在均勻模式下,若讀數據校驗模塊40在預設時間內未收到回讀數據,則發送讀取超時的消息至測試數據上報模塊60;測試數據上報模塊60接收讀取超時的消息並記錄讀取超時的累計次數,在自動化讀/寫測試結束後上報至cpu。
下面對本實施例的工作原理進行介紹:
配置下發模塊10與測試數據上報模塊60提供一個通用的cpu本地總線接口,作為本地總線的從端,響應用戶通過ddr控制器用戶接口提供的讀/寫操作。cpu本地總線接口由片選信號、讀寫使能信號、地址信號、數據信號組成,上述信號由cpu傳遞給配置下發模塊10與測試數據上報模塊60,用於完成cpu對本發明實施例的讀寫訪問cpu作為本地總線的主端,需要在上一次讀/寫操作完成後才能再次發起讀/寫操作。
測試數據上報模塊60上報的測試數據包括本次自動化測試讀取錯誤的累計次數、均勻模式下超時告警、本次自動化測試的起始時間戳、本次自動化測試的結束時間戳。讀取錯誤的累計次數與超時告警於當前自動化測試結束後有效,並於下次自動化測試開啟後清零。據錯誤累計可以幫助用戶方便的進行問題定位,如讀取超時告警提示檢查ddr控制器流控電路,讀取錯誤的累計次數提示ddr控制器緩存溢出或ddr控制器用戶接口時序。對於讀取錯誤的累計次數還可以根據多次自動化讀測試的測試結果進行分析,若其中某次或某幾次有錯誤且無規律可定位ddr控制器用戶接口時序,若其中某次出錯後之後測試一直報錯可定位ddr控制器緩存溢出。
計時器50的計時步長為8納秒,自動化測試的起始時間戳與結束時間戳由秒、毫秒、微秒、納秒四級單位組成,用戶可在自動化測試完成後讀取並結合所配置的自動化測試長度精確計算出讀或寫速率。基於硬體時鐘計時,使計時精度可以達到納秒級,讀寫速率測試值的精確度大大優於軟體測試。
讀寫命令生成模塊30提供一個自定義的ddr控制器用戶接口,其作為主端,通過該ddr控制器用戶接口發起讀/寫請求。ddr控制器20作為ddr控制器用戶接口的從端,在完成請求結束回覆信號後結束讀/寫請求。上述ddr控制器用戶接口需要在收到上一次讀/寫請求完成回覆信號後才能再次發起讀/寫請求。ddr控制器用戶接口由請求開始信號、請求讀寫指示信號、請求起地址信號、請求長度信號、請求寫數據信號、請求讀回複數據信號、請求結束回覆信號組成,上述信號由讀寫命令生成模塊30傳遞給ddr控制器,用於ddr控制器用戶接口發起讀/寫請求或ddr控制器20結束讀/寫請求。ddr控制器用戶接口與cpu本地總線接口所不同的是,cpu本地總線接口只支持一次操作執行一拍數據的讀寫,而ddr控制器用戶接口一次操作支持1至1024任意拍數據的連續讀寫。上述的ddr控制器用戶接口可以適配於各種ddr控制器。
本發明下遊ddr控制器用戶接口由ddr控制器20與ddr存儲器組成,作為本發明實施例的測試對象。其中ddr控制器一般通過調用fpga器件廠家提供的ddrip核實現。該ip核可實現將內部邏輯的數據總線轉化為符合ddr標準規範的ddr總線操作,實現fpga片內邏輯與ddr存儲器的連通。
上述本地總線一般應用於與cpu連接,ddr控制器用戶接口一般應用於與ddr控制器連接。在本發明實施例中,採用3個ddr控制器用戶接口。在實際應用中3個ddr控制器用戶接口相互獨立,也可配置可同時對不同的底層ddr器件進行訪問。
dma控制器20是實現自動化測試的關鍵,其作用是使cpu只需進行少量配置即可發起對大容量存儲器的覆蓋性讀寫,從而實現覆蓋性測試。dma控制器20根據不同的配置做出相應的處理並在測試完成後返回測試結束信號。
自動化測試類型決定了dma控制器20下發的指令為讀指令還是寫指令,dma控制器20根據自動化測試起始地址(通常為0)和自動化測試長度(通常為ddr存儲器的容量)完成切片操作,即將大容量的數據搬移請求切割成匹配ddr控制器接口的小讀寫請求並依次執行。
自動化測試模式決定了切片後的ddr控制器用戶接口讀寫請求如何下發,即均勻模式按照固定的時隙下發,而突發模式為完成當前ddr控制器用戶接口讀寫請求後立即下發下一個,均勻模式下的自動化測試周期可以靈活配置。
以上適用於單個ddr控制器用戶接口通道的測試,對於多個ddr控制器用戶接口並接的情況,可採用多通道並行讀寫的操作。具體地,在配置下發模塊10不僅為每一個ddr控制器用戶接口分配獨立的配置寄存器和告警上報寄存器,還設置一組公共配置寄存器,該公共配置寄存器引出的信號線與到每一個ddr控制器用戶接口,既可以針對每一個ddr控制器用戶接口獨立發起自動化讀/寫測試,也可以對多個ddr控制器用戶接口同時發起自動化讀/寫測試。支持多通道並行測試,不僅可以縮短測試時間,進一步提高測試效率,對於多口ddr控制器還可以方便地對其進行更嚴格的壓力測試。
本發明實施例還提供了一種基於fpga實現ddr接口自動化讀寫測試的方法,如圖2所示,包括以下步驟:
s1、在上電初始化完成後,將cpu下發的讀/寫配置文件轉換為dma指令,並將dma指令依次切割為多個讀/寫指令。
s2、將讀/寫指令轉換為與ddr控制器用戶接口適配的讀操作或寫操作,寫數據的格式採用與ddr控制器用戶接口的內存地址相匹配的自定義格式。
s3、對已寫入數據的ddr控制器用戶接口進行讀取操作後的回讀數據進行檢測,若回讀數據與寫入數據不一致則記錄讀數據錯誤的累計次數。
s4、在自動化讀/寫測試結束後,將讀數據錯誤的累計次數、記錄的自動化讀/寫測試的起始時間戳和結束時間戳上報至cpu。
s5、根據起始時間戳和結束時間戳計算自動化讀/寫測試的時長,並根據自動化讀/寫測試的時長與讀/寫配置文件中的自動化測試長度計算出讀/寫速率。
本發明應用在ptn設備上,充分利用fpga並行運行速度快和計時精確的優點,可以方便快速進行ddr控制器用戶接口的應用驗證,同時提高了測試精度與效率。
本發明不局限於上述最佳實施方式,任何人在本發明的啟示下作出的結構變化,凡是與本發明具有相同或相近的技術方案,均落入本發明的保護範圍之內。