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