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