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