魏美榮,田 澤,3,王世中,王宣明
(1.航空工業西安航空計算技術研究所,陜西 西安 710068;2.西安翔騰微電子科技有限公司,陜西 西安 710068;3.集成電路與微系統設計航空科技重點實驗室,陜西 西安 710068)
1394總線具有高帶寬、低延遲和高可靠等特點,很好地滿足了航空電子系統的應用需求,支持異步傳輸和等時傳輸方式,其中事務層支持異步傳輸讀取、寫入、鎖定操作的CSR結構請求、響應,等時傳輸由應用程序直接驅動[1]。
隨著可編程邏輯器件的廣泛應用以及用戶對產品質量要求的提高,傳統的仿真驗證已難以滿足日益增長的可編程邏輯器件驗證需求[2]。研究表明,越是高層次的驗證效率越高,越是低層次的驗證則準確性越高[3]。UVM通用驗證方法學已經成為芯片驗證行業最新的驗證標準[4],基于系統級硬件描述語言SystemVerilog,具備面向對象編程的思想和功能[5-7],主要對結構相似的DUT(device under test)進行驗證。由于其具有面向編程語言的特點[8-10],可以將很多方法和函數封裝成不同的庫類使用,通過接口的形式將待測模塊與驗證平臺連接起來并且具有良好的可重用性[11]。
為有效模擬1394總線協議實現過程中軟硬件模型交互在宿主機上復雜的工作場景,文中以該芯片中的事務層功能驗證作為主要分析對象,對其驗證過程中數據處理關鍵技術進行研究,給出一種基于UVM的1394總線SoC芯片事務層協議處理功能驗證的解決方案。通過采用基于UVM的驗證分層結構,重點研究軟件程序和硬件組件激勵程序的執行效率和軟硬件驗證程序運行中占的比重,提取一套通用性強的軟硬件交互機制。該方案中采用軟硬件結合的方式可以簡化系統,提高系統的可靠性及性能,其中硬件部分能夠保證更加準確地使用預定義的網絡帶寬和預定義的幀周期,軟件又可以靈活地去操縱通信過程中的接收和發送,有效實現1394協議。
文中提到的1394總線SoC芯片是目前國內自研的首款集成了軍用1394協議、鏈路層協議、物理層協議以及嵌入式處理器的芯片,其設計復雜度高,不但對設計本身滿足復雜的功能和較高的性能提出要求,更對系統中軟硬件劃分、驗證和測試帶來巨大挑戰。文中在對1394總線SoC事物層系統功能進行分析的基礎上,制定了相應的驗證策略與方法,并詳細介紹了虛擬驗證平臺組件和工作原理。
圖1是1394總線SoC芯片體系架構,是一款集成了嵌入式處理器、PCI主機接口、JTAG接口、SDRAM控制器、外部總線控制器(EBC)、直接存儲器訪問控制器(DMA)、1394總線協議事務層、1394鏈路層、1394物理層、通用輸入輸出接口(GPIO)等資源的片上系統,還包含PLB總線和OPB總線兩種總線。可實現1394總線協議處理、以太網協議棧解析以及文件系統管理等功能,具備智能化、通用化、小型化的優點。文中重點對1394總線事務層協議處理功能特點進行分析,主要包含:

圖1 1394總線SoC芯片體系架構
(a)處理器驗證軟件主要功能:初始化SoC內部設備、按照不同工作場景對各相關設備進行配置、通過簡單運算產生激勵、處理各種事件中斷,對芯片內部狀態、數據進行判斷比較,打印各種信息;
(b)外部硬件驗證組件主要功能:通過軟硬件交互實現寄存器/存儲器訪問,利用隨機約束產生滿足1394協議通信事務數據包,并對收發數據包完成數據有效性檢查;
(c)1394事務層功能:支持PLB總線接口,訪問數據緩沖區DPRAM支持單拍和多拍操作;支持在不同數據傳輸速率S100B、S200B、S400B下,異步和等時傳輸模式數據通信機制;支持IEEE1394協議約定的異步包、等時/異步流包、物理層等數據包的收發等。
通過上述的系統功能分析,文中采用當前主流的UVM驗證方法學搭建系統驗證架構,并制定出一套通用性強的1394總線協議處理的軟硬件交互虛擬驗證方法。改善以往由處理器軟件負責的數據運算等大量占用仿真時間的任務,交給SystemVerilog語言搭建的硬件驗證組件去完成。而處理器軟件在虛擬驗證過程中只負責記錄一些簡單的狀態報告、寄存器配置等操作,由此提高處理器運行效率。文中闡述的虛擬驗證平臺組件具體描述如下:
1.2.1 虛擬驗證平臺組件
虛擬驗證平臺組件中的軟硬件控制信息交互區、數據交互區,具體描述如下:
(a)軟硬件控制信息交互區。
在整個SoC芯片虛擬驗證過程中,該交互區為處理器軟件和硬件驗證組件之間提供交互的控制狀態和數據交換區域,并存儲當前SoC的內部狀態信息。硬件驗證組件根據交互區偏移地址的數值,依照事先定義好的編碼含義驅動軟件對芯內部各設備進行配置,當軟件配置完成之后,并在軟件事件觸發區填寫相應值,供硬件驗證組件進行查詢。最后,由硬件驗證組件來進行狀態的判斷、數據運算,以此確定處理器軟件的下一步操作。其中,軟件通過EBC特定地址范圍來訪問該區,硬件驗證組件是通過存儲器的后門接口來訪問信息交互區的,軟硬件交互在EBC上的存儲地址范圍2’hD800_0000~32’hDFFF_FFFF,具體定義如表1所示。

表1 軟硬件控制信息交互區定義
(b)數據交互區。
數據交互區用于存儲硬件驗證組件產生的待發送的數據包和總線節點間通信接收到的數據包,該交互區存儲的數據類型包括異步發送數據交互區#1(AT)、等時發送數據交互區#2(IT)、異步接收數據交互區#3(AR)和等時接收數據交互區#4(IR)。處理器軟件和硬件驗證組件均可訪問此區域,文中數據交互區容量設計為128 MB,根據不同的驗證場景可將其進一步細分,其訪問地址如表2所示。

表2 數據交互區的地址分配
數據交互區#1、#2、#3和#4分別是映射SoC內部事務層的內部異步發送(AT)、等時發送(IT)異步接收(AR)、等時接收(IR)緩沖區。除了基地址不一致,其他所有信息保持一致。數據交互區#1、#2、#3、#4的存儲結構如圖2所示。

圖2 數據交互區xT和xR數據結構
在虛擬驗證過程中,數據交互區#1、#2內部的空間劃分、數據填寫完全由硬件驗證組件管理;處理器軟件只是負責把數據交互區#1、#2的內容復制到事務層內部異步發送(AT)、等時發送(IT)緩沖區對應位置上,不對數據交互區#1、#2進行任何寫操作。
1.2.2 工作原理
虛擬驗證平臺運行過程中,軟硬件交互機制工作過程如下:
(a)軟件觸發硬件機制:軟件根據表1的內容對信息交互區偏移地址為0x0的位置進行相應寫操作,硬件功能模型檢測到不同的寫操作之后,觸發相應的事件;
(b)硬件觸發軟件機制:硬件驗證組件根據表1的內容對信息交互區偏移地址為0x4的位置進行寫操作,然后觸發外部中斷。當軟件檢測到外部中斷后,讀取信息交互區偏移地址為0x4的數據,根據譯碼含義進行相應的軟件操作;
(c)虛擬驗證平臺的定時機制,利用SoC內部定時時鐘和硬件驗證組件的事件函數進行計時。
具體1394總線SoC協議處理事務層系統級發送和接收機制如圖3所示。

圖3 1394總線事務層發送和接收數據包機制
根據1394總線SoC事務層的功能特點設計的系統級部分主要測試用例如表3所示。

表3 測試向量
其中,針對寄存器測試在平臺中搭建擴展uvm_reg的寄存器模型來模擬主機讀寫行為,根據每個寄存的名稱、地址、讀寫屬性、復位值等信息生成register map,測試test中實現reg_model.regName.read(stautus,rddata)和reg_model.regName(stautus,wrdata)的形式進行后門直接訪問,不占用仿真時間,不僅可以避開總線、減少波形上顯示,還能加快仿真速度。
根據上節1394總線SoC協議處理芯片的驗證策略與工作原理,采用UVM高級驗證方法搭建了虛擬驗證平臺,如圖4所示。

圖4 基于UVM的1394總線SoC驗證平臺設計
其中,1394總線SoC芯片的RTL作為DUT與驗證環境通過接口相互連接,測試平臺包括環境配置組件、激勵產生、事務層agent、主機接口模型agent,1394總線鏈路節點UVC和計分板(Scoreboard)驅動器等UVM驗證組件,其構成的1394總線網絡拓撲環境能夠很好模擬1394總線請求節點主機驅動、1394總線響應節點的信號輸入輸出以及對DUT總線接口時序監控和信號采樣的完整性功能。整個驗證環境是由采用了面向對象的技術,通過類的繼承和多態性定義驗證組件和激勵數據,在testcase對象的創建過程中實例化不同的驗證環境,即實現了不同的testcase需要不同的驗證場景的要求,激勵是在仿真運行期間動態產生,數據生命周期結束后自動釋放內存空間。每一個testcase都是由主機接口模型、收發幀模型、驗證激勵庫等幾部分組成,并通過UVM_sequence_item類將不同的數據信息封裝進不同packet包,并向不同的agent中的sequencer發送transaction進行測試。transaction是基于事務級的數據,經過driver將數據按特定的協議和時序關系進行轉換,DUT輸出端的時序級信號通過monitor進行采集、解析并轉換為事務級數據遞給Scoreboard進行比較,如果錯誤則會打印UVM_ERROR信息,從而驗證不同功能的正確性。驗證環境與被測試對象是通過interface相連接,此外激勵和平臺結構分離、驗證組件間采用TLM標準接口,使整個平臺具有靈活配置、可重用、可擴展升級等優點,其主要驗證組件功能如下:
(a)主機接口Agent:實現處理器驗證軟件驅動層的功能,實現對“信息交互區”軟硬件事件觸發區寄存器讀寫操作,同時把事物層響應的信息轉化為硬件接口上的信號時序驅動,同時把硬件接口上數據狀態反饋給事物層;
(b)1394事務層Agent:實現“外部硬件驗證組件”和“1394總線事務層功能”相應關事務操作激勵,通過評估DUT的特性,確定data_item應用的屬性、約束、task和function,繼承uvc_sequence_item,達到描述事務級的功能屬性,并將1394總線節點通信過程的狀態信息傳遞給主機接口模型和記分板;
(c)1394總線鏈路節點UVC:實現1394總線節點鏈路層的功能,和物理層功能模型連接,模擬1394總線上的拓撲結構,并且提供鏈路層功能行為、處理網絡上傳遞過來的各種請求事務響應處理和統計,同時把內容結果傳遞給計分板進行比較分析;
(d)計分板(Scoreboard):DUT輸出端處理過的時序級信號通過主機接口模型agent、事務層agent和1394總線鏈路節點UVC的monitor進行采集和解析,將時序信號轉換為事務級數據傳遞給計分板,計分板將這些信息與預先期望的參考模型進行比較,從而驗證不同功能的正確性,以通過生成的log文件中的報告及斷言來檢測DUT的正確性[12-13]。
文中采用Linux運行環境QuestaSim10.2c功能仿真環境,通過SystemVerilog、Makefile編程語言及腳本語言,將編譯、仿真、測試選擇、覆蓋率收集等功能設計為自動化流程。以AT和AR通信測試向量仿真結果為例,運行UVM仿真平臺,得到的仿真結果波形如圖5所示。由VCS仿真的結果可知,當異步通信事務過程發送包和接收包個數分別是57和79,將所有測試向量測試完畢后,進行回歸測試并進行覆蓋率統計,將輸出結果進行打印,如圖6所示,整體覆蓋率已達到100%,滿足上述表3系統級規劃的測試功能需求,說明該模塊已通過設計驗證,達到了預期驗證目標。

圖6 覆蓋率報告
文中通過對1394總線SoC系統功能進行分析,在保證1394效率的基礎上,提出一種基于UVM的1394總線事物層軟硬件協同驗證方案,并制定出詳細的虛擬驗證策略與方法,搭建基于UVM的分層結構驗證平臺,給出具體工作原理。最后通過實際仿真測試和覆蓋率收集分析可知,該方案不僅有效滿足了系統級驗證總體需求,靈活完成1394協議解析,提高了驗證效率,增強了系統通用性,還具有易維護、可重用、高效率、靈活等特點。