《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 微波|射頻 > 設(shè)計應(yīng)用 > 基于覆蓋率驅(qū)動的高頻RFID芯片驗證平臺設(shè)計
基于覆蓋率驅(qū)動的高頻RFID芯片驗證平臺設(shè)計
2016年電子技術(shù)應(yīng)用第4期
王國軍,景為平
南通大學(xué) 江蘇省專用集成電路設(shè)計重點實驗室,江蘇 南通226019
摘要: 提出了一種采用覆蓋率驅(qū)動激勵產(chǎn)生算法的驗證技術(shù),設(shè)計了一套完整的驗證平臺,成功地驗證了一款高頻RFID(射頻識別技術(shù))芯片。該技術(shù)的核心思想是在驗證過程中,通過分析功能覆蓋率和代碼覆蓋率,得出未覆蓋的邊界條件,進(jìn)而修改激勵產(chǎn)生的約束條件,產(chǎn)生測試激勵,驗證邊界條件,以有效地提高驗證覆蓋率?,F(xiàn)該驗證平臺所驗證的芯片已經(jīng)成功流片,且測試性能優(yōu)異。
中圖分類號: TN492
文獻(xiàn)標(biāo)識碼: 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.
Design of verification platform for high frequency RFID chip based on coverage-driven
Wang Guojun,Jing Weiping
Jiangsu Key Laboratory of ASIC Design,Nantong University,Nantong 226019,China
Abstract: This paper presents a verification technology based on coverage-driven stimulus generation algorithm. A completed verification platform is given, and applied to a high frequency RFID(Radio Frequency Identification) chip successfully. The main idea of this technology is obtaining the boundary conditions and modifying the constraint of stimulus generation by analyzing function coverage and code coverage, and then using the new stimulus to verify the boundary conditions. So the coverage is up. After taping out, the verified chip by this verification platform was be tested. The test shows that all function are correct and performance is excellent.
Key words : coverage-driven;verification technology;stimulus generation algorithm

0 引言

    隨著芯片設(shè)計復(fù)雜度的不斷提升,驗證工作占據(jù)了越來越多的開發(fā)時間。為了能夠盡快將產(chǎn)品推向市場,有效的驗證方法就顯得越來越重要。所謂有效的驗證方法,即能夠在較短的時間內(nèi),利用精確的測試激勵,盡可能驗證芯片的正確性和發(fā)現(xiàn)設(shè)計中深層次的設(shè)計缺陷。所以如何產(chǎn)生精確高效的測試激勵就成為了驗證工作當(dāng)中的關(guān)鍵挑戰(zhàn)[1]。

1 覆蓋率驅(qū)動激勵產(chǎn)生算法的驗證技術(shù)

    根據(jù)測試激勵產(chǎn)生的方法,可以將測試激勵分為定向測試激勵和隨機測試激勵。定向測試激勵是驗證工程師針對被測設(shè)計(Design Under Test,DUT)期望驗證的功能點進(jìn)行人工編寫的激勵,這種方法直接、準(zhǔn)確,但是對于較大規(guī)模的設(shè)計來說,工程師很難發(fā)現(xiàn)所有的邊界條件。而隨機測試激勵可以容易地產(chǎn)生大量的測試激勵,且可以擊中一些工程師很難發(fā)現(xiàn)的邊界條件,但是隨機測試激勵容易產(chǎn)生測試激勵冗余,這造成了大量的驗證資源浪費[2]。隨著驗證技術(shù)的發(fā)展,受約束的隨機激勵越來越受驗證工程師親睞。目前,各大EDA公司的仿真器基本均支持約束求解器。驗證工程師根據(jù)需求編寫約束,約束求解器將會對驗證工程師所做的約束進(jìn)行求解,然后產(chǎn)生滿足約束的隨機激勵。

    本文使用VMM(Verification Methodology Manual)驗證方法學(xué),設(shè)計了一個含激勵產(chǎn)生算法的驗證平臺。該激勵產(chǎn)生算法以覆蓋率為導(dǎo)向,在驗證過程中,通過對覆蓋率的分析,發(fā)現(xiàn)未驗證的邊界條件,及時調(diào)整激勵的產(chǎn)生,以獲得更為滿意的覆蓋率。

2 DUT說明

    該驗證平臺的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ù)。該驗證平臺將主要對數(shù)字電路部分的功能進(jì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)校驗,最后是幀尾EOF(End of Frame)。根據(jù)每條命令的不同,幀格式中的參數(shù)和數(shù)據(jù)也不同。VICC到VCD的響應(yīng)幀格式比請求幀格式中少了命令碼,其余部分格式相同[3]。

wdz2-b1.gif

3 驗證平臺

    針對DUT,采用VMM驗證方法學(xué)的層次化思想[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,當(dāng)進(jìn)行多命令場景測試時,就需要一連串的測試激勵產(chǎn)生,這時候序列個數(shù)初始值將會大于1。

    算法的流程圖如圖1所示。驗證平臺啟動復(fù)位后,激勵產(chǎn)生器通過編寫的隨機激勵約束,產(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īng)檢查,一旦發(fā)現(xiàn)錯誤,驗證平臺將會記錄激勵,并Dump出波形,產(chǎn)生Bug日志文件,待設(shè)計人員修復(fù)Bug后重新驗證。如果檢驗器檢驗正確無誤,驗證平臺將會自動收集驗證結(jié)果,形成驗證日志文件,并收集覆蓋率,產(chǎn)生覆蓋率報告。驗證人員分析覆蓋率,如果覆蓋率沒有滿足要求,則根據(jù)報告中未覆蓋的邊界條件,修改激勵約束,以增加測試用例,并繼續(xù)驗證,直到得到滿意的覆蓋率,驗證結(jié)束。

wdz2-t1.gif

3.2 覆蓋率分析

    由于本驗證平臺采用完全黑盒的驗證方法,只能對DUT系統(tǒng)的頂層信號,即芯片唯一的響應(yīng)信號進(jìn)行驗證,所以此處引入斷言覆蓋率分析的意義不大。因此該驗證平臺著重對功能覆蓋率和代碼覆蓋率進(jìn)行了分析。通過對二者的分析,可以有效地檢驗測試激勵是否完備,以及功能設(shè)計是否完善,以此來判斷是否需要增加新的測試激勵,以及如何產(chǎn)生新的激勵。

3.2.1 功能覆蓋率分析

    功能覆蓋率是驗證工程師從設(shè)計意圖的角度來衡量驗證的完備性,所以也被稱為規(guī)范覆蓋率,它可以檢測到設(shè)計中存在的缺陷[5]。因而在收集功能覆蓋率時,通過對驗證的測試點進(jìn)行分析,羅列功能點,編寫功能覆蓋組以及功能覆蓋點,如命令幀中的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所示。當(dāng)Command的每個倉都被命中時,就說明對于Command的覆蓋達(dá)到了100%,該測試點得到了完善的測試。如果有未被覆蓋的倉,則通過修改約束,增加測試用例,最終使得功能覆蓋率達(dá)到100%。

wdz2-t2.gif

    其余的功能點也通過同樣的方式進(jìn)行覆蓋分析,不斷完善,最終得到了如圖3所示的功能覆蓋率報告,從圖中可以看出,總功能覆蓋率達(dá)到了100%,符合預(yù)期效果。這說明設(shè)計期望的功能點均被驗證覆蓋到,且功能設(shè)計正確。

wdz2-t3.gif

3.2.2 代碼覆蓋率分析

    代碼覆蓋率是驗證工程師從設(shè)計代碼的角度來衡量設(shè)計被驗證的充分性。代碼覆蓋率的收集不需要特殊的程序編寫,只需要對仿真器參數(shù)做必要的設(shè)置即可。通過對代碼覆蓋率的分析,可以有效地判斷設(shè)計中還有哪些沒有被驗證到,以此來增加測試激勵,充分驗證設(shè)計。圖4為代碼覆蓋率報告,從報告中可以清楚地看到各種覆蓋率以及總代碼覆蓋率的覆蓋情況。

wdz2-t4.gif

    覆蓋率報告中塊(block)覆蓋率包含了語句(statement)覆蓋率和分支(branch)覆蓋率。其中語句覆蓋率指的是設(shè)計代碼語句被執(zhí)行過占總代碼語句數(shù)的比例。分支覆蓋率體現(xiàn)的是if、case等布爾表達(dá)式是否在真和假的情況下各執(zhí)行一次。所以當(dāng)塊覆蓋率為100%時,說明所有的設(shè)計代碼都被執(zhí)行過了。如果沒有達(dá)到100%,則可以通過覆蓋率報告,查看哪些代碼語句或者哪些分支情況沒有被執(zhí)行過,以此來完善測試激勵,驗證邊界條件。上圖報告中塊覆蓋率為98%,接近100%。

    表達(dá)式(expression)覆蓋率用來檢查布爾表達(dá)式驗證的充分性。如if(chk_lock_en || easardmode_en)判斷條件中,兩個變量為真和假均被執(zhí)行過,這樣它的覆蓋率就為100%。在報告中,可以看到表達(dá)式覆蓋率較其他幾項偏低,因為有許多情況在芯片的工作當(dāng)中根本無法遇到,所以表達(dá)式覆蓋率很難進(jìn)一步提高,但是對于芯片設(shè)計的功能來說,已經(jīng)完全得到驗證。

    翻轉(zhuǎn)(toggle)覆蓋率指的是設(shè)計中的寄存器0和1的跳變情況,只有雙向均做了跳變,覆蓋率才達(dá)到100%。從報告中可以看出,翻轉(zhuǎn)覆蓋率也達(dá)到了較高的水平。

    狀態(tài)機(fsm)覆蓋率用于統(tǒng)計在驗證過程中狀態(tài)機發(fā)生了哪些跳轉(zhuǎn),這種分析可以防止某些狀態(tài)在整個驗證過程中從未發(fā)生跳轉(zhuǎn),從而造成設(shè)計隱患。從報告中可以看出,狀態(tài)機覆蓋率為100%,狀態(tài)機得到了充分驗證。

    在實際驗證過程中,通過以上分析方法,不斷調(diào)整激勵約束,直到最終代碼覆蓋率達(dá)到了96%,滿足預(yù)期效果。

3.3 驗證平臺最終驗證結(jié)果

    依據(jù)激勵產(chǎn)生算法,通過對功能覆蓋率和代碼覆蓋率的結(jié)合分析,不斷修改激勵產(chǎn)生約束,最終在較短的時間內(nèi),獲得了滿意的功能覆蓋率和代碼覆蓋率?,F(xiàn)該驗證平臺所驗證的芯片已經(jīng)成功流片,在對流片后的芯片測試中,芯片的各項功能正確,且性能優(yōu)異,完全能夠滿足市場應(yīng)用的要求。

4 結(jié)論

    通過采用VMM驗證方法學(xué),以覆蓋率驅(qū)動激勵產(chǎn)生算法的驗證平臺與傳統(tǒng)驗證平臺相比,具備更高的層次化。同時,本文所提出的驗證技術(shù)為準(zhǔn)確判定驗證的完備性提供了一個有效的衡量標(biāo)準(zhǔn)。所以,驗證平臺采用的驗證技術(shù)可以大幅度提高驗證工作的效率和質(zhì)量,為芯片的一次流片成功率提供了有力的保障。同時該驗證技術(shù)也可以為其它工程項目的驗證提供很好的借鑒意義。

參考文獻(xiàn)

[1] Janick Bergeron,Eduard Cerny,Alan Hunter,et al.Verification methodology manual for system verilog[M].北京:北京航空航空大學(xué)出版社,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].北京:科學(xué)出版社,2009:248-250.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。