劉 娟,田 澤,2,黎小玉,2,牛少平
(1.中航工業(yè)西安航空計(jì)算技術(shù)研究所,西安 710068;2.集成電路與微系統(tǒng)設(shè)計(jì)航空科技重點(diǎn)實(shí)驗(yàn)室,西安 710068)
隨著嵌入式系統(tǒng)互連技術(shù)的發(fā)展,系統(tǒng)對數(shù)據(jù)傳輸和處理的速率也有了越來越來高的要求,I/O 子系統(tǒng)的性能直接關(guān)系到系統(tǒng)的性能[1],PCI Express(PCIe)是繼第一代ISA、EISA、VESA 總線,第二代PCI、AGP、PCI-X 總線之后的第三代高性能I/O 總線,是一種能夠廣泛應(yīng)用于移動設(shè)備、計(jì)算系統(tǒng)、嵌入式計(jì)算和通信平臺等所有周邊I/O 設(shè)備互連的總線[2-3]。
由于PCIe 在嵌入式系統(tǒng)的廣泛應(yīng)用,使得在愈來愈復(fù)雜的SoC 設(shè)計(jì)中如何對PCIe 接口盡早的進(jìn)行充分且完備的驗(yàn)證,是值得研究的重要問題之一,本文基于一款自研SoC 芯片PCIe 接口,詳細(xì)闡述PCIe 接口的FPGA 平臺驗(yàn)證。
本文中SoC 芯片的PCIe 模塊符合PCI Express v2.0協(xié)議,并兼容PCI Express v1.1協(xié)議,支持x4 PCI Express通道,單通道2.5Gb/s 通道速率,實(shí)現(xiàn)了協(xié)議規(guī)定的事務(wù)層、鏈路層、物理層邏輯子塊的功能,支持端點(diǎn)操作,提供傳統(tǒng)中斷和MSI 中斷兩種中斷類型,PCIe 模塊為用戶提供全面的底層PCIe 狀態(tài)信息,主機(jī)通過PCIe 接口可訪問的地址空間分為3部分,可分別配置基地址寄存器BAR1、BAR2、BAR3的值來確定其基地址,BAR0空間保留。BAR1為寄存器區(qū),BAR2為存儲區(qū),BAR3為FLASH。
在PCIe 接口的FPGA 原型驗(yàn)證中,需要綜合考慮平臺的可靠性、完備性以及可測試性,文中采用的驗(yàn)證環(huán)境示意圖如圖1所示:驗(yàn)證環(huán)境使用的硬件和軟件如下:
硬件組成:PC 機(jī),Xilinx 編程調(diào)試電纜,RiscWatch 調(diào)試工具,PCIe 驗(yàn)證板,PPC 主機(jī)板、PCIe 訓(xùn)練器,母板/擴(kuò)展卡;
軟件環(huán)境:ELDK,Tornado2.2,Protocol Exerciser 工具。
圖1 驗(yàn)證環(huán)境
對PCIe 接口進(jìn)行充分完備的FPGA 驗(yàn)證,可以有效的彌補(bǔ)軟件模擬仿真的不足,檢驗(yàn)設(shè)計(jì)是否符合SoC 設(shè)計(jì)需求,盡早的暴露設(shè)計(jì)中存在的問題[4]。本文中通過協(xié)議分析,根據(jù)SoC 芯片的PCIe 接口需求以及功能定義,策劃了符合性驗(yàn)證,功能驗(yàn)證、性能驗(yàn)證三大類驗(yàn)證項(xiàng),以保證功能、性能、對外接口以及兼容性滿足應(yīng)用要求。以下分別介紹。
協(xié)議的符合性測試是一種功能性的黑盒測試[5],由于PCI Express 協(xié)議的復(fù)雜性,使符合性測試較困難;另外,在驗(yàn)證中需要考慮提高驗(yàn)證效率,因此,在文中采用安捷倫PCIe 訓(xùn)練器,通過訓(xùn)練器自帶的Protocol Exerciser軟件來進(jìn)行協(xié)議符合性測試。測試軟件如圖2所示,協(xié)議符合性測試包括以下兩項(xiàng):
(1)PCI-SIG 要求的13個(gè)強(qiáng)制測試項(xiàng)目,主要包括對未定義編碼的DLLP 是否會被丟棄、對錯誤LCRC 的丟棄處理以及錯誤序列號的TLP 是否丟棄等,訓(xùn)練器在測試完成后會自動生成測試報(bào)告。
(2)對傳輸層、數(shù)據(jù)鏈路層、配置空間的測試項(xiàng)目,包括傳輸層70項(xiàng),數(shù)據(jù)鏈路層40項(xiàng),配置空間66項(xiàng),電測試1項(xiàng),可根據(jù)訓(xùn)練器軟件中對每個(gè)測試項(xiàng)的執(zhí)行提示完成測試項(xiàng)的執(zhí)行并自動生成測試報(bào)告。
圖2 協(xié)議符合性測試軟件
PCIe 接口的功能驗(yàn)證主要包括PCIe 配置空間功能,BAR1寄存器區(qū)功能,BAR2存儲區(qū)功能、BAR3 Flash 功能,PCIe BAR間干擾以及PCIe 中斷功能測試,具體如表1所示。
表1 功能驗(yàn)證
根據(jù)SoC 設(shè)計(jì)需求,PCIe 性能驗(yàn)證包括四線轉(zhuǎn)一線測試、PCIe 的讀寫速率測試以及PCIe 鏈路穩(wěn)定性測試,其中PCIe 的讀寫速率包括單拍讀寫及DMA 讀寫。
四線轉(zhuǎn)一線:由于系統(tǒng)上電復(fù)位后,系統(tǒng)自動協(xié)商為PCIe四線,配置PPC 主機(jī)的SRDS1CR1寄存器,將PCIe 鏈路強(qiáng)制為一線,在PCIe 初始化和配置完成后訪問Bar1和Bar2,判斷讀寫是否正常。
PCIe 的單拍讀寫速率:使用PPC 主機(jī)上的定時(shí)器進(jìn)行定時(shí),對BAR1空間進(jìn)行多次讀寫數(shù)據(jù),計(jì)算BAR1的單拍讀寫速率。
DMA讀寫速率:DMA讀寫速率測試需分別測試PCIe在一線、四線時(shí),PCIe 包分別配置為128B、256B、512B 的最大讀請求長度和128B、256B 的寫請求長度的場景下,使用PPC 主機(jī)上的定時(shí)器,在PPC主機(jī)上準(zhǔn)備數(shù)據(jù),配置DMA測試寄存器數(shù)據(jù)源地址、目的地址、測試長度,啟動DMA,對DMA 狀態(tài)查詢傳輸是否完成,從而根據(jù)多次DMA的數(shù)據(jù)長度及定時(shí)器時(shí)間,計(jì)算DMA讀速率、DMA 寫速率。
PCIe 鏈路穩(wěn)定性測試:系統(tǒng)上電復(fù)位后,初始化和配置PCIe,在一定的時(shí)間段內(nèi),對BAR 空間進(jìn)行連續(xù)的單拍讀寫訪問或者DMA 操作,并在數(shù)據(jù)訪問期間讀PCIe 鏈路狀態(tài)寄存器,判斷鏈路狀態(tài)是否正常。
本文介紹了一種SoC 芯片中PCIe 接口的FPGA 平臺驗(yàn)證,搭建驗(yàn)證平臺,策劃測試用例,進(jìn)行協(xié)議符合性驗(yàn)證、功能驗(yàn)證以及性能驗(yàn)證,經(jīng)驗(yàn)證,PCIe 接口符合PCIe 協(xié)議標(biāo)準(zhǔn),功能正確,性能穩(wěn)定;PCIe 讀速率為487.9MB/s,PCIe 寫速率為520MB/s,PCIe 接口功能及性能滿足該芯片需求,對SoC 芯片的開發(fā)進(jìn)度有一定的促進(jìn)作用,構(gòu)建的驗(yàn)證平臺具有可重用性,對同類模塊的驗(yàn)證有可參考性。