文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.04.008
中文引用格式: 王國軍,景為平. 基于覆蓋率驅(qū)動的高頻RFID芯片驗(yàn)證平臺設(shè)計[J].電子技術(shù)應(yīng)用,2016,42(4):28-30,34.
英文引用格式: Wang Guojun,Jing Weiping. Design of verification platform for high frequency RFID chip based on coverage-driven[J].Application of Electronic Technique,2016,42(4):28-30,34.
0 引言
隨著芯片設(shè)計復(fù)雜度的不斷提升,驗(yàn)證工作占據(jù)了越來越多的開發(fā)時間。為了能夠盡快將產(chǎn)品推向市場,有效的驗(yàn)證方法就顯得越來越重要。所謂有效的驗(yàn)證方法,即能夠在較短的時間內(nèi),利用精確的測試激勵,盡可能驗(yàn)證芯片的正確性和發(fā)現(xiàn)設(shè)計中深層次的設(shè)計缺陷。所以如何產(chǎn)生精確高效的測試激勵就成為了驗(yàn)證工作當(dāng)中的關(guān)鍵挑戰(zhàn)[1]。
1 覆蓋率驅(qū)動激勵產(chǎn)生算法的驗(yàn)證技術(shù)
根據(jù)測試激勵產(chǎn)生的方法,可以將測試激勵分為定向測試激勵和隨機(jī)測試激勵。定向測試激勵是驗(yàn)證工程師針對被測設(shè)計(Design Under Test,DUT)期望驗(yàn)證的功能點(diǎn)進(jìn)行人工編寫的激勵,這種方法直接、準(zhǔn)確,但是對于較大規(guī)模的設(shè)計來說,工程師很難發(fā)現(xiàn)所有的邊界條件。而隨機(jī)測試激勵可以容易地產(chǎn)生大量的測試激勵,且可以擊中一些工程師很難發(fā)現(xiàn)的邊界條件,但是隨機(jī)測試激勵容易產(chǎn)生測試激勵冗余,這造成了大量的驗(yàn)證資源浪費(fèi)[2]。隨著驗(yàn)證技術(shù)的發(fā)展,受約束的隨機(jī)激勵越來越受驗(yàn)證工程師親睞。目前,各大EDA公司的仿真器基本均支持約束求解器。驗(yàn)證工程師根據(jù)需求編寫約束,約束求解器將會對驗(yàn)證工程師所做的約束進(jìn)行求解,然后產(chǎn)生滿足約束的隨機(jī)激勵。
本文使用VMM(Verification Methodology Manual)驗(yàn)證方法學(xué),設(shè)計了一個含激勵產(chǎn)生算法的驗(yàn)證平臺。該激勵產(chǎn)生算法以覆蓋率為導(dǎo)向,在驗(yàn)證過程中,通過對覆蓋率的分析,發(fā)現(xiàn)未驗(yàn)證的邊界條件,及時調(diào)整激勵的產(chǎn)生,以獲得更為滿意的覆蓋率。
2 DUT說明
該驗(yàn)證平臺的DUT為一款滿足國際標(biāo)準(zhǔn)ISO/IEC-15693協(xié)議的高頻RFID芯片,該芯片包含模擬電路、存儲器、數(shù)字電路3個部分。其中,模擬電路負(fù)責(zé)射頻信號的解調(diào)、調(diào)制以及提供芯片工作的時鐘和電源。存儲器負(fù)責(zé)存儲芯片信息。數(shù)字電路負(fù)責(zé)芯片的編解碼、邏輯控制以及與存儲器交互數(shù)據(jù)。該驗(yàn)證平臺將主要對數(shù)字電路部分的功能進(jìn)行仿真驗(yàn)證。
支持ISO/IEC-15693協(xié)議的閱讀器(Vicinity Coupling Device,VCD)和標(biāo)簽芯片(Vicinity Card,VICC)的通信采用命令幀交互。表1為VCD到VICC的請求命令幀格式,幀格式包括幀頭SOF(Start of Frame),請求標(biāo)志(Flag),命令碼(Command),若干參數(shù)(Parameter)與數(shù)據(jù)(Data),CRC(Cyclic Redundancy Check)校驗(yàn),最后是幀尾EOF(End of Frame)。根據(jù)每條命令的不同,幀格式中的參數(shù)和數(shù)據(jù)也不同。VICC到VCD的響應(yīng)幀格式比請求幀格式中少了命令碼,其余部分格式相同[3]。
3 驗(yàn)證平臺
針對DUT,采用VMM驗(yàn)證方法學(xué)的層次化思想[4],設(shè)計出該驗(yàn)證平臺的整體架構(gòu)。同時,在該驗(yàn)證平臺中使用了本文所提出的以覆蓋率驅(qū)動激勵產(chǎn)生算法的驗(yàn)證技術(shù),并將驗(yàn)證平臺應(yīng)用于一款高頻RFID芯片驗(yàn)證,通過驗(yàn)證結(jié)果,檢驗(yàn)該驗(yàn)證技術(shù)的可行性和優(yōu)越性。本文著重介紹該驗(yàn)證平臺的激勵產(chǎn)生算法和覆蓋率分析方法。
3.1 激勵產(chǎn)生算法
對于測試激勵的產(chǎn)生,該驗(yàn)證平臺設(shè)計了一套激勵產(chǎn)生算法。該算法依據(jù)覆蓋率統(tǒng)計分析,對激勵的產(chǎn)生做出決策,即通過對覆蓋率報告分析,算法決策出下一步該如何產(chǎn)生測試激勵。該算法中含有一個序列個數(shù)計數(shù)器,用來計數(shù)一輪測試中激勵的序列個數(shù)。對于單命令測試,序列個數(shù)初始值為1,當(dāng)進(jìn)行多命令場景測試時,就需要一連串的測試激勵產(chǎn)生,這時候序列個數(shù)初始值將會大于1。
算法的流程圖如圖1所示。驗(yàn)證平臺啟動復(fù)位后,激勵產(chǎn)生器通過編寫的隨機(jī)激勵約束,產(chǎn)生測試激勵,隨后檢查產(chǎn)生的測試激勵是否為期望的有效測試激勵,如果不是,則重新產(chǎn)生,否則將測試激勵送給事務(wù)處理器,由事務(wù)處理器將測試激勵建模為事務(wù)級的命令幀,隨后序列個數(shù)減去1。當(dāng)序列個數(shù)不小于1時,說明為場景測試,還需要繼續(xù)產(chǎn)生激勵,于是激勵產(chǎn)生器將會繼續(xù)產(chǎn)生測試激勵,并送給事務(wù)處理器建模。否則檢驗(yàn)器將會做響應(yīng)檢查,一旦發(fā)現(xiàn)錯誤,驗(yàn)證平臺將會記錄激勵,并Dump出波形,產(chǎn)生Bug日志文件,待設(shè)計人員修復(fù)Bug后重新驗(yàn)證。如果檢驗(yàn)器檢驗(yàn)正確無誤,驗(yàn)證平臺將會自動收集驗(yàn)證結(jié)果,形成驗(yàn)證日志文件,并收集覆蓋率,產(chǎn)生覆蓋率報告。驗(yàn)證人員分析覆蓋率,如果覆蓋率沒有滿足要求,則根據(jù)報告中未覆蓋的邊界條件,修改激勵約束,以增加測試用例,并繼續(xù)驗(yàn)證,直到得到滿意的覆蓋率,驗(yàn)證結(jié)束。
3.2 覆蓋率分析
由于本驗(yàn)證平臺采用完全黑盒的驗(yàn)證方法,只能對DUT系統(tǒng)的頂層信號,即芯片唯一的響應(yīng)信號進(jìn)行驗(yàn)證,所以此處引入斷言覆蓋率分析的意義不大。因此該驗(yàn)證平臺著重對功能覆蓋率和代碼覆蓋率進(jìn)行了分析。通過對二者的分析,可以有效地檢驗(yàn)測試激勵是否完備,以及功能設(shè)計是否完善,以此來判斷是否需要增加新的測試激勵,以及如何產(chǎn)生新的激勵。
3.2.1 功能覆蓋率分析
功能覆蓋率是驗(yàn)證工程師從設(shè)計意圖的角度來衡量驗(yàn)證的完備性,所以也被稱為規(guī)范覆蓋率,它可以檢測到設(shè)計中存在的缺陷[5]。因而在收集功能覆蓋率時,通過對驗(yàn)證的測試點(diǎn)進(jìn)行分析,羅列功能點(diǎn),編寫功能覆蓋組以及功能覆蓋點(diǎn),如命令幀中的Flag、Command、Parameter等都需要編寫覆蓋組。此處以Command為例,在該DUT中,除了測試命令外,共有25條有效命令,所以該驗(yàn)證平臺為這25條命令分別設(shè)置了25個倉(bins),所有測試命令歸為一個倉,其余所有的非法命令歸為一個倉,這樣就總共就為Command建立了27個倉。功能覆蓋代碼編寫如下[4]:
covergroup covport;
coverpoint dri.Command{
bins Inventory={8’h01};
bins Stay_quiet={8’h02};
bins Rd_sgl_blk={8’h20};
bins Wt_sgl_blk={8’h21};
bins Lock_blk={8’h22};
……
bins Error_cmd=default;
}
endgroup
在驗(yàn)證收集覆蓋率后,可以在覆蓋率報告中查看倉分組情況和倉命中情況,如圖2所示。當(dāng)Command的每個倉都被命中時,就說明對于Command的覆蓋達(dá)到了100%,該測試點(diǎn)得到了完善的測試。如果有未被覆蓋的倉,則通過修改約束,增加測試用例,最終使得功能覆蓋率達(dá)到100%。
其余的功能點(diǎn)也通過同樣的方式進(jìn)行覆蓋分析,不斷完善,最終得到了如圖3所示的功能覆蓋率報告,從圖中可以看出,總功能覆蓋率達(dá)到了100%,符合預(yù)期效果。這說明設(shè)計期望的功能點(diǎn)均被驗(yàn)證覆蓋到,且功能設(shè)計正確。
3.2.2 代碼覆蓋率分析
代碼覆蓋率是驗(yàn)證工程師從設(shè)計代碼的角度來衡量設(shè)計被驗(yàn)證的充分性。代碼覆蓋率的收集不需要特殊的程序編寫,只需要對仿真器參數(shù)做必要的設(shè)置即可。通過對代碼覆蓋率的分析,可以有效地判斷設(shè)計中還有哪些沒有被驗(yàn)證到,以此來增加測試激勵,充分驗(yàn)證設(shè)計。圖4為代碼覆蓋率報告,從報告中可以清楚地看到各種覆蓋率以及總代碼覆蓋率的覆蓋情況。
覆蓋率報告中塊(block)覆蓋率包含了語句(statement)覆蓋率和分支(branch)覆蓋率。其中語句覆蓋率指的是設(shè)計代碼語句被執(zhí)行過占總代碼語句數(shù)的比例。分支覆蓋率體現(xiàn)的是if、case等布爾表達(dá)式是否在真和假的情況下各執(zhí)行一次。所以當(dāng)塊覆蓋率為100%時,說明所有的設(shè)計代碼都被執(zhí)行過了。如果沒有達(dá)到100%,則可以通過覆蓋率報告,查看哪些代碼語句或者哪些分支情況沒有被執(zhí)行過,以此來完善測試激勵,驗(yàn)證邊界條件。上圖報告中塊覆蓋率為98%,接近100%。
表達(dá)式(expression)覆蓋率用來檢查布爾表達(dá)式驗(yàn)證的充分性。如if(chk_lock_en || easardmode_en)判斷條件中,兩個變量為真和假均被執(zhí)行過,這樣它的覆蓋率就為100%。在報告中,可以看到表達(dá)式覆蓋率較其他幾項(xiàng)偏低,因?yàn)橛性S多情況在芯片的工作當(dāng)中根本無法遇到,所以表達(dá)式覆蓋率很難進(jìn)一步提高,但是對于芯片設(shè)計的功能來說,已經(jīng)完全得到驗(yàn)證。
翻轉(zhuǎn)(toggle)覆蓋率指的是設(shè)計中的寄存器0和1的跳變情況,只有雙向均做了跳變,覆蓋率才達(dá)到100%。從報告中可以看出,翻轉(zhuǎn)覆蓋率也達(dá)到了較高的水平。
狀態(tài)機(jī)(fsm)覆蓋率用于統(tǒng)計在驗(yàn)證過程中狀態(tài)機(jī)發(fā)生了哪些跳轉(zhuǎn),這種分析可以防止某些狀態(tài)在整個驗(yàn)證過程中從未發(fā)生跳轉(zhuǎn),從而造成設(shè)計隱患。從報告中可以看出,狀態(tài)機(jī)覆蓋率為100%,狀態(tài)機(jī)得到了充分驗(yàn)證。
在實(shí)際驗(yàn)證過程中,通過以上分析方法,不斷調(diào)整激勵約束,直到最終代碼覆蓋率達(dá)到了96%,滿足預(yù)期效果。
3.3 驗(yàn)證平臺最終驗(yàn)證結(jié)果
依據(jù)激勵產(chǎn)生算法,通過對功能覆蓋率和代碼覆蓋率的結(jié)合分析,不斷修改激勵產(chǎn)生約束,最終在較短的時間內(nèi),獲得了滿意的功能覆蓋率和代碼覆蓋率?,F(xiàn)該驗(yàn)證平臺所驗(yàn)證的芯片已經(jīng)成功流片,在對流片后的芯片測試中,芯片的各項(xiàng)功能正確,且性能優(yōu)異,完全能夠滿足市場應(yīng)用的要求。
4 結(jié)論
通過采用VMM驗(yàn)證方法學(xué),以覆蓋率驅(qū)動激勵產(chǎn)生算法的驗(yàn)證平臺與傳統(tǒng)驗(yàn)證平臺相比,具備更高的層次化。同時,本文所提出的驗(yàn)證技術(shù)為準(zhǔn)確判定驗(yàn)證的完備性提供了一個有效的衡量標(biāo)準(zhǔn)。所以,驗(yàn)證平臺采用的驗(yàn)證技術(shù)可以大幅度提高驗(yàn)證工作的效率和質(zhì)量,為芯片的一次流片成功率提供了有力的保障。同時該驗(yàn)證技術(shù)也可以為其它工程項(xiàng)目的驗(yàn)證提供很好的借鑒意義。
參考文獻(xiàn)
[1] Janick Bergeron,Eduard Cerny,Alan Hunter,et al.Verification methodology manual for system verilog[M].北京:北京航空航空大學(xué)出版社,2007:1-3.
[2] 鐘文楓.SystemVerilog與功能驗(yàn)證[M].北京:機(jī)械工業(yè)出版社,2010(8):118-119.
[3] Identification cards-Contactless integrated circuit cards-Vicinity cards-Part 3:Anti-collision and transmission protocol[S].ISO/IEC 15693-3,2000-03-10.
[4] VMM Standard Library User Guide, version D-2009.12,December 2009.
[5] 克里斯·斯皮爾.System Verilog驗(yàn)證測試平臺編寫指南[M].北京:科學(xué)出版社,2009:248-250.