文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2015)02-0061-04
0 引言
隨著集成電路設(shè)計復(fù)雜性的增加,驗證的難度也日益加大。傳統(tǒng)的基于Verilog的驗證效率低、可重用性差,為此,工業(yè)界推出了具有面向?qū)ο筇匦浴⒅С旨s束隨機與斷言等功能的標(biāo)準(zhǔn)化硬件描述與驗證語言SystemVerilog[1]。
對SoC等大型設(shè)計的驗證多采用基于方法學(xué)的驗證進(jìn)行,文獻(xiàn)[2]基于UVM建立測試平臺對RISC CPU進(jìn)行驗證,充分體現(xiàn)了基于方法學(xué)的驗證對于大型設(shè)計的高效性。對中小型設(shè)計的驗證,相對于基于方法學(xué)搭建的測試平臺,基于SystemVerilog搭建的測試平臺更具靈活性、易操作性[3]。文獻(xiàn)[4]基于SystemVerilog開發(fā)高級驗證環(huán)境,實現(xiàn)了測試平臺在定向測試和隨機測試的重用,但對驗證環(huán)境的配置實現(xiàn)介紹較少;文獻(xiàn)[5]著重介紹了可重用測試平臺的層次化結(jié)構(gòu)及相應(yīng)的驗證組件,但缺乏對實現(xiàn)可重用性的關(guān)鍵技術(shù)的討論。本文以層次化思想為指導(dǎo),采用SystemVerilog語言實現(xiàn)可重用測試平臺。
1 可重用測試平臺實現(xiàn)
1.1 ARINC429收發(fā)器IP核簡介
在現(xiàn)代飛機上,多采用ARINC429總線進(jìn)行通信。根據(jù)ARINC429總線規(guī)范[6],設(shè)計ARINC429收發(fā)器,實現(xiàn)上位機與機載設(shè)備的通信,并將其IP化,便于復(fù)用。ARINC429收發(fā)器采用自頂向下的模塊化設(shè)計,設(shè)計框圖如圖1所示。
ARINC429收發(fā)器的功能具體包括:(1)實現(xiàn)全局異步復(fù)位;(2)不同的速率模式通信;(3)異步FIFO的緩存;(4)發(fā)送器發(fā)送立即、循環(huán)數(shù)據(jù);(5)發(fā)送器對接收的RS232數(shù)據(jù)正確處理;(6)發(fā)送器將RS232正確轉(zhuǎn)換成ARINC429數(shù)據(jù)發(fā)出;(7)接收器正確處理接收的ARINC429數(shù)據(jù);(8)接收器將ARINC429數(shù)據(jù)轉(zhuǎn)換成RS232數(shù)據(jù)發(fā)出等。
1.2 可重用測試平臺實現(xiàn)
1.2.1 測試平臺層次化[7]
傳統(tǒng)的采用Verilog實現(xiàn)的測試平臺,設(shè)計者難以對測試環(huán)境進(jìn)行分層設(shè)計,往往將大部分測試組件放在一個大的文件中,這使得測試代碼難以維護(hù)、復(fù)用和擴(kuò)展。所以ARINC429收發(fā)器IP核的測試平臺引入驗證方法學(xué)中層次化的思想,結(jié)合設(shè)計規(guī)范與驗證計劃,采用SystemVerilog語言搭建層次化測試平臺,如圖2所示。
ARINC429收發(fā)器IP核測試平臺結(jié)構(gòu)自底向上為信號層、命令層、功能層、場景層和測試層等5個層次。測試平臺的重用指的是驗證環(huán)境的重用,即不同的測試案例能夠重用同一驗證環(huán)境。驗證環(huán)境由包含配置器和發(fā)生器的場景層、包含記分板與檢查器的功能層以及包含驅(qū)動器、斷言和監(jiān)視器的命令層組成。覆蓋率收集器通過收集統(tǒng)計代碼與功能點的覆蓋信息可以衡量測試在滿足驗證計劃要求方面的進(jìn)展。
測試平臺的頂層是測試層,根據(jù)驗證計劃開發(fā)不同的測試案例,通過信箱(mailbox)將信息傳遞到場景層;場景層中配置器為測試環(huán)境配置參數(shù),通過將參數(shù)傳遞給發(fā)生器和驅(qū)動器實現(xiàn)環(huán)境參數(shù)的配置,發(fā)生器則根據(jù)收到的配置信息生成測試激勵;功能層包含記分板和檢查器,其中記分板主要包含參考模型,參考模型的輸入為發(fā)生器生成的激勵,輸出傳遞到檢查器,檢查器通過對比記分板與監(jiān)視器的輸出信息來判斷待測設(shè)計正確與否;命令層中驅(qū)動器接收發(fā)生器生成的測試激勵與配置器的配置信息,并將激勵驅(qū)動到待測設(shè)計ARINC429收發(fā)器IP核,斷言和監(jiān)視器用于監(jiān)視DUT的相應(yīng)輸出;最底層信號層中待測設(shè)計ARINC429收發(fā)器IP核接收驅(qū)動器驅(qū)動的測試激勵,并將輸出傳送到監(jiān)視器。
層次化是測試平臺實現(xiàn)可重用的基本結(jié)構(gòu),通過層次劃分,將各驗證組件按功能編成不同的類(class),便于重用、修改與擴(kuò)展。
1.2.2 工程組織架構(gòu)
本驗證工程采用層次化的組織架構(gòu),工程組織架構(gòu)如圖3所示。
本驗證實例中驗證工程名為“ARINC_top”,包含4個主要的一級結(jié)構(gòu),即待測設(shè)計(ARINC)、測試案例(Testcases)、測試平臺(Testbench)和待測設(shè)計的編譯庫文件(lib_files)。測試平臺(Testbench)包含測試環(huán)境(Env)與測試平臺執(zhí)行腳本(scripts)2個二級結(jié)構(gòu)。測試案例(Testcases)包含2個二級結(jié)構(gòu):直接測試(Direct)和隨機測試(Random),測試案例均以類的形式設(shè)計,在測試平臺的頂層。測試平臺執(zhí)行腳本是以TCL語言編寫的擴(kuò)展名為.do的文件,用于測試工程的文件組織與仿真進(jìn)度的自動控制。
相對于標(biāo)準(zhǔn)的層次化工程組織架構(gòu),本架構(gòu)做了改進(jìn)。標(biāo)準(zhǔn)的層次化工程組織架構(gòu)中,頂層模塊中例化了環(huán)境類,環(huán)境類中包含了測試用例,這限制了添加和修改測試用例的靈活性,不利于測試平臺的重用。本架構(gòu)將測試用例從測試平臺的結(jié)構(gòu)中分離出來,用測試用例類代替驗證環(huán)境類作為頂層的對象[8]。
這種層次化的組織架構(gòu)為用戶提供了一個開發(fā)直接測試、隨機測試案例的可編程方法,有利于在整個測試平臺結(jié)構(gòu)上開發(fā)測試案例,實現(xiàn)測試平臺最大的可重用。
1.2.3 關(guān)鍵技術(shù)
在采用SystemVerilog語言實現(xiàn)ARINC429收發(fā)器IP核的可重用驗證平臺時,使用了以下關(guān)鍵技術(shù):
(1)接口及虛接口
接口(Interface)簡化了對端口信號的處理,封裝了測試平臺各組件間通信所需的信號,提高了設(shè)計可重用性。
在本驗證實例的驅(qū)動類(Driver)中使用了虛接口,虛接口類型定義代碼如下:
Typedef virtual if_arinc429.OUTP vif_429rx;
Typedef virtual if_arinc429.INP vif_429tx;
通過使用虛接口,不必對每個通道都編寫一個Driver,而只需編寫一個驅(qū)動類再將其例化多次即可,這極大地簡化了工作,提高了驗證組件的可重用性。
(2)回調(diào)
本測試平臺運用了回調(diào)技術(shù)[9],回調(diào)流程如圖4所示。
驗證實例在Driver類中運用前回調(diào)技術(shù)[9]來為待測設(shè)計ARINC429收發(fā)器IP核注入故障(100個數(shù)據(jù)隨意丟棄1個),實現(xiàn)ARINC429接收錯誤的定向測試,不修改其他測試代碼,實現(xiàn)了測試平臺的最大可重用。
2 測試運行及結(jié)果
2.1 測試運行
整個設(shè)計的測試激勵主要由兩部分組成:由計算機通過串口發(fā)出的數(shù)據(jù),以及向ARINC429 接收通道發(fā)送的數(shù)據(jù)。兩部分激勵是并行的,所以整個驗證計劃也是并行的。先進(jìn)行定向測試,以保證驗證過程具有一定的可復(fù)現(xiàn)性;然后進(jìn)行隨機測試,對待設(shè)計進(jìn)行充分驗證。通過對設(shè)計需求的深入分析后,得到如圖5所示的驗證計劃。
使用Mentor Graphics的QuestaSim10.0c對ARINC429收發(fā)器IP核進(jìn)行仿真測試。根據(jù)驗證計劃,編寫了10個測試案例:(1)通道速率為高速的直接測試;(2)通道速率為低速的直接測試;(3)發(fā)送循環(huán)數(shù)據(jù)的直接測試;(4)發(fā)送立即數(shù)據(jù)的直接測試;(5)發(fā)送速率錯誤直接測試;(6)接收校驗位錯誤的數(shù)據(jù)直接測試;(7)接收速率錯誤的直接測試,(8)最大速率下的流量測試;(9)發(fā)送隨機測試;(10)接收隨機測試。當(dāng)測試不同的測試案例時,執(zhí)行相應(yīng)的腳本,實現(xiàn)自動化測試。
2.2 測試結(jié)果
按照驗證計劃,先進(jìn)行定向測試,在測試平臺運行了8個直接測試案例,然后進(jìn)行隨機測試,在可重用測試平臺上運行了2個隨機測試案例。隨機測試中ARINC429接收隨機測試結(jié)果如圖6所示。
圖6(a)為測試仿真波形圖,圖中三角形指示斷言失敗,因為這次接收隨機測試中,發(fā)生器生成了校驗位錯誤的數(shù)據(jù),在ARINC429接收模塊中該數(shù)據(jù)字被舍棄,斷言檢查器檢測到兩路輸入數(shù)據(jù)不一致,即斷言失敗。這證明ARINC429收發(fā)器能按照設(shè)計要求舍棄錯誤數(shù)據(jù),正確處理數(shù)據(jù)。圖6(b)為代碼覆蓋率報告,rec429模塊與afifo模塊因為完備狀態(tài)機下的default語句無法覆蓋,故代碼覆蓋率沒有達(dá)到100%,其他模塊代碼覆蓋率均達(dá)到100%,功能覆蓋率達(dá)到100%,符合測試要求。測試結(jié)果說明了在完成定向測試后,在該測試平臺上能正常運行隨機測試,完全實現(xiàn)了測試平臺驗證組件、驗證環(huán)境的可重用。
為了提高驗證效率,本測試平臺還運用約束隨機自動產(chǎn)生測試集,采用SVA斷言實現(xiàn)錯誤的查找與快速定位,結(jié)合覆蓋率驅(qū)動驗證明確驗證指標(biāo)。10個測試案例的測試結(jié)果說明本測試平臺完成了對ARINC429收發(fā)器IP核功能的高效驗證。
3 結(jié)束語
本文以對ARINC429收發(fā)器IP核的驗證為例,介紹了基于SystemVerilog的可重用測試平臺實現(xiàn)。在簡要介紹ARINC429收發(fā)器的功能與設(shè)計之后,詳細(xì)介紹了采用 SystemVerilog 實現(xiàn)收發(fā)器IP核的可重用測試平臺的層次化結(jié)構(gòu)、工程組織架構(gòu)以及技術(shù)方法;然后在驗證計劃的指導(dǎo)下,在該測試平臺上運行定向測試和隨機測試共10個測試案例,代碼覆蓋率與功能覆蓋率均達(dá)到100%。結(jié)合斷言、覆蓋率驅(qū)動驗證等技術(shù)完成了對ARINC429收發(fā)器IP核高效的、有效的功能驗證。
在實際項目應(yīng)用中,本測試平臺不僅完成了對ARINC429收發(fā)器的功能驗證,在修改少許代碼后,還完成了對協(xié)議相似的ARINC629總線的驗證。實踐表明,本測試平臺具有良好的可重用性。
參考文獻(xiàn)
[1] IEEE.IEEE standard for SystemVerilog-unified hardware design, specification, and verification language-IEEE [S].IEEE,2009.
[2] 謝崢,王騰,雍珊珊,等.一種基于UVM面向RISC CPU的
可重用功能驗證平臺[J].北京大學(xué)學(xué)報(自然科學(xué)版),2014,50(2):221-227.
[3] 劉芳,謝崢,連志斌,等.一種可重構(gòu)的通用總線接口驗證平臺的研究及實現(xiàn)[J].電子器件,2011,34(3):350-354.
[4] KEAVENEY M,MCMAHON A,O’KEEFFE N,et al.The development of advanced verification environments using System-Verilog[C].The 16th Signals and Systems Conference.ISSC 2008.Galway,Ireland,2008.
[5] 山蕊,蔣林,李濤.基于SystemVerilog的可重用驗證平臺[J].電子技術(shù)應(yīng)用,2013,39(5):128-131.
[6] Aeronautical Radio.ARINC specification 429[S].AeronauticalRadio Inc,2012.
[7] 王鵬,邵偉,姜承翔,等.基于ARINC629的層次化驗證平臺設(shè)計[J].計算機測量與控制,2014,22(6):1827-1829.
[8] 鐘文楓.SystemVerilog與功能驗證[M].北京:機械工業(yè)出版社,2010.
[9] SPEAR C,TUMBUSH G.SystemVerilog for verification(3rd ed)[M].Springer,2012.