文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.012
中文引用格式: 楊錚,韓俊剛,李卯良,等. 基于SystemVerilog語言的像素cache驗證平臺的實現[J].電子技術應用,2016,42(10):51-53,61.
英文引用格式: Yang Zheng,Han Jungang,Li Maoliang,et al. Implementations of the pixel cache validation platform based on SystemVerilog language[J].Application of Electronic Technique,2016,42(10):51-53,61.
0 引言
集成電路發(fā)展日新月異,已經由小規(guī)模集成電路階段發(fā)展到了超大規(guī)模集成電路階段,工藝水平也從130 nm到22 nm甚至到14 nm。三星集團最近宣布,將于今年年底實現超越14 nm,達到10 nm的制造工藝。這些進步會使芯片的處理能力更強,體積更小,功耗更低。但伴隨著這些進步同時,也會使芯片的驗證難度不斷增大,驗證的工作量也會更多。如今,驗證的工作量已經占到了整個SOC研發(fā)的70%[1],因此提高驗證的效率已經迫在眉睫。
傳統(tǒng)的Verilog驗證方法是定向的,需要程序員設計大量的測試激勵,然后對波形進行觀察檢測,這樣的方法驗證效率低、可重用性差,為此工業(yè)界推出了具有面向對象特性、支持約束隨機與斷言等功能的標準化硬件描述與驗證語言SystemVerilog[2-3]。本文基于該語言實現了一種芯片系統(tǒng)功能驗證平臺,有效地完成了對芯片的RTL級功能驗證,突破了傳統(tǒng)的驗證方法,有效地解決了傳統(tǒng)驗證方法對芯片驗證的充分性不足和效率低下的問題[4]。
1 SystemVerilog語言
SystemVerilog語言吸收了Verilog、VHDL、C++的概念,還包括驗證平臺語言和斷言語言,也就是說,它將硬件描述語言(HDL)與現代的高層級驗證語言(HVL)結合了起來[5]。正是因為這些優(yōu)點,使得SystemVerilog語言在RTL驗證流程上比傳統(tǒng)方式具有更強大的表現能力,而且該語言集成了面向對象和線程間通信等的特點,使得該語言具有更強的靈活性,使程序員在設計驗證平臺時有更大的發(fā)揮空間。同樣幾個比較著名的驗證方法還有如:UVM、OVM、VMM等,本文主要使用SystemVerilog語言來搭建一個可重用的驗證平臺對待測模塊(Design Under Test,DUT)像素cache進行全面地驗證。
2 SystemVerilog驗證平臺實現
2.1 像素cache簡介
像素cache是GPU中的重要組成部分,這個模塊的算法是否正確和功能是否全面直接關系到GPU處理圖像的正確性及快慢與否。因此,該模塊的功能驗證和覆蓋率驗證就顯得至關重要。本文的像素cache模塊在我校工程中心自主研發(fā)的GPU“螢火蟲2號”中連接著像素處理單元(FOP)以及像素RAM兩個模塊,目的是保證兩者之間能夠快速準確地傳輸數據和指令。像素cache模塊架構如圖1所示。
該像素cache包含2個模塊,分別是cache模塊和控制模塊。
2.2 cache模塊
cache模塊包含3個模塊,cache_tag模塊、cache_output模塊和cache_lru模塊,它們分別完成了cache地址選擇、輸出和算法實現的功能。
2.2.1 cache_tag模塊
該模塊主要實現的功能就是地址運算,將接收到的地址和cache內部存儲的地址進行比較來判斷是否命中。
2.2.2 cache_lru模塊
該模塊主要實現了整個cache的核心內容,實現了cache的替換算法。本文中的像素cache采用的是最近最少使用的替換算法。
2.2.3 cache_output模塊
這個模塊主要功能就是根據cache_lru模塊輸出的控制條件,將cache_ram中的數據輸出。這部分控制條件包括2D刷新、讀命中、讀未命中、寫命中和寫未命中等。
2.3 控制模塊
控制模塊包含有一個狀態(tài)機模塊和一個選擇模塊。
2.3.1 狀態(tài)機模塊
狀態(tài)機完成了處理各個請求的狀態(tài)跳轉,該模塊將整個像素cache操作劃分為如圖2的4個狀態(tài),這4個狀態(tài)分別完成了初始化、2D圖形處理加速狀態(tài)、3D段操作狀態(tài)和結束狀態(tài)。
2.3.2 選擇模塊
該模塊根據狀態(tài)機跳轉輸出的選擇信號選擇3D段操作或者2D圖形加速并且把相應的信號傳遞給cache模塊,然后進行相應的處理。
2.4 像素cache驗證平臺設計
本文設計的驗證平臺架構圖如圖3所示。
該平臺主要包括了頂層模塊和一些功能模塊。其中tb_top模塊是頂層模塊,也是整個驗證平臺的入口,該模塊實例化了env模塊和interface模塊;env模塊是環(huán)境模塊,該模塊實例化了generator、driver、monitor等的功能模塊,這些功能模塊在env模塊中分別完成自己的任務;interface模塊是接口模塊,該模塊定義了整個像素cache模塊驗證環(huán)境中需要控制和驗證的接口;generator模塊是整個驗證環(huán)境中測試激勵的產生器,該模塊會根據需求產生包括2D操作、3D操作、寫讀寫、寫讀等激勵,并且將激勵以郵箱的方式傳送給其他模塊;driver模塊是驅動模塊,該模塊接收generator模塊傳來的激勵,然后根據像素cache的時序處理這些接口信號;monitor模塊是監(jiān)視器模塊,該模塊會監(jiān)視整個驗證過程中的信號,如數據、地址、功能,包括像素cache模塊中間產生的信號,并將監(jiān)視到的有用信號以郵箱的方式傳送給其他模塊;scoreboard模塊是計分板,該模塊接收monitor模塊傳來的有用數據,并根據需求把結果打印到終端和文件中,以供程序員對比檢查,如果出現錯誤,該模塊會打印出問題所在位置和時間,并中斷整個驗證流程;coverage模塊是覆蓋率模塊,該模塊接收每一次激勵信號,并分析該激勵屬于哪一類測試,最終統(tǒng)計所有結果,計算出整個驗證過程中的功能覆蓋率和數據的覆蓋率并打印到終端和文件中,以供程序員對比檢查。
2.5 驗證過程和預期目標
整個驗證平臺和DUT以如圖4[6]方式進行搭建。
首先根據DUT模塊的功能和反饋信號,將DUT輸入分為如下幾類:2D圖形加速的寫、寫后讀、寫后寫后讀、讀、讀后讀、讀后寫后讀;3D段操作的寫、寫后讀、寫后寫后讀、讀、讀后讀、讀后寫后讀等輸入信號。然后將輸入數據128位和地址32位進行隨機產生,最終目標要保證功能覆蓋率達到100%,并且數據和地址能夠正確無誤地進行傳輸。
3 結果分析
3.1 輸出報告
經過隨機產生的100 000組測試激勵,在VCS終端會打印出執(zhí)行報告,隨機挑出一條報告進行分析,如圖5。
圖中第200次隨機驗證中Driver讀取generator產生的隨機激勵成功,并分析該次隨機驗證的分類。分別經過driver,scoreboard,monitor模塊操作,最終分析得出,該次隨機驗證屬于3D端操作中的讀類型,讀的數據為如圖5中的128位的值,地址為32’h675745fd。本次隨機驗證時間從99330000ps開始到99790000ps結束,數據和地址均與預期結果一直,傳輸結果正確。
整個驗證過程產生的報告如圖6所示。
根據圖6中報告可知,經過100 000次隨機激勵與測試,所得的結果滿足預期要求,能夠完全覆蓋2D圖形加速和3D段操作中的所有8種預期情況,功能覆蓋率達到100%;數據和地址也是隨機產生,經過100 000次的隨機化產生激勵,數據和地址基本達到全面覆蓋。
3.2 波形圖
圖7是使用DVE工具產生的部分驗證波形,從波形中可以看出,每個驗證激勵均為隨機產生,并且結果與預期的一致,沒有出現錯誤。
4 總結
本文基于SV語言搭建了一個能夠全面驗證像素cahce的平臺,并且詳細地介紹了該平臺各個模塊及架構。隨后利用VCS軟件對像素cache進行了全面驗證測試。實驗結果表明,該平臺針對像素cache模塊實現了功能上全面覆蓋,能夠準確地檢測出像素cache模塊中出錯的地方,并且及時報錯,從覆蓋率和正確性上均達到了預期目標。由于本文設計的驗證平臺與待測模塊在架構上是獨立的,所以該平臺具有很好的可重用性,只需對部分模塊進行修改便可以用于驗證其他同類型的待測模塊。
參考文獻
[1] 山蕊,蔣林,李濤.基于SystemVerilog的可重用驗證平臺[J].電子技術應用,2013,39(5):128-131.
[2] 王鵬,劉萬和,劉銳,等.基于SystemVerilog可重用測試平臺的實現[J].電子技術應用,2015,41(2):61-64.
[3] P-IEEE.Standard for SystemVerilog-Unified hardware design,Specification,and verification language[J].Copyright 2009:isbn,2009:1-1285.
[4] 黃鳳英.基于SV語言的RFID標簽芯片數字系統(tǒng)驗證平臺設計[J].中國集成電路,2016,25(3):30-34.
[5] SPEAR C.Systemverilog for verification[M].SystemVerilog for Verification.2012:253-266.
[6] (美)克里斯·斯皮爾.SystemVerilog驗證[M].北京:科學出版社,2009.