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