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