魏美榮,田 澤,3,王世中,王宣明
(1.航空工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068;2.西安翔騰微電子科技有限公司,陜西 西安 710068;3.集成電路與微系統(tǒng)設(shè)計(jì)航空科技重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710068)
1394總線具有高帶寬、低延遲和高可靠等特點(diǎn),很好地滿足了航空電子系統(tǒng)的應(yīng)用需求,支持異步傳輸和等時(shí)傳輸方式,其中事務(wù)層支持異步傳輸讀取、寫入、鎖定操作的CSR結(jié)構(gòu)請(qǐng)求、響應(yīng),等時(shí)傳輸由應(yīng)用程序直接驅(qū)動(dòng)[1]。
隨著可編程邏輯器件的廣泛應(yīng)用以及用戶對(duì)產(chǎn)品質(zhì)量要求的提高,傳統(tǒng)的仿真驗(yàn)證已難以滿足日益增長(zhǎng)的可編程邏輯器件驗(yàn)證需求[2]。研究表明,越是高層次的驗(yàn)證效率越高,越是低層次的驗(yàn)證則準(zhǔn)確性越高[3]。UVM通用驗(yàn)證方法學(xué)已經(jīng)成為芯片驗(yàn)證行業(yè)最新的驗(yàn)證標(biāo)準(zhǔn)[4],基于系統(tǒng)級(jí)硬件描述語(yǔ)言SystemVerilog,具備面向?qū)ο缶幊痰乃枷牒凸δ躘5-7],主要對(duì)結(jié)構(gòu)相似的DUT(device under test)進(jìn)行驗(yàn)證。由于其具有面向編程語(yǔ)言的特點(diǎn)[8-10],可以將很多方法和函數(shù)封裝成不同的庫(kù)類使用,通過(guò)接口的形式將待測(cè)模塊與驗(yàn)證平臺(tái)連接起來(lái)并且具有良好的可重用性[11]。
為有效模擬1394總線協(xié)議實(shí)現(xiàn)過(guò)程中軟硬件模型交互在宿主機(jī)上復(fù)雜的工作場(chǎng)景,文中以該芯片中的事務(wù)層功能驗(yàn)證作為主要分析對(duì)象,對(duì)其驗(yàn)證過(guò)程中數(shù)據(jù)處理關(guān)鍵技術(shù)進(jìn)行研究,給出一種基于UVM的1394總線SoC芯片事務(wù)層協(xié)議處理功能驗(yàn)證的解決方案。通過(guò)采用基于UVM的驗(yàn)證分層結(jié)構(gòu),重點(diǎn)研究軟件程序和硬件組件激勵(lì)程序的執(zhí)行效率和軟硬件驗(yàn)證程序運(yùn)行中占的比重,提取一套通用性強(qiáng)的軟硬件交互機(jī)制。該方案中采用軟硬件結(jié)合的方式可以簡(jiǎn)化系統(tǒng),提高系統(tǒng)的可靠性及性能,其中硬件部分能夠保證更加準(zhǔn)確地使用預(yù)定義的網(wǎng)絡(luò)帶寬和預(yù)定義的幀周期,軟件又可以靈活地去操縱通信過(guò)程中的接收和發(fā)送,有效實(shí)現(xiàn)1394協(xié)議。
文中提到的1394總線SoC芯片是目前國(guó)內(nèi)自研的首款集成了軍用1394協(xié)議、鏈路層協(xié)議、物理層協(xié)議以及嵌入式處理器的芯片,其設(shè)計(jì)復(fù)雜度高,不但對(duì)設(shè)計(jì)本身滿足復(fù)雜的功能和較高的性能提出要求,更對(duì)系統(tǒng)中軟硬件劃分、驗(yàn)證和測(cè)試帶來(lái)巨大挑戰(zhàn)。文中在對(duì)1394總線SoC事物層系統(tǒng)功能進(jìn)行分析的基礎(chǔ)上,制定了相應(yīng)的驗(yàn)證策略與方法,并詳細(xì)介紹了虛擬驗(yàn)證平臺(tái)組件和工作原理。
圖1是1394總線SoC芯片體系架構(gòu),是一款集成了嵌入式處理器、PCI主機(jī)接口、JTAG接口、SDRAM控制器、外部總線控制器(EBC)、直接存儲(chǔ)器訪問(wèn)控制器(DMA)、1394總線協(xié)議事務(wù)層、1394鏈路層、1394物理層、通用輸入輸出接口(GPIO)等資源的片上系統(tǒng),還包含PLB總線和OPB總線兩種總線??蓪?shí)現(xiàn)1394總線協(xié)議處理、以太網(wǎng)協(xié)議棧解析以及文件系統(tǒng)管理等功能,具備智能化、通用化、小型化的優(yōu)點(diǎn)。文中重點(diǎn)對(duì)1394總線事務(wù)層協(xié)議處理功能特點(diǎn)進(jìn)行分析,主要包含:
圖1 1394總線SoC芯片體系架構(gòu)
(a)處理器驗(yàn)證軟件主要功能:初始化SoC內(nèi)部設(shè)備、按照不同工作場(chǎng)景對(duì)各相關(guān)設(shè)備進(jìn)行配置、通過(guò)簡(jiǎn)單運(yùn)算產(chǎn)生激勵(lì)、處理各種事件中斷,對(duì)芯片內(nèi)部狀態(tài)、數(shù)據(jù)進(jìn)行判斷比較,打印各種信息;
(b)外部硬件驗(yàn)證組件主要功能:通過(guò)軟硬件交互實(shí)現(xiàn)寄存器/存儲(chǔ)器訪問(wèn),利用隨機(jī)約束產(chǎn)生滿足1394協(xié)議通信事務(wù)數(shù)據(jù)包,并對(duì)收發(fā)數(shù)據(jù)包完成數(shù)據(jù)有效性檢查;
(c)1394事務(wù)層功能:支持PLB總線接口,訪問(wèn)數(shù)據(jù)緩沖區(qū)DPRAM支持單拍和多拍操作;支持在不同數(shù)據(jù)傳輸速率S100B、S200B、S400B下,異步和等時(shí)傳輸模式數(shù)據(jù)通信機(jī)制;支持IEEE1394協(xié)議約定的異步包、等時(shí)/異步流包、物理層等數(shù)據(jù)包的收發(fā)等。
通過(guò)上述的系統(tǒng)功能分析,文中采用當(dāng)前主流的UVM驗(yàn)證方法學(xué)搭建系統(tǒng)驗(yàn)證架構(gòu),并制定出一套通用性強(qiáng)的1394總線協(xié)議處理的軟硬件交互虛擬驗(yàn)證方法。改善以往由處理器軟件負(fù)責(zé)的數(shù)據(jù)運(yùn)算等大量占用仿真時(shí)間的任務(wù),交給SystemVerilog語(yǔ)言搭建的硬件驗(yàn)證組件去完成。而處理器軟件在虛擬驗(yàn)證過(guò)程中只負(fù)責(zé)記錄一些簡(jiǎn)單的狀態(tài)報(bào)告、寄存器配置等操作,由此提高處理器運(yùn)行效率。文中闡述的虛擬驗(yàn)證平臺(tái)組件具體描述如下:
1.2.1 虛擬驗(yàn)證平臺(tái)組件
虛擬驗(yàn)證平臺(tái)組件中的軟硬件控制信息交互區(qū)、數(shù)據(jù)交互區(qū),具體描述如下:
(a)軟硬件控制信息交互區(qū)。
在整個(gè)SoC芯片虛擬驗(yàn)證過(guò)程中,該交互區(qū)為處理器軟件和硬件驗(yàn)證組件之間提供交互的控制狀態(tài)和數(shù)據(jù)交換區(qū)域,并存儲(chǔ)當(dāng)前SoC的內(nèi)部狀態(tài)信息。硬件驗(yàn)證組件根據(jù)交互區(qū)偏移地址的數(shù)值,依照事先定義好的編碼含義驅(qū)動(dòng)軟件對(duì)芯內(nèi)部各設(shè)備進(jìn)行配置,當(dāng)軟件配置完成之后,并在軟件事件觸發(fā)區(qū)填寫相應(yīng)值,供硬件驗(yàn)證組件進(jìn)行查詢。最后,由硬件驗(yàn)證組件來(lái)進(jìn)行狀態(tài)的判斷、數(shù)據(jù)運(yùn)算,以此確定處理器軟件的下一步操作。其中,軟件通過(guò)EBC特定地址范圍來(lái)訪問(wèn)該區(qū),硬件驗(yàn)證組件是通過(guò)存儲(chǔ)器的后門接口來(lái)訪問(wèn)信息交互區(qū)的,軟硬件交互在EBC上的存儲(chǔ)地址范圍2’hD800_0000~32’hDFFF_FFFF,具體定義如表1所示。
表1 軟硬件控制信息交互區(qū)定義
(b)數(shù)據(jù)交互區(qū)。
數(shù)據(jù)交互區(qū)用于存儲(chǔ)硬件驗(yàn)證組件產(chǎn)生的待發(fā)送的數(shù)據(jù)包和總線節(jié)點(diǎn)間通信接收到的數(shù)據(jù)包,該交互區(qū)存儲(chǔ)的數(shù)據(jù)類型包括異步發(fā)送數(shù)據(jù)交互區(qū)#1(AT)、等時(shí)發(fā)送數(shù)據(jù)交互區(qū)#2(IT)、異步接收數(shù)據(jù)交互區(qū)#3(AR)和等時(shí)接收數(shù)據(jù)交互區(qū)#4(IR)。處理器軟件和硬件驗(yàn)證組件均可訪問(wèn)此區(qū)域,文中數(shù)據(jù)交互區(qū)容量設(shè)計(jì)為128 MB,根據(jù)不同的驗(yàn)證場(chǎng)景可將其進(jìn)一步細(xì)分,其訪問(wèn)地址如表2所示。
表2 數(shù)據(jù)交互區(qū)的地址分配
數(shù)據(jù)交互區(qū)#1、#2、#3和#4分別是映射SoC內(nèi)部事務(wù)層的內(nèi)部異步發(fā)送(AT)、等時(shí)發(fā)送(IT)異步接收(AR)、等時(shí)接收(IR)緩沖區(qū)。除了基地址不一致,其他所有信息保持一致。數(shù)據(jù)交互區(qū)#1、#2、#3、#4的存儲(chǔ)結(jié)構(gòu)如圖2所示。
圖2 數(shù)據(jù)交互區(qū)xT和xR數(shù)據(jù)結(jié)構(gòu)
在虛擬驗(yàn)證過(guò)程中,數(shù)據(jù)交互區(qū)#1、#2內(nèi)部的空間劃分、數(shù)據(jù)填寫完全由硬件驗(yàn)證組件管理;處理器軟件只是負(fù)責(zé)把數(shù)據(jù)交互區(qū)#1、#2的內(nèi)容復(fù)制到事務(wù)層內(nèi)部異步發(fā)送(AT)、等時(shí)發(fā)送(IT)緩沖區(qū)對(duì)應(yīng)位置上,不對(duì)數(shù)據(jù)交互區(qū)#1、#2進(jìn)行任何寫操作。
1.2.2 工作原理
虛擬驗(yàn)證平臺(tái)運(yùn)行過(guò)程中,軟硬件交互機(jī)制工作過(guò)程如下:
(a)軟件觸發(fā)硬件機(jī)制:軟件根據(jù)表1的內(nèi)容對(duì)信息交互區(qū)偏移地址為0x0的位置進(jìn)行相應(yīng)寫操作,硬件功能模型檢測(cè)到不同的寫操作之后,觸發(fā)相應(yīng)的事件;
(b)硬件觸發(fā)軟件機(jī)制:硬件驗(yàn)證組件根據(jù)表1的內(nèi)容對(duì)信息交互區(qū)偏移地址為0x4的位置進(jìn)行寫操作,然后觸發(fā)外部中斷。當(dāng)軟件檢測(cè)到外部中斷后,讀取信息交互區(qū)偏移地址為0x4的數(shù)據(jù),根據(jù)譯碼含義進(jìn)行相應(yīng)的軟件操作;
(c)虛擬驗(yàn)證平臺(tái)的定時(shí)機(jī)制,利用SoC內(nèi)部定時(shí)時(shí)鐘和硬件驗(yàn)證組件的事件函數(shù)進(jìn)行計(jì)時(shí)。
具體1394總線SoC協(xié)議處理事務(wù)層系統(tǒng)級(jí)發(fā)送和接收機(jī)制如圖3所示。
圖3 1394總線事務(wù)層發(fā)送和接收數(shù)據(jù)包機(jī)制
根據(jù)1394總線SoC事務(wù)層的功能特點(diǎn)設(shè)計(jì)的系統(tǒng)級(jí)部分主要測(cè)試用例如表3所示。
表3 測(cè)試向量
其中,針對(duì)寄存器測(cè)試在平臺(tái)中搭建擴(kuò)展uvm_reg的寄存器模型來(lái)模擬主機(jī)讀寫行為,根據(jù)每個(gè)寄存的名稱、地址、讀寫屬性、復(fù)位值等信息生成register map,測(cè)試test中實(shí)現(xiàn)reg_model.regName.read(stautus,rddata)和reg_model.regName(stautus,wrdata)的形式進(jìn)行后門直接訪問(wèn),不占用仿真時(shí)間,不僅可以避開總線、減少波形上顯示,還能加快仿真速度。
根據(jù)上節(jié)1394總線SoC協(xié)議處理芯片的驗(yàn)證策略與工作原理,采用UVM高級(jí)驗(yàn)證方法搭建了虛擬驗(yàn)證平臺(tái),如圖4所示。
圖4 基于UVM的1394總線SoC驗(yàn)證平臺(tái)設(shè)計(jì)
其中,1394總線SoC芯片的RTL作為DUT與驗(yàn)證環(huán)境通過(guò)接口相互連接,測(cè)試平臺(tái)包括環(huán)境配置組件、激勵(lì)產(chǎn)生、事務(wù)層agent、主機(jī)接口模型agent,1394總線鏈路節(jié)點(diǎn)UVC和計(jì)分板(Scoreboard)驅(qū)動(dòng)器等UVM驗(yàn)證組件,其構(gòu)成的1394總線網(wǎng)絡(luò)拓?fù)洵h(huán)境能夠很好模擬1394總線請(qǐng)求節(jié)點(diǎn)主機(jī)驅(qū)動(dòng)、1394總線響應(yīng)節(jié)點(diǎn)的信號(hào)輸入輸出以及對(duì)DUT總線接口時(shí)序監(jiān)控和信號(hào)采樣的完整性功能。整個(gè)驗(yàn)證環(huán)境是由采用了面向?qū)ο蟮募夹g(shù),通過(guò)類的繼承和多態(tài)性定義驗(yàn)證組件和激勵(lì)數(shù)據(jù),在testcase對(duì)象的創(chuàng)建過(guò)程中實(shí)例化不同的驗(yàn)證環(huán)境,即實(shí)現(xiàn)了不同的testcase需要不同的驗(yàn)證場(chǎng)景的要求,激勵(lì)是在仿真運(yùn)行期間動(dòng)態(tài)產(chǎn)生,數(shù)據(jù)生命周期結(jié)束后自動(dòng)釋放內(nèi)存空間。每一個(gè)testcase都是由主機(jī)接口模型、收發(fā)幀模型、驗(yàn)證激勵(lì)庫(kù)等幾部分組成,并通過(guò)UVM_sequence_item類將不同的數(shù)據(jù)信息封裝進(jìn)不同packet包,并向不同的agent中的sequencer發(fā)送transaction進(jìn)行測(cè)試。transaction是基于事務(wù)級(jí)的數(shù)據(jù),經(jīng)過(guò)driver將數(shù)據(jù)按特定的協(xié)議和時(shí)序關(guān)系進(jìn)行轉(zhuǎn)換,DUT輸出端的時(shí)序級(jí)信號(hào)通過(guò)monitor進(jìn)行采集、解析并轉(zhuǎn)換為事務(wù)級(jí)數(shù)據(jù)遞給Scoreboard進(jìn)行比較,如果錯(cuò)誤則會(huì)打印UVM_ERROR信息,從而驗(yàn)證不同功能的正確性。驗(yàn)證環(huán)境與被測(cè)試對(duì)象是通過(guò)interface相連接,此外激勵(lì)和平臺(tái)結(jié)構(gòu)分離、驗(yàn)證組件間采用TLM標(biāo)準(zhǔn)接口,使整個(gè)平臺(tái)具有靈活配置、可重用、可擴(kuò)展升級(jí)等優(yōu)點(diǎn),其主要驗(yàn)證組件功能如下:
(a)主機(jī)接口Agent:實(shí)現(xiàn)處理器驗(yàn)證軟件驅(qū)動(dòng)層的功能,實(shí)現(xiàn)對(duì)“信息交互區(qū)”軟硬件事件觸發(fā)區(qū)寄存器讀寫操作,同時(shí)把事物層響應(yīng)的信息轉(zhuǎn)化為硬件接口上的信號(hào)時(shí)序驅(qū)動(dòng),同時(shí)把硬件接口上數(shù)據(jù)狀態(tài)反饋給事物層;
(b)1394事務(wù)層Agent:實(shí)現(xiàn)“外部硬件驗(yàn)證組件”和“1394總線事務(wù)層功能”相應(yīng)關(guān)事務(wù)操作激勵(lì),通過(guò)評(píng)估DUT的特性,確定data_item應(yīng)用的屬性、約束、task和function,繼承uvc_sequence_item,達(dá)到描述事務(wù)級(jí)的功能屬性,并將1394總線節(jié)點(diǎn)通信過(guò)程的狀態(tài)信息傳遞給主機(jī)接口模型和記分板;
(c)1394總線鏈路節(jié)點(diǎn)UVC:實(shí)現(xiàn)1394總線節(jié)點(diǎn)鏈路層的功能,和物理層功能模型連接,模擬1394總線上的拓?fù)浣Y(jié)構(gòu),并且提供鏈路層功能行為、處理網(wǎng)絡(luò)上傳遞過(guò)來(lái)的各種請(qǐng)求事務(wù)響應(yīng)處理和統(tǒng)計(jì),同時(shí)把內(nèi)容結(jié)果傳遞給計(jì)分板進(jìn)行比較分析;
(d)計(jì)分板(Scoreboard):DUT輸出端處理過(guò)的時(shí)序級(jí)信號(hào)通過(guò)主機(jī)接口模型agent、事務(wù)層agent和1394總線鏈路節(jié)點(diǎn)UVC的monitor進(jìn)行采集和解析,將時(shí)序信號(hào)轉(zhuǎn)換為事務(wù)級(jí)數(shù)據(jù)傳遞給計(jì)分板,計(jì)分板將這些信息與預(yù)先期望的參考模型進(jìn)行比較,從而驗(yàn)證不同功能的正確性,以通過(guò)生成的log文件中的報(bào)告及斷言來(lái)檢測(cè)DUT的正確性[12-13]。
文中采用Linux運(yùn)行環(huán)境QuestaSim10.2c功能仿真環(huán)境,通過(guò)SystemVerilog、Makefile編程語(yǔ)言及腳本語(yǔ)言,將編譯、仿真、測(cè)試選擇、覆蓋率收集等功能設(shè)計(jì)為自動(dòng)化流程。以AT和AR通信測(cè)試向量仿真結(jié)果為例,運(yùn)行UVM仿真平臺(tái),得到的仿真結(jié)果波形如圖5所示。由VCS仿真的結(jié)果可知,當(dāng)異步通信事務(wù)過(guò)程發(fā)送包和接收包個(gè)數(shù)分別是57和79,將所有測(cè)試向量測(cè)試完畢后,進(jìn)行回歸測(cè)試并進(jìn)行覆蓋率統(tǒng)計(jì),將輸出結(jié)果進(jìn)行打印,如圖6所示,整體覆蓋率已達(dá)到100%,滿足上述表3系統(tǒng)級(jí)規(guī)劃的測(cè)試功能需求,說(shuō)明該模塊已通過(guò)設(shè)計(jì)驗(yàn)證,達(dá)到了預(yù)期驗(yàn)證目標(biāo)。
圖6 覆蓋率報(bào)告
文中通過(guò)對(duì)1394總線SoC系統(tǒng)功能進(jìn)行分析,在保證1394效率的基礎(chǔ)上,提出一種基于UVM的1394總線事物層軟硬件協(xié)同驗(yàn)證方案,并制定出詳細(xì)的虛擬驗(yàn)證策略與方法,搭建基于UVM的分層結(jié)構(gòu)驗(yàn)證平臺(tái),給出具體工作原理。最后通過(guò)實(shí)際仿真測(cè)試和覆蓋率收集分析可知,該方案不僅有效滿足了系統(tǒng)級(jí)驗(yàn)證總體需求,靈活完成1394協(xié)議解析,提高了驗(yàn)證效率,增強(qiáng)了系統(tǒng)通用性,還具有易維護(hù)、可重用、高效率、靈活等特點(diǎn)。