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