


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