《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于SystemVerilog語言的像素cache驗證平臺的實現(xiàn)
基于SystemVerilog語言的像素cache驗證平臺的實現(xiàn)
2016年電子技術(shù)應(yīng)用第10期
楊 錚1,韓俊剛1,李卯良2,劉 歡1
1.西安郵電大學(xué) 計算機(jī)學(xué)院,陜西 西安710121;2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安710121
摘要: 以SystemVerilog為基礎(chǔ),對自主研發(fā)的GPU“螢火蟲2號”中像素cache部分搭建可重用的驗證平臺。該平臺可以自動完成整個驗證過程,并將驗證結(jié)果打印到Linux終端和文件當(dāng)中,方便程序員檢查驗證結(jié)果。實驗結(jié)果表明,該驗證平臺對像素cache的功能驗證覆蓋率可以達(dá)到100%,并且具有良好的可重用性,能夠全面、正確地完成RTL級功能驗證,有效地提高了驗證的效率和質(zhì)量。
中圖分類號: TP302.1
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.012
中文引用格式: 楊錚,韓俊剛,李卯良,等. 基于SystemVerilog語言的像素cache驗證平臺的實現(xiàn)[J].電子技術(shù)應(yīng)用,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.
Implementations of the pixel cache validation platform based on SystemVerilog language
Yang Zheng1,Han Jungang1,Li Maoliang2,Liu Huan1
1.School of Computer Science,Xi′an University of Posts & Telecommunications,Xi′an 710121,China; 2.School of Electronic Engineering,Xi′an University of Posts & Telecommunications,Xi′an 710121,China
Abstract: Based on SystemVerilog,build a reusable verification platform for GPU "Firefly 2nd" pixel cache which is the independent research and development of school. The platform can automatically complete the verification process, and print the results to a Linux terminal and file to facilitate the programmer checks to verify the results. Experimental results show that the functional verification coverage verification platform for pixel cache can be 100% and have good reusable, fully and correctly complete RTL-level verification, and effectively improve the efficiency of the verification and quality.
Key words : pixel cache;verification platform;SystemVerilog;reusable

0 引言

    集成電路發(fā)展日新月異,已經(jīng)由小規(guī)模集成電路階段發(fā)展到了超大規(guī)模集成電路階段,工藝水平也從130 nm到22 nm甚至到14 nm。三星集團(tuán)最近宣布,將于今年年底實現(xiàn)超越14 nm,達(dá)到10 nm的制造工藝。這些進(jìn)步會使芯片的處理能力更強(qiáng),體積更小,功耗更低。但伴隨著這些進(jìn)步同時,也會使芯片的驗證難度不斷增大,驗證的工作量也會更多。如今,驗證的工作量已經(jīng)占到了整個SOC研發(fā)的70%[1],因此提高驗證的效率已經(jīng)迫在眉睫。

    傳統(tǒng)的Verilog驗證方法是定向的,需要程序員設(shè)計大量的測試激勵,然后對波形進(jìn)行觀察檢測,這樣的方法驗證效率低、可重用性差,為此工業(yè)界推出了具有面向?qū)ο筇匦?、支持約束隨機(jī)與斷言等功能的標(biāo)準(zhǔn)化硬件描述與驗證語言SystemVerilog[2-3]。本文基于該語言實現(xiàn)了一種芯片系統(tǒng)功能驗證平臺,有效地完成了對芯片的RTL級功能驗證,突破了傳統(tǒng)的驗證方法,有效地解決了傳統(tǒng)驗證方法對芯片驗證的充分性不足和效率低下的問題[4]。

1 SystemVerilog語言

    SystemVerilog語言吸收了Verilog、VHDL、C++的概念,還包括驗證平臺語言和斷言語言,也就是說,它將硬件描述語言(HDL)與現(xiàn)代的高層級驗證語言(HVL)結(jié)合了起來[5]。正是因為這些優(yōu)點,使得SystemVerilog語言在RTL驗證流程上比傳統(tǒng)方式具有更強(qiáng)大的表現(xiàn)能力,而且該語言集成了面向?qū)ο蠛途€程間通信等的特點,使得該語言具有更強(qiáng)的靈活性,使程序員在設(shè)計驗證平臺時有更大的發(fā)揮空間。同樣幾個比較著名的驗證方法還有如:UVM、OVM、VMM等,本文主要使用SystemVerilog語言來搭建一個可重用的驗證平臺對待測模塊(Design Under Test,DUT)像素cache進(jìn)行全面地驗證。

2 SystemVerilog驗證平臺實現(xiàn)

2.1 像素cache簡介

    像素cache是GPU中的重要組成部分,這個模塊的算法是否正確和功能是否全面直接關(guān)系到GPU處理圖像的正確性及快慢與否。因此,該模塊的功能驗證和覆蓋率驗證就顯得至關(guān)重要。本文的像素cache模塊在我校工程中心自主研發(fā)的GPU“螢火蟲2號”中連接著像素處理單元(FOP)以及像素RAM兩個模塊,目的是保證兩者之間能夠快速準(zhǔn)確地傳輸數(shù)據(jù)和指令。像素cache模塊架構(gòu)如圖1所示。

wdz5-t1.gif

    該像素cache包含2個模塊,分別是cache模塊和控制模塊。

2.2 cache模塊

    cache模塊包含3個模塊,cache_tag模塊、cache_output模塊和cache_lru模塊,它們分別完成了cache地址選擇、輸出和算法實現(xiàn)的功能。

2.2.1 cache_tag模塊

    該模塊主要實現(xiàn)的功能就是地址運算,將接收到的地址和cache內(nèi)部存儲的地址進(jìn)行比較來判斷是否命中。

2.2.2 cache_lru模塊

    該模塊主要實現(xiàn)了整個cache的核心內(nèi)容,實現(xiàn)了cache的替換算法。本文中的像素cache采用的是最近最少使用的替換算法。

2.2.3 cache_output模塊

    這個模塊主要功能就是根據(jù)cache_lru模塊輸出的控制條件,將cache_ram中的數(shù)據(jù)輸出。這部分控制條件包括2D刷新、讀命中、讀未命中、寫命中和寫未命中等。

2.3 控制模塊

    控制模塊包含有一個狀態(tài)機(jī)模塊和一個選擇模塊。

2.3.1 狀態(tài)機(jī)模塊

    狀態(tài)機(jī)完成了處理各個請求的狀態(tài)跳轉(zhuǎn),該模塊將整個像素cache操作劃分為如圖2的4個狀態(tài),這4個狀態(tài)分別完成了初始化、2D圖形處理加速狀態(tài)、3D段操作狀態(tài)和結(jié)束狀態(tài)。

wdz5-t2.gif

2.3.2 選擇模塊

    該模塊根據(jù)狀態(tài)機(jī)跳轉(zhuǎn)輸出的選擇信號選擇3D段操作或者2D圖形加速并且把相應(yīng)的信號傳遞給cache模塊,然后進(jìn)行相應(yīng)的處理。

2.4 像素cache驗證平臺設(shè)計

    本文設(shè)計的驗證平臺架構(gòu)圖如圖3所示。

wdz5-t3.gif

    該平臺主要包括了頂層模塊和一些功能模塊。其中tb_top模塊是頂層模塊,也是整個驗證平臺的入口,該模塊實例化了env模塊和interface模塊;env模塊是環(huán)境模塊,該模塊實例化了generator、driver、monitor等的功能模塊,這些功能模塊在env模塊中分別完成自己的任務(wù);interface模塊是接口模塊,該模塊定義了整個像素cache模塊驗證環(huán)境中需要控制和驗證的接口;generator模塊是整個驗證環(huán)境中測試激勵的產(chǎn)生器,該模塊會根據(jù)需求產(chǎn)生包括2D操作、3D操作、寫讀寫、寫讀等激勵,并且將激勵以郵箱的方式傳送給其他模塊;driver模塊是驅(qū)動模塊,該模塊接收generator模塊傳來的激勵,然后根據(jù)像素cache的時序處理這些接口信號;monitor模塊是監(jiān)視器模塊,該模塊會監(jiān)視整個驗證過程中的信號,如數(shù)據(jù)、地址、功能,包括像素cache模塊中間產(chǎn)生的信號,并將監(jiān)視到的有用信號以郵箱的方式傳送給其他模塊;scoreboard模塊是計分板,該模塊接收monitor模塊傳來的有用數(shù)據(jù),并根據(jù)需求把結(jié)果打印到終端和文件中,以供程序員對比檢查,如果出現(xiàn)錯誤,該模塊會打印出問題所在位置和時間,并中斷整個驗證流程;coverage模塊是覆蓋率模塊,該模塊接收每一次激勵信號,并分析該激勵屬于哪一類測試,最終統(tǒng)計所有結(jié)果,計算出整個驗證過程中的功能覆蓋率和數(shù)據(jù)的覆蓋率并打印到終端和文件中,以供程序員對比檢查。

2.5 驗證過程和預(yù)期目標(biāo)

    整個驗證平臺和DUT以如圖4[6]方式進(jìn)行搭建。

wdz5-t4.gif

    首先根據(jù)DUT模塊的功能和反饋信號,將DUT輸入分為如下幾類:2D圖形加速的寫、寫后讀、寫后寫后讀、讀、讀后讀、讀后寫后讀;3D段操作的寫、寫后讀、寫后寫后讀、讀、讀后讀、讀后寫后讀等輸入信號。然后將輸入數(shù)據(jù)128位和地址32位進(jìn)行隨機(jī)產(chǎn)生,最終目標(biāo)要保證功能覆蓋率達(dá)到100%,并且數(shù)據(jù)和地址能夠正確無誤地進(jìn)行傳輸。

3 結(jié)果分析

3.1 輸出報告

    經(jīng)過隨機(jī)產(chǎn)生的100 000組測試激勵,在VCS終端會打印出執(zhí)行報告,隨機(jī)挑出一條報告進(jìn)行分析,如圖5。

wdz5-t5.gif

    圖中第200次隨機(jī)驗證中Driver讀取generator產(chǎn)生的隨機(jī)激勵成功,并分析該次隨機(jī)驗證的分類。分別經(jīng)過driver,scoreboard,monitor模塊操作,最終分析得出,該次隨機(jī)驗證屬于3D端操作中的讀類型,讀的數(shù)據(jù)為如圖5中的128位的值,地址為32’h675745fd。本次隨機(jī)驗證時間從99330000ps開始到99790000ps結(jié)束,數(shù)據(jù)和地址均與預(yù)期結(jié)果一直,傳輸結(jié)果正確。

    整個驗證過程產(chǎn)生的報告如圖6所示。

wdz5-t6.gif

    根據(jù)圖6中報告可知,經(jīng)過100 000次隨機(jī)激勵與測試,所得的結(jié)果滿足預(yù)期要求,能夠完全覆蓋2D圖形加速和3D段操作中的所有8種預(yù)期情況,功能覆蓋率達(dá)到100%;數(shù)據(jù)和地址也是隨機(jī)產(chǎn)生,經(jīng)過100 000次的隨機(jī)化產(chǎn)生激勵,數(shù)據(jù)和地址基本達(dá)到全面覆蓋。

3.2 波形圖

    圖7是使用DVE工具產(chǎn)生的部分驗證波形,從波形中可以看出,每個驗證激勵均為隨機(jī)產(chǎn)生,并且結(jié)果與預(yù)期的一致,沒有出現(xiàn)錯誤。

wdz5-t7.gif

4 總結(jié)

    本文基于SV語言搭建了一個能夠全面驗證像素cahce的平臺,并且詳細(xì)地介紹了該平臺各個模塊及架構(gòu)。隨后利用VCS軟件對像素cache進(jìn)行了全面驗證測試。實驗結(jié)果表明,該平臺針對像素cache模塊實現(xiàn)了功能上全面覆蓋,能夠準(zhǔn)確地檢測出像素cache模塊中出錯的地方,并且及時報錯,從覆蓋率和正確性上均達(dá)到了預(yù)期目標(biāo)。由于本文設(shè)計的驗證平臺與待測模塊在架構(gòu)上是獨立的,所以該平臺具有很好的可重用性,只需對部分模塊進(jìn)行修改便可以用于驗證其他同類型的待測模塊。

參考文獻(xiàn)

[1] 山蕊,蔣林,李濤.基于SystemVerilog的可重用驗證平臺[J].電子技術(shù)應(yīng)用,2013,39(5):128-131.

[2] 王鵬,劉萬和,劉銳,等.基于SystemVerilog可重用測試平臺的實現(xiàn)[J].電子技術(shù)應(yīng)用,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標(biāo)簽芯片數(shù)字系統(tǒng)驗證平臺設(shè)計[J].中國集成電路,2016,25(3):30-34.

[5] SPEAR C.Systemverilog for verification[M].SystemVerilog for Verification.2012:253-266.

[6] (美)克里斯·斯皮爾.SystemVerilog驗證[M].北京:科學(xué)出版社,2009.

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