PCI Express協(xié)議實現(xiàn)與驗證
摘要:稱為第3代I/O接口技術(shù)的PCI Express總線規(guī)范的出現(xiàn),從結(jié)構(gòu)上解決了帶寬不足的問題,有著極為廣闊的發(fā)展前景?;赩erilog HDL硬件描述語言及可綜合化設(shè)計理念,完成了PCI Express IP核RTL代碼的設(shè)計。IP核代碼使用Verilog HDL語言編寫,分模塊、分層次地設(shè)計了事務(wù)層、數(shù)據(jù)鏈路層和物理層的邏輯子層,并進(jìn)行了可綜合化設(shè)計與代碼風(fēng)格檢查。對設(shè)計的PCI Express IP核的功能分別從協(xié)議層次和應(yīng)用層次進(jìn)行了驗證。具體實現(xiàn)上,采用Denali公司的PureSuite測試套件對IP核的協(xié)議兼容性進(jìn)行驗證,驗證范圍覆蓋了IP核的3個層次以及配置空間,采用QuestaSim仿真工具對IP核的應(yīng)用層進(jìn)行驗證。仿真結(jié)果表明,設(shè)計的PCI Express IP核工作正常,性能優(yōu)良。
關(guān)鍵詞:PCI Express協(xié)議;IP核;驗證;I/O接口
0 引言
當(dāng)下,計算機(jī)系統(tǒng)使用的主流內(nèi)部總線技術(shù)為PCI總線。隨著千兆以太網(wǎng)、RAID陣列等高帶寬設(shè)備的出現(xiàn),PCI總線133 MB/s的帶寬已明顯不能滿足應(yīng)用的需要。根據(jù)PCI總線的性能不足及計算機(jī)系統(tǒng)的應(yīng)用需求,第3代I/O總線接口技術(shù)PCI Express應(yīng)運(yùn)而生。PCI Express是一種應(yīng)用于各種計算與通信平臺的高帶寬、點(diǎn)對點(diǎn)串行互聯(lián)協(xié)議,支持虛通道、流量控制機(jī)制及熱插撥,具有錯誤處理及錯誤報告功能,并在軟件上與PCI兼容,具有鮮明的技術(shù)優(yōu)勢和廣闊的應(yīng)用前景。基于將PCI Express理論優(yōu)勢轉(zhuǎn)化為實際應(yīng)用優(yōu)勢的考慮,設(shè)計了PCI Express IP核,并進(jìn)行了可綜合化設(shè)計與代碼風(fēng)格檢查,最后對設(shè)計的PCI Express IP核分別從協(xié)議層次和應(yīng)用層次進(jìn)行了較為充分的功能驗證。
1 PCI Express協(xié)議
較之PCI總線,PCI Express在總線技術(shù)與結(jié)構(gòu)上實現(xiàn)了較大飛躍,提供了高速、高性能、點(diǎn)到點(diǎn)、雙單工、串行、差分信號鏈路來互聯(lián)設(shè)備。PCI Express的基本結(jié)構(gòu)包括根復(fù)合體(Root Complex)、交換機(jī)(Switch)以及端點(diǎn)設(shè)備(Endpoint)等,本文設(shè)計的PCI Expresb;IP(Intellectual Property)核屬于PCI Express端點(diǎn)設(shè)備。PCI ExpreSS總線典型拓?fù)浣Y(jié)構(gòu)如圖1所示。
根復(fù)合體(RC)為下層I/O設(shè)備連接到CPU和主存儲器系統(tǒng)提供了路徑,一個根復(fù)合體可支持一個或多個PCI Express端口;端點(diǎn)設(shè)備(EP)是PCI Express事務(wù)的請求發(fā)起者(Requester)或應(yīng)答者(Compieter),端點(diǎn)設(shè)備又分為傳統(tǒng)端點(diǎn)、PCI Express端點(diǎn)和根復(fù)合體集成端點(diǎn);交換機(jī)(Switch)是由多個虛擬PCI-to-PCI橋設(shè)備組成的,其主要功能是為上游器件和下游器件的通信選擇路徑。[!--empirenews.page--]
PCI Express規(guī)范規(guī)定對于設(shè)備的設(shè)計采用分層結(jié)構(gòu),由下向上可分為物理層(Physical Layer)、數(shù)據(jù)鏈路層(Data Link Layer)和事務(wù)層(Transaction Layer),物理層又由邏輯子層和電氣子層組成。沿縱向來看,各層又可分為發(fā)送和接收2塊功能。發(fā)送功能塊構(gòu)成了設(shè)備的發(fā)送部分,處理向外的傳輸事務(wù);接收功能塊構(gòu)成了設(shè)備的接收部分,處理向內(nèi)的傳輸事務(wù)。典型PCI Express層次結(jié)構(gòu)如圖2所示。
作為PCI Express協(xié)議的最高層,事務(wù)層主要負(fù)責(zé)以下任務(wù),如:基于流水線的分割事務(wù)協(xié)議;處理事務(wù)包的機(jī)制;基于“信用”的流量控制;支持?jǐn)?shù)據(jù)完整性。數(shù)據(jù)鏈路層位于事務(wù)層和物理層之間,為事務(wù)層TLP在鏈路中的傳輸提供可靠的傳輸機(jī)制。數(shù)據(jù)鏈路層完成的主要任務(wù)包括傳遞TLP、錯誤檢測和裁決、初始化和電源管理、產(chǎn)生DLLP。
物理層位于PCI Express協(xié)議的最底層,決定了PCI Express總線接口的物理特性,如點(diǎn)對點(diǎn)串行連接、微差分信號驅(qū)動、熱撥插、可配置帶寬等。
2 PCI Express IP核設(shè)計
2.1 結(jié)構(gòu)設(shè)計
從層次上來講,PCI Express IP核實現(xiàn)了PCI Express協(xié)議定義的所有3個層次:事務(wù)、數(shù)據(jù)鏈路和物理的邏輯部分。從結(jié)構(gòu)上來講,PCI Express IP核主要由用戶接口模塊、發(fā)送數(shù)據(jù)包解析模塊、電源管理模塊、DLLP仲裁模塊、TLP仲裁模塊、重傳緩沖模塊、CRC生成模塊、幀信息生成模塊、數(shù)據(jù)鏈路層數(shù)據(jù)流仲裁模塊、LTSSM狀態(tài)機(jī)模塊、SKP發(fā)生模塊、LTSSM用有序集發(fā)生模塊、物理層數(shù)據(jù)流仲裁模塊、通道分配模塊、通道合并模塊、亂序模塊、解亂序模塊、PIPE接口模塊、接收數(shù)據(jù)包解析模塊和接收緩沖模塊組成。本文重點(diǎn)介紹用戶接口模塊和發(fā)送數(shù)據(jù)包解析模塊。
用戶接口模塊是用戶邏輯與PCI Express IP核進(jìn)行數(shù)據(jù)交互的橋梁,該模塊分為發(fā)送接口和接收接口2部分。一方面,用戶邏輯按照規(guī)定的時序通過該模塊把欲發(fā)送的數(shù)據(jù)發(fā)送到PCI Express鏈路;另一方面,PCI Express IP核接收來自PCI Express鏈路上的數(shù)據(jù),處理后通過該模塊發(fā)送給用戶邏輯。
發(fā)送數(shù)據(jù)包解析模塊的主要任務(wù)之一負(fù)責(zé)解析TLP包,并提供給TLP仲裁模塊進(jìn)行傳輸。
發(fā)送數(shù)據(jù)包解析模塊的第2個功能為實現(xiàn)流控機(jī)制。流控機(jī)制是PCI Express中最基本的機(jī)制之一,流控機(jī)制雖然是對本地緩存的一種有效保護(hù),但對TLP的收發(fā)性能有很大的影響。流量的初始化和更新均使用DLLP來完成;初始化使用FC Initl和FC Init2DLLP來完成;更新使用FC Updata DLLP來完成。[!--empirenews.page--]
2.2 接口設(shè)計
接口設(shè)計主要包括本地接口設(shè)計、配置寄存器擴(kuò)展接口設(shè)計和電源管理接口設(shè)計3部分。
本地接口用于用戶邏輯與遠(yuǎn)端PCI Express設(shè)備之間傳輸TLP,在本地接口總線上所傳輸?shù)腡LP均需滿足標(biāo)準(zhǔn)的PCI Express數(shù)據(jù)包格式。本地接口又分為發(fā)送接口和接收接口,PCI Express IP核通過發(fā)送接口在PCI Express鏈路上發(fā)送PCI Express包,通過接收接口從PCI Exp ress鏈路上接收PCI Express包。
配置寄存器擴(kuò)展接口主要用于實現(xiàn)額外的PCI能力項和配置寄存器。根據(jù)PCI Express規(guī)范,原則上只有跟PCI Express配置相關(guān)的寄存器才可以放入配置空間。本文設(shè)計的PCI Express IP核是PCI Express端點(diǎn)(Endpoint),故使用標(biāo)準(zhǔn)Type0配置空間,該空間占用了0x000~0x0 BF地址范圍,配置寄存器擴(kuò)展接口可使用空間的地址范圍從0x0C0~0xFFF。
3 PCI Express IP核功能驗證
驗證是比設(shè)計更重要的一個環(huán)節(jié),它穿越了整個設(shè)計流程,以便盡早發(fā)現(xiàn)設(shè)計中可能存在的錯誤和缺陷。功能驗證指驗證RTL代碼是否符合原始的設(shè)計需求和規(guī)格,在這里指驗證設(shè)計的PCI Express IP核是否符合PCI Express規(guī)范。本文采用基于虛擬平臺的驗證方法對設(shè)計的PCI Express IP核進(jìn)行協(xié)議層驗證和應(yīng)用層驗證。
3.1 協(xié)議層驗證
本文采用Denali公司的PureSuite測試工具對PCI Express IP核的協(xié)議層進(jìn)行驗證。PureSuite可以測試PCI Express設(shè)計的兼容性,包含完整的測試用例,且與PCI-SIG的兼容性驗收列表完全匹配。PureSuite覆蓋了物理層、數(shù)據(jù)鏈路層、事務(wù)層以及配置空間,包括定向測試和隨機(jī)測試,使用PureSpec總線功能模型對待測設(shè)計施加合適的激勵,該功能模型使用SOMA配置文件來約束功能模型的行為和特性。PureSu ite充分發(fā)揮了Denali的先進(jìn)特性,自動產(chǎn)生測試激勵,并報告測試結(jié)果。使用PureSuite對PCI Express IP核進(jìn)行兼容性測試主要需要四個步驟,測試平臺搭建、測試用例選擇、運(yùn)行仿真、查看結(jié)果。
測試平臺搭建主要包括對DUT的實例化以及創(chuàng)建約束DUT特性的SOMA文件。首先,編寫Testbench文件,把Denali的模型和監(jiān)視器以及DUT連接起來,并指定對應(yīng)的SOMA文件,分別對上述3個模塊進(jìn)行特性約束。其次,使用Denali的圖形化工具PureView創(chuàng)建DUT監(jiān)視器模塊及其SOMA文件,需要把PCI Express IP核的特性全部寫入該SOMA文件中。
由于Denali的PureSuite包含了一套完整的測試用例,其中有許多是DUT所不具備的能力,故在運(yùn)行仿真前需要選擇與DUT配套的測試用例,當(dāng)然也可以指定一些測試用例進(jìn)行單獨(dú)測試,以禁止運(yùn)行DUT所不具有的特性的測試用例。PureSuite提供5大類測試,包括事務(wù)層測試、PHY測試、數(shù)據(jù)鏈路層測試、配置空間測試和虛通道測試,本文的設(shè)計不包括PHY部分,故僅對DUT進(jìn)行了其余4類測試。
在進(jìn)行協(xié)議層仿真時,本文使用NC-SIM仿真工具在Linux系統(tǒng)下進(jìn)行。仿真平臺搭建好后,需要編寫運(yùn)行腳本文件。在編寫腳本文件中,主要包括對代碼進(jìn)行編譯、指定編譯器及其參數(shù)、指定仿真頂層等。一切準(zhǔn)備就緒后,便可以運(yùn)行仿真。在仿真過程中需要查看仿真波形,要在仿真頂層文件“tb.v”中把保存波形數(shù)據(jù)庫,在仿真過程中或仿真結(jié)束后用SimVision工具打開波形數(shù)據(jù)庫查看波形。
仿真過程結(jié)束后,PureSuite會生成一個測試結(jié)果文件puresuite.status,該文件包含了仿真運(yùn)行的詳細(xì)結(jié)果及統(tǒng)計結(jié)果,整個設(shè)計的4類測試項均測試成功。[!--empirenews.page--]
3.2 應(yīng)用層驗證
在應(yīng)用層驗證中主要驗證DUT是否能夠正確處理數(shù)據(jù)包,包括是否能夠正確發(fā)送用戶邏輯產(chǎn)生的數(shù)據(jù)包和是否能夠正確接收鏈路上的數(shù)據(jù)包,并路由到正確的目標(biāo)地址。同時,兼顧測試PCI Express IP核的部分協(xié)議兼容性。應(yīng)用層驗證需要為DUT搭建一個應(yīng)用環(huán)境,包括一個內(nèi)部SRAM,一片F(xiàn)LASH存儲器和通用輸入輸出接口。DUT的PHY使用Xilinx的GTP模型,主機(jī)模型使用由某公司提供的PCI Express根復(fù)合體仿真模型。
代碼覆蓋率是驗證結(jié)果的重要質(zhì)量標(biāo)志,有助于指導(dǎo)驗證計劃的改進(jìn)。通過QuestaSim 6.3d的代碼覆蓋率計算,如圖3所示,PCI Expre ss IP核的代碼覆蓋率達(dá)到了令人滿意的效果。
4 結(jié)語
攻克了基于信用的流量控制機(jī)制、電源管理機(jī)制、錯誤檢測與處理報告機(jī)制、LTSSM狀態(tài)機(jī)等多個技術(shù)難關(guān)后,本文完成了PCI Express IP核RTL代碼的設(shè)計。基于PureSuite測試套件及QuestaSim仿真工具對設(shè)計的IP核進(jìn)行了全方位的功能驗證,并對驗證過程發(fā)現(xiàn)的問題逐一進(jìn)行修正。仿真結(jié)果表明,設(shè)計的PCI Express IP核實現(xiàn)了預(yù)期功能,達(dá)到了設(shè)計技術(shù)指標(biāo)。