基于BFM測試和調試的Zynq SoC設計步驟及架構詳解_第1頁
基于BFM測試和調試的Zynq SoC設計步驟及架構詳解_第2頁
基于BFM測試和調試的Zynq SoC設計步驟及架構詳解_第3頁
基于BFM測試和調試的Zynq SoC設計步驟及架構詳解_第4頁
基于BFM測試和調試的Zynq SoC設計步驟及架構詳解_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于BFM測試和調試的ZynqSoC設計步驟及架構詳解AXI總線功能建模可簡化Zynq-7000AllProgrammableSoC組件及子系統的驗證工作。本文以賽靈思工具鏈為基礎,通過逐步指導實例,詳細介紹了該驗證方法。賽靈思在ZynqTM-7000AllProgrammableSoC中內置了功能強大的雙核ARM?Cortex?A9處理器,能讓用戶使用單個芯片即可構建自己的高性能片上系統。這樣軟件工程師可以充分利用包括GNU/Linux在內的豐富的ARM軟件生態系統,而硬件設計人員則可以在可編程邏輯架構中添加協處理器和數字信號處理功能。現在的問題在于驗證和調試這樣的片上系統,尤其是軟硬件之間的接口。例如,接口一邊受器件驅動器控制,一邊受中斷服務程序控制。隨著ARMCPU的問世,高級微控制器總線架構(AMBA?)以及更為重要的高級可擴展接口(AXI)已成為連接FPGA內部各組件的事實標準。AXI并非傳統意義上的總線,而是使用交叉開關矩陣和仲裁,在多個主從機模塊間實現基于事務的互聯。AXI有三種類型,分別是AXI4(常規類型)、AXI4-Lite和AXI4-Stream。賽靈思ISE?14.2版本和Vivado?2012.2版本設計工具套件配套提供v1.06aAXI互聯功能,同時可與AXI3和AXI4相兼容。總線功能建模(BFM)是一種非常適用于片上系統設計的電子系統級驗證方法。BFM的價值在于能夠抽象總線互聯并提供高級API,以實現用于激勵RTL模塊的測試平臺,從而幫助用戶節省寶貴的時間。BFM可幫助設計人員驗證與Zynq-7000器件的處理系統相連接的RTL模塊。在賽靈思ISim這樣的RTL仿真器內部運行時,BFM可幫助用戶按照自下而上的設計流程,一次驗證一個或多個模塊。賽靈思與Cadence通力合作,提供了一種在業經驗證的行業標準基礎上構建的驗證環境(AXIBFM)。AXIBFM已經投入市場將近兩年時間,近期已升級到2.1版本。下面深入了解這種強大的系統級驗證方法及采用這種方法所涉及的步驟。首先列出構建一個能夠工作的BFM驗證環境所需的工具和組件,其中包括一個能夠為使用BFM的新手提供幫助的文檔列表。然后介紹使用AXIBFM驗證RTL模塊的驗證流程。工程師掌握這種方法最好的方式就是參考實例,所以最后本文將一步一步地介紹使用賽靈思ISE設計環境的詳細情況。本文選擇的實例是一個由一個AXI4主模塊和一個連接BRAM的存儲控制器組成的簡單設計,可作為下一個BFM驗證項目的起點。這個實例可通過下列網址,從MissingLinkElectronics的開發人員專區下載:。使用步驟總線功能模型(BFM)能夠顯著降低SoC設計驗證階段的工作量。這種方法可幫助您直接將RTL模塊作為一個被測器件(DUT)連接到BFM,激勵并核對高抽象層面上DUT的響應,整個過程無需探究AXI互聯的細節。賽靈思和Cadence共同推出的AXIBFM的一大主要優勢在于可以避免開發用于匹配AXI4-LiteIP接口(IPIF)的代碼,也無需手動編寫RTL模塊測試臺。AXIBFM緊密集成在FPGA設計環境中。使用賽靈思PlatformStudio(XPS)就可為嵌入式系統生成頂層HDL,并為BFM仿真項目生成大部分必備文件。XPS還可免除為DUT正確連線的負擔。您可使用“fush.sh”腳本將BFM項目與賽靈思ISim集成在一起,完成最終測試程序的編寫。DUT由一個或多個構成RTL模塊的VHDL或Verilog文件組成。RTL模塊的AXI4接口(可以是AXI4、AXI4-Stream或AXI4-Lite)通過Verilog“Testbench.v”內部的AXIBFM連接,然后與頂層設計文件“Test.v”中的測試程序合并。該測試程序用于驅動和檢查DUT。這樣做的好處在于可以不探究AXI4的所有細節。用戶可以使用分區在功能API和通道API兩個抽象層面上的簡便易用、豐富多樣的API編寫自己的測試程序。這種API采用的是VerilogHDL語言。不過很快就可以發現,這種API不僅適合HDL設計人員,而且也非常適用于有固件或驅動程序開發經驗的軟件工程師。甚至更好的是,由于AXIBFM完全理解AXI4、AXI4-Lite和AXI4-Stream協議,它會執行額外的檢查,而且在仿真過程中,可以看到一旦RTL模塊“誤解”AXI4,就會發出告警。這個過程能夠在很大程度上幫助用戶成長為AXI4專家。AXIBFM環境不局限于驗證單個RTL模塊,而且能夠高效地驗證多個模塊。因此建議使用AXIBFM驗證組件、子系統乃至整個片上系統,并且使用AXIBFM進行回歸測試。但是需要提醒一下的是,在所有復雜的驗證項目中,往往出現“只見樹木,不見森林”的情況,所以應該和同事共同核查(或自己核查)仿真過程中測試的功能與硬件中使用的功能是否相同。AXI4BFM和XPSAXI4BFM不僅可用于驗證單個RTL模塊內核的總線接口,也適用于仿真整個嵌入式設計的總線事務。AXIBFM為AXI3、AXI4、AXI3-Lite、AXI4-Lite和AXI4-Streaming主從模塊提供模型。根據不同類型的RTL模塊的需要,可定制不同的AXI接口。雖然常規的AXI3和AXI4接口是基于突發模式,可允許使用不同的數據寬度和亂序事務處理,對只有來自軟件的寄存器式訪問的較簡單RTL模塊,AXI3-Lite版本足以使用。用于處理面向信息流的數據(比如來自攝像頭接口的視頻數據)的硬件,往往采用AXI-Stream協議,因這種協議與常規的AXI接口相比,更適合管理流數據的特征。不過本文介紹的實例的重點是常規AXI4接口以及AXI4總線的BFM的使用。在XPS中使用其它類型的AXI接口測試RTL模塊的工作流程完全一樣,讀者可將本文的介紹當作使用這些接口進行測試的指南。下面將展示如何在XPS里設置BFM,從而有效地生成HDL代碼,用于實例化DUT和BFM,并在她們之間建立互連。這種方法可以最大限度地減輕手動編寫互聯HDL代碼的工作量,這種工作極為耗時。生成的測試系統由待測試的外設和提供總線激勵的BFM共同組成。這樣,使用BFM主模塊,就可以仿真系統中總線主設備一般會發起的總線傳輸,然后檢查連接的RTL從模塊,看是否行為正確。另一方面,可以使用從BFM驗證采用AXI主接口的RTL模塊的行為正確與否。在本文接下來的內容中,將創建一個由一個從模塊和一個AXI4MasterBFM組成的簡單系統,后者用于為從模塊提供激勵。AXI4架構簡介在開始介紹實例之前,先簡單了解一下AXI4總線架構,有關詳細介紹請參閱AXI總線規范。[2]AXI4總線系統分為五個獨立的事務通道:寫地址通道、寫數據通道、寫響應通道、讀地址通道和讀數據通道。地址通道除了傳輸實際的源地址或目標地址外,還傳輸發生在相關數據通道上的突發傳輸的類型信息。信息的內容包括突發的傳輸數量、數據的大小和突發的ID。對每一次突發,從模塊都會利用經地址通道傳輸的ID向主模塊發送響應,通知主模塊本次事務處理是否成功。在這五條通道上,由READY和VALID握手信號對來控制實際的數據傳輸。正如這兩個信號的名稱意義所示,當總線上的數據有效時,發送側斷言VALID。當接收側做好接收數據的準備時,接收側斷言READY。實際的事務處理發生在總線時鐘的上升沿,此時READY和VALID都處于高電平。在自行實現對AXI總線的訪問時,務必記住VALID信號的斷言不能取決于READY信號,否則會陷入死鎖。在XPS中創建簡單測試系統現在我們已經對AXI4總線系統有了基本的理解,可以開始在XPS中創建簡單測試系統了,并觀察BFM和AXI總線的行為。這個系統由一個AXI4MasterBFM、一個BlockRAM控制器、一個BlockRAM和一個用于連接所有組件的AXI互聯組成。下面是創建這個AXIBFM實例所需的工具列表:?賽靈思ISE14.2版本或更高版本,配備XPS14.2版本?賽靈思ISim(14.2版本)?AXIBFM的許可證密鑰(部件號碼DO-AXI-BFM)?賽靈思DS824,“AXIBFM2.1版本”(替代賽靈思UG783)?賽靈思DS768,“LogiCORETMIPAXI互聯(1.06a版本)”?AXIBFM實例項目,網址:和用XPS創建任何新的嵌入式設計一樣,先從創建一個新的空白項目開始,將其命名為“bfm_system”。不過這里沒有使用MicroBlaze?處理器或Zynq-7000AllProgrammableSoC,而是實例化一個AXI4MasterBFM,用于在AXI4總線上發起事務處理任務。可以在XPS中IP內核樹的驗證節點上找到AXI4MasterBFM。下面添加一個在“BusandBridge”分類下的AXI4InterconnectIP,再添加一個AXIBRAMController和一個相關聯的BlockRAM,你可以在XPSIP標簽中“MemoryandMemoryController”分類下找到這兩個IP。在XPS的Bus視圖中將這些IP組件相互連接,讓系統看上去與圖2所示的一樣。在XPS的Ports標簽中,將AXI互聯的時鐘和復位端口配置成external,將BRAM控制器和MasterBFM的時鐘端口也連接到外部時鐘端口。可讓AXIBRAM控制器的“ECC_Interrupt”和“ECC_UE”端口保持未連接,因為不需要使用ECC功能。設置時鐘端口的頻率為100MHz。最終系統應和圖3所示的一樣。接下來在XPS的Addresses標簽中設置BRAM控制器的地址范圍。這樣還可以確定BRAM模塊的大小。這里創建一個32K的BlockRAM,起始地址為0x00000000。現在基本系統設置已經完成,點擊工具條左邊的“GenerateHDLFiles”就可以讓XPS生成HDL代碼。這樣可以在XPS項目文件夾中創建一個名為Simulation的目錄。如果想在XPS中修改系統,重新生成HDL代碼,務必將手工添加到文件夾中的文件進行備份,否則XPS在生成仿真文件時,這些文件將被完全覆蓋。在Simulation文件夾中名為“behaviorial”的文件夾里,我們可以找到與XPS設計名字完全相同的Verilog或者VHDL文件(根據配置設置中選擇的語言),該文件名為“bfm_system.vhd”。這就是我們系統的頂層,其中包含剛剛在XPS中實現的所有實例化組件和連接。運行仿真根據AXIBFM說明書的建議,應在提供了時鐘和復位信號的測試頂層模塊中例化該系統,再從獨立的測試模塊發起AXI總線上的事務處理任務。(這種方法的結構見圖1所示)。在總線上發起事務處理的方法是從AXIBFMAPI調用對應的Verilog任務。API分為通道層和功能層。使用通道層API可在不同的通道上發起傳輸,比如讀地址和寫地址通道,這樣我們就能單獨控制寫突發或者讀突發的每一個階段。使用功能層API可方便地啟動整個數據傳輸,比如讀突發或者寫突發。另外功能層API還提供可改變BFM設置的Verilog功能,比如修改ISim控制臺上的輸出冗余。DS824詳細介紹了該API,并提供一個編程人員參考。使用Verilog的“。”運算符,通過引用BFM實例,在測試程序中調用API的函數和任務。圖4就是這種函數調用的例子。完整的代碼包含在與本文配套的項目包中,并提供shell腳本,用于編譯實例并運行ISim查看波形。請閱讀項目包中的README.txt文件了解如何使用該腳本。運行該腳本即可打開ISim主窗口。加載ISim中的“axi_waveforms.wcfg”文件,仿真系統15微秒,即可查看AXI總線各通道上的信號。測試程序首先對BlockRAM發起256個32位字符組成的寫突發,然后讀回數據。通過搜索上升時鐘沿(在寫地址通道,s_axi_awready和s_axi_awvalid信號同時處于高電平),我們可以看到用于描述突發流向的信息被發送給BlockRAM控制器。主機通過斷言s_axi_wlast信號為突發的最后一個字符做上標簽。跟隨寫突發,從模塊——即這里的BlockRAM控制器——會通過寫響應通道(圖5)發出事務處理成功的信號。可針對讀突發檢查相同的結構。描

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論