文獻(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ū)ο筇匦?、支持約束隨機(jī)與斷言等功能的標(biāo)準(zhǔn)化硬件描述與驗(yàn)證語言SystemVerilog[1],。
對(duì)SoC等大型設(shè)計(jì)的驗(yàn)證多采用基于方法學(xué)的驗(yàn)證進(jìn)行,文獻(xiàn)[2]基于UVM建立測試平臺(tái)對(duì)RISC CPU進(jìn)行驗(yàn)證,,充分體現(xiàn)了基于方法學(xué)的驗(yàn)證對(duì)于大型設(shè)計(jì)的高效性,。對(duì)中小型設(shè)計(jì)的驗(yàn)證,相對(duì)于基于方法學(xué)搭建的測試平臺(tái),基于SystemVerilog搭建的測試平臺(tái)更具靈活性,、易操作性[3],。文獻(xiàn)[4]基于SystemVerilog開發(fā)高級(jí)驗(yàn)證環(huán)境,實(shí)現(xiàn)了測試平臺(tái)在定向測試和隨機(jī)測試的重用,,但對(duì)驗(yàn)證環(huán)境的配置實(shí)現(xiàn)介紹較少,;文獻(xiàn)[5]著重介紹了可重用測試平臺(tái)的層次化結(jié)構(gòu)及相應(yīng)的驗(yàn)證組件,但缺乏對(duì)實(shí)現(xiàn)可重用性的關(guān)鍵技術(shù)的討論,。本文以層次化思想為指導(dǎo),采用SystemVerilog語言實(shí)現(xiàn)可重用測試平臺(tái),。
1 可重用測試平臺(tái)實(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ā)送器對(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 可重用測試平臺(tái)實(shí)現(xiàn)
1.2.1 測試平臺(tái)層次化[7]
傳統(tǒng)的采用Verilog實(shí)現(xiàn)的測試平臺(tái),,設(shè)計(jì)者難以對(duì)測試環(huán)境進(jìn)行分層設(shè)計(jì),,往往將大部分測試組件放在一個(gè)大的文件中,這使得測試代碼難以維護(hù),、復(fù)用和擴(kuò)展,。所以ARINC429收發(fā)器IP核的測試平臺(tái)引入驗(yàn)證方法學(xué)中層次化的思想,結(jié)合設(shè)計(jì)規(guī)范與驗(yàn)證計(jì)劃,,采用SystemVerilog語言搭建層次化測試平臺(tái),,如圖2所示。
ARINC429收發(fā)器IP核測試平臺(tái)結(jié)構(gòu)自底向上為信號(hào)層,、命令層,、功能層、場景層和測試層等5個(gè)層次,。測試平臺(tái)的重用指的是驗(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)展。
測試平臺(tái)的頂層是測試層,,根據(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ì),輸出傳遞到檢查器,,檢查器通過對(duì)比記分板與監(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)輸出,;最底層信號(hào)層中待測設(shè)計(jì)ARINC429收發(fā)器IP核接收驅(qū)動(dòng)器驅(qū)動(dòng)的測試激勵(lì),并將輸出傳送到監(jiān)視器,。
層次化是測試平臺(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),,即待測設(shè)計(jì)(ARINC),、測試案例(Testcases)、測試平臺(tái)(Testbench)和待測設(shè)計(jì)的編譯庫文件(lib_files),。測試平臺(tái)(Testbench)包含測試環(huán)境(Env)與測試平臺(tái)執(zhí)行腳本(scripts)2個(gè)二級(jí)結(jié)構(gòu),。測試案例(Testcases)包含2個(gè)二級(jí)結(jié)構(gòu):直接測試(Direct)和隨機(jī)測試(Random),測試案例均以類的形式設(shè)計(jì),,在測試平臺(tái)的頂層,。測試平臺(tái)執(zhí)行腳本是以TCL語言編寫的擴(kuò)展名為.do的文件,用于測試工程的文件組織與仿真進(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)境類中包含了測試用例,,這限制了添加和修改測試用例的靈活性,不利于測試平臺(tái)的重用,。本架構(gòu)將測試用例從測試平臺(tái)的結(jié)構(gòu)中分離出來,,用測試用例類代替驗(yàn)證環(huán)境類作為頂層的對(duì)象[8]。
這種層次化的組織架構(gòu)為用戶提供了一個(gè)開發(fā)直接測試,、隨機(jī)測試案例的可編程方法,,有利于在整個(gè)測試平臺(tái)結(jié)構(gòu)上開發(fā)測試案例,實(shí)現(xiàn)測試平臺(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)簡化了對(duì)端口信號(hào)的處理,封裝了測試平臺(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)類再將其例化多次即可,,這極大地簡化了工作,,提高了驗(yàn)證組件的可重用性。
(2)回調(diào)
本測試平臺(tái)運(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)了測試平臺(tái)的最大可重用。
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ī)測試,,對(duì)待設(shè)計(jì)進(jìn)行充分驗(yàn)證,。通過對(duì)設(shè)計(jì)需求的深入分析后,得到如圖5所示的驗(yàn)證計(jì)劃。
使用Mentor Graphics的QuestaSim10.0c對(duì)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)行定向測試,,在測試平臺(tái)運(yùn)行了8個(gè)直接測試案例,然后進(jìn)行隨機(jī)測試,,在可重用測試平臺(tái)上運(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é)果說明了在完成定向測試后,,在該測試平臺(tái)上能正常運(yùn)行隨機(jī)測試,,完全實(shí)現(xiàn)了測試平臺(tái)驗(yàn)證組件,、驗(yàn)證環(huán)境的可重用。
為了提高驗(yàn)證效率,,本測試平臺(tái)還運(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é)果說明本測試平臺(tái)完成了對(duì)ARINC429收發(fā)器IP核功能的高效驗(yàn)證,。
3 結(jié)束語
本文以對(duì)ARINC429收發(fā)器IP核的驗(yàn)證為例,介紹了基于SystemVerilog的可重用測試平臺(tái)實(shí)現(xiàn),。在簡要介紹ARINC429收發(fā)器的功能與設(shè)計(jì)之后,,詳細(xì)介紹了采用 SystemVerilog 實(shí)現(xiàn)收發(fā)器IP核的可重用測試平臺(tái)的層次化結(jié)構(gòu)、工程組織架構(gòu)以及技術(shù)方法,;然后在驗(yàn)證計(jì)劃的指導(dǎo)下,,在該測試平臺(tái)上運(yùn)行定向測試和隨機(jī)測試共10個(gè)測試案例,代碼覆蓋率與功能覆蓋率均達(dá)到100%,。結(jié)合斷言,、覆蓋率驅(qū)動(dòng)驗(yàn)證等技術(shù)完成了對(duì)ARINC429收發(fā)器IP核高效的、有效的功能驗(yàn)證,。
在實(shí)際項(xiàng)目應(yīng)用中,,本測試平臺(tái)不僅完成了對(duì)ARINC429收發(fā)器的功能驗(yàn)證,在修改少許代碼后,,還完成了對(duì)協(xié)議相似的ARINC629總線的驗(yàn)證,。實(shí)踐表明,本測試平臺(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ī)測量與控制,,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.