摘 要: 隨著集成電路行業(yè)的不斷發(fā)展,芯片設(shè)計規(guī)??涨霸鲩L,功能也越來越復(fù)雜,使得驗證的難度和重要性日益增大。在此提出一種由SystemVerilog語言搭建的基于VMM的一種面向?qū)ο蟮尿炞C平臺。該驗證平臺主要使用覆蓋率驅(qū)動的驗證技術(shù),并結(jié)合可約束隨機測試和記分板技術(shù),對一款多核處理器芯片中的L2 Cache進行功能驗證。最后對驗證平臺的可重用性進行研究。實驗結(jié)果表明,驗證平臺具有良好的激勵生成機制,能夠?qū)2 Cache模塊的功能進行全面的驗證;同時,驗證平臺經(jīng)過少量更改就可以在基于標(biāo)準(zhǔn)的AXI接口的SoC驗證平臺之間重用,極大地提高了驗證效率,縮短了驗證時間。
關(guān)鍵詞: VMM; L2 Cache; 功能驗證; System Verilog; 功能覆蓋率; 重用性
中圖分類號: TN710?34; TP302 文獻標(biāo)識碼: A 文章編號: 1004?373X(2015)04?0125?04
0 引 言
隨著芯片工藝的發(fā)展和設(shè)計規(guī)模、復(fù)雜程度的急劇增大,使得功能驗證的難度和重要性日益增大。由于功能驗證在整個設(shè)計階段是最為關(guān)鍵和出錯率最高的環(huán)節(jié),大部分芯片流片失敗的主要原因在于設(shè)計功能上的缺陷,因此功能驗證變得日趨重要。功能驗證的目的在于確認設(shè)計的實現(xiàn)是否符合系統(tǒng)要求的行為規(guī)范。當(dāng)前所采用的功能驗證方法主要分為兩種,一種是形式化驗證,一種是模擬驗證。由于形式化驗證能夠處理的設(shè)計規(guī)模非常有限,IBM公司將形式化驗證成功的應(yīng)用在了POWER7 處理器[1]的功能驗證上,對超大規(guī)模IC設(shè)計的形式化驗證提供了寶貴的經(jīng)驗;模擬驗證通過測試激勵模擬電路的工作,從而檢測設(shè)計描述的行為的正確性[2]。基于模擬驗證方法是當(dāng)前業(yè)界的大規(guī)模IC功能驗證最廣泛的方法。為了節(jié)省人力和時間,提高驗證的工作效率,業(yè)界提出了幾種基于模擬驗證架構(gòu)的驗證方法學(xué)有:OVM、UVM和VMM。本設(shè)計就是基于VMM(Verification Methodology Manual)的模擬驗證L2 Cache芯片的功能。
L2 Cache作為作為CPU和主存之間速度很快的存儲器,一個功能完善的L2 Cache能夠大大地加快CPU訪問存儲器的速度,提高處理器的運行效率。因此本文主要對L2 Cache芯片進行了驗證平臺的搭建,通過有效的控制激勵,確保功能驗證的完整性。利用System Verilog支持的VMM驗證方法學(xué),建立層次化驗證平臺[3]。Synopsys公司的VCS仿真驗證工具完全支持SystemVerilog描述的結(jié)構(gòu)功能,能夠?qū)崿F(xiàn)隨機激勵的自動生成[4]、覆蓋率統(tǒng)計和斷言檢測,可有效的完成整個驗證過程。
1 VMM驗證方法學(xué)
1.1 SystemVerilog語言
利用面向?qū)ο蟮念惤Y(jié)構(gòu)建立事物及其處理器,具有代碼模塊間的相互獨立、易于維護和動態(tài)連接等特點。允許代碼的復(fù)用,大大降低驗證的復(fù)雜度和避免了一些設(shè)計細節(jié)麻煩。SystemVerilog硬件描述語言融合了面向?qū)ο蟮木幊碳夹g(shù)[5?6],與VHDL和Verilog HDL等過程性描述語言相比,更易于平臺的搭建。運用面向的類結(jié)構(gòu)對數(shù)據(jù)進行封裝,通過事件實現(xiàn)模塊的同步,提高驗證效率。
1.2 VMM驗證方法學(xué)
VMM是Synopsys公司推出的基于SystemVerilog的驗證方法學(xué)[7],標(biāo)準(zhǔn)的驗證平臺主要分為5層,每層實現(xiàn)不同的功能,每層又包括多個組件,其驗證架構(gòu)如圖1所示。
VMM驗證平臺的核心是類(Class),每個層之間的組件都是基于類結(jié)構(gòu)實現(xiàn)。信號層位于最底層,主要包括DUT、平臺與設(shè)計信號連接的Interface組件和與DUT相關(guān)的一些其他功能模塊,主要完成DUT與驗證平臺的信號連接。指令層主要包括驅(qū)動器(Driver)和監(jiān)測器(Monitor),兩者與DUT的實際接口相連接,驅(qū)動器由接口入口協(xié)議發(fā)送由功能層傳來的數(shù)據(jù)的激勵,經(jīng)過DUT處理之后監(jiān)視器再根據(jù)接口出口協(xié)議接收數(shù)據(jù)并通過回調(diào)(Callbacks)送到功能層。功能層主要完成處理應(yīng)用層事務(wù),驗證DUT的比對工作。發(fā)生器和管理器共同構(gòu)成了場景層,發(fā)生器隨機的產(chǎn)生DUT的事務(wù)流,管理器根據(jù)特定測試用例產(chǎn)生發(fā)起場景并生成與之對應(yīng)的事務(wù)流[7]。測試層為平臺的頂層,是用戶自定義的測試用例,主要是文本測試用例文件,還包括對激勵的約束。該層的行為確定其他層的作用,啟動和控制整個驗證平臺的運行。該層較為抽象。在驗證過程中利用功能覆蓋率評估測試的進程,根據(jù)覆蓋情況修改隨機測試激勵的約束條件,最終達到100%覆蓋。
2 驗證平臺的設(shè)計與實現(xiàn)
2.1 L2 Cache芯片結(jié)構(gòu)
本設(shè)計的驗證平臺的實驗對象是面向多核處理器的L2 Cache芯片,該芯片采用AMBA 4.0 AXI(Advanced eXtensible Interface)接口協(xié)議。此協(xié)議具有高速、低延時和支持高頻率操作而無需復(fù)雜橋段連接。L2 Cache的結(jié)構(gòu)如圖2所示。L2 Cache通過CIU(Core Interface Unit)和結(jié)構(gòu)環(huán)(Ring)與核進行數(shù)據(jù)的交換。由于結(jié)構(gòu)環(huán)產(chǎn)生的功耗低、占用設(shè)計布局面積小及能夠高效率的完成核與L2 Cache之間的通信等特點,因此這里采用結(jié)構(gòu)環(huán)而不用直接的線網(wǎng)進行連接。這樣不僅大大地提高了處理器的運行效率,而且在功能不變的情況下使芯片體積更小使其市場價值提高。如圖2所示是CIU、Ring和L2 Cache三者之間的連接圖,CIU接到Core發(fā)過來的請求信號通過環(huán)訪問L2 Cache。L2 Cache由4塊Slice組成,每個Slice之間相互獨立,圖示只列出了一個Slice結(jié)構(gòu)。
2.2 驗證平臺的建立
L2 Cache的驗證平臺結(jié)構(gòu)如圖3所示,驗證平臺采用的是黑盒的驗證方法[8],它不需要驗證人特別的了解DUT的具體實現(xiàn),大大減少了驗證人員的工作量。平臺使用類對模塊進行封裝,保證了平臺各個模塊的獨立性、完整性,并且易于復(fù)用和擴展。此外,本平臺還采用了自檢測機制,可以高效地判斷激勵生成和DUT返回結(jié)果的正確性。
(1) 事務(wù)類。根據(jù)L2 Cache功能驗證需求,在同一種工作模式下需要發(fā)送和接收多個事物。因此,在本測試平臺里面通過4個事物類來完成設(shè)計的隨機化配置和激勵的生成。在config類中,定義了帶有約束的可隨機化的L2 Cache可配置選項和驗證環(huán)境的可配置選項,使在建立測試環(huán)境之前,確定L2 Cache的工作模式和收發(fā)數(shù)據(jù)次數(shù)。
(2) 事務(wù)處理器類。事務(wù)處理器類主要完成接收事務(wù)的處理,并傳至給下一事務(wù)。主要包括GEN類、Driver類、Monitor類和env類。GEN類主要負責(zé)激勵的生成,本設(shè)計主要生成四組激勵數(shù)據(jù):L2 Cache寫操作(ST:store)、讀操作(LD:load)、內(nèi)存管理操作(Memory Management Unit,MMU)和取指操作(Instruction Fetch Unit,IFU)。這樣易于對事務(wù)進行修改。生成事務(wù)后把事務(wù)發(fā)送給Driver類,Driver類產(chǎn)生L2 Cache工作的控制信號,并將配置信號存放相應(yīng)的寄存器中[9]。Monitor類適時的將事務(wù)輸出,并對事務(wù)進行中間檢測。env類包含GEN、Driver和Monitor類的實例化。在此類中完成整個的驗證過程,確保驗證步驟按正確的順利執(zhí)行。
(3) 記分板(RM)。記分板主要采用自檢測機制,通過對檢測器接收的實際輸出結(jié)果與記分板中的參考結(jié)果進行自動比對,完成對DUT的驗證。本設(shè)計是在記分板中建立了一個REF_model模型,把GEN類生成的不同的激勵通過郵箱發(fā)送給記分板,記分板獲得郵箱里面的數(shù)據(jù)輸入給REF_model,從而得到參考結(jié)果,再與L2 Cache輸出的結(jié)果進行比對,根據(jù)比對結(jié)果,判斷設(shè)計的正確性。
(4) 功能覆蓋模型。L2 Cache的功能點比較多,主要包括訪存功能和配置功能兩大主要功能。訪存功能主要包括三種類型:普通的寫訪存請求、普通的讀訪存請求和原子讀/寫交易;配置功能主要包括3種類型:寄存器的配置、禁用和使能L2 Cache和特權(quán)交易。其中的每一個功能都是有很多個測試點正交的集合。設(shè)計對這幾個功能一一驗證,確保L2 Cache的功能設(shè)計全面。
該設(shè)計分兩種對覆蓋率進行采集:一是直接采集激勵的生成,二是采用回調(diào)的方式完成覆蓋數(shù)據(jù)的采集。設(shè)計中主要采用SystemVerilog語言中的覆蓋率組來實現(xiàn)的。在覆蓋組中,DUT所完成的所有操作設(shè)置成覆蓋點,并通過cross結(jié)構(gòu)記錄數(shù)據(jù)包有效數(shù)據(jù)(coverpoint)的各種組合,通過對這些功能點分析,總結(jié)L2 Cache的功能覆蓋率模型如表1所示。
2.3 驗證的實驗結(jié)果分析
在整個驗證過程中,利用Synopsys公司的VCS工具進行仿真[10],并通過VCS自帶的覆蓋率分析工具DVE的到代碼覆蓋率。驗證通過長時間不停歇的隨機激勵的輸入,并對約束不斷的修改,去除少量冗余代碼后,最終使代碼覆蓋率達到100%。圖4是最終的代碼覆蓋率DVE截圖。圖中第1列Name為設(shè)計所包含的模塊名;該設(shè)計總共由9個大模塊組成。第3列Line為代碼行覆蓋率;第4列Toggle為跳轉(zhuǎn)覆蓋率;第2列Score為所有代碼覆蓋率的平均值。
功能覆蓋率必須著眼于L2 Cache的具體功能,根據(jù)功能覆蓋率模型對L2 Cache的各個功能點進行驗證;同時,根據(jù)覆蓋信息定向的去改變隨機的約束,使沒有覆蓋到的功能達到100%的覆蓋。
圖5是本驗證平臺測試的11個covergroup的覆蓋率情況。而其他的功能點通過對自檢測試模塊和波形的分析獲得。因此該驗證平臺在邏輯上已經(jīng)達到了對L2 Cache功能的充分驗證。
2.4 平臺可重用性
該驗證平臺嚴格按照VMM分層結(jié)構(gòu)搭建,結(jié)構(gòu)清晰,各模塊之間相對獨立卻又緊密合作,有利于平臺的功能擴展[11]。驗證平臺的各個類模塊也可以有選擇地重用,如平臺的發(fā)生器、行為模型和記分板,都可以通過局部的改變或直接重用。對于一些派生設(shè)計或者具有相同接口協(xié)議的設(shè)計,設(shè)計者可以直接的重用驅(qū)動器和檢測器等,僅需要對修改激勵中的事務(wù)系列即可重用平臺。表2是通過對L2 Cache的驗證平臺進行少量更改后重用在NoC(Network on Chip)驗證平臺上的代碼統(tǒng)計表。由圖可知NoC驗證平臺中的各個類模塊大部分復(fù)用了L2 Cache驗證平臺。復(fù)用率高達63.67%。這樣對NoC或具有相同機制設(shè)計的驗證平臺的搭建節(jié)省大量工作量。
3 結(jié) 語
本文基于VMM驗證方法學(xué)實現(xiàn)了一個層次化的驗證平臺。該平臺采用面向?qū)ο蟮乃枷?,對L2 Cache進行了功能仿真驗證。驗證結(jié)果表明,本文的驗證平臺具有良好的擴展性,有效地提高了驗證的效率和驗證覆蓋率。同時該平臺具有良好的激勵生成機制,通過覆蓋情況有效的指導(dǎo)激勵的生成,能夠快速地對DUT進行全面覆蓋,達到驗證的目的。
參考文獻
[1] SCHUBERT K D, ROESNER W, LUDDEN J M, et al. Functional verification of the IBM POWER7 microprocessor and POWER7 multiprocessor systems [J]. IBM Journal of Res Dev, 2011, 55(3): 11?16.
[2] WANG Jian, WANG Tian?cheng, LI Hua?wei, et al. Survey of verification techniques based on design error injection [C]// the 15th Chinese Fault Tolerant Computing Conference(CFTC). [S.l.]: [s.n.], 2013: 111?116.
[3] 程剛,蔡敏.基于SystemVerilog的SoC功能驗證方法研究[J].科學(xué)技術(shù)與工程,2009,11(22):6814?6817.
[4] 劉杰,徐偉俊,夏宇聞.設(shè)計驗證中的隨機約束[J].中國集成電路,2006,11(1):28?31.
[5] 閆沫,張媛.基于SystemVerilog語言的設(shè)計驗證技術(shù)[J].現(xiàn)代電子技術(shù),2008,31(6):8?11.
[6] 高世超.基于VMM驗證方法學(xué)的SD卡模塊級驗證[D].西安: 西安電子科技大學(xué),2011.
[7] BERGENRON J,CEMY E, HUNTER A. Verification memthodology for SystemVerilog [M]. [S.1.]: Springers,Synopsys Inc, 2006.
[8] 鐘文楓. SystemVerilog與功能驗證[M].北京:機械工業(yè)出版社,2010.
[9] 方穎立.基于VMM的寄存器抽象層驗證[J].電子設(shè)計技術(shù), 2007(8):1?3.
[10] Synopsys. VCS/VCSI user guide, Version G?2012.09 [M]. USA: Synopsys, 2012.
[11] 何李梅,郭育華,溫志開,等.基于VMM的可重用FPGA驗證平臺[J].國外電子測量技術(shù),2009,28(12):39?42.