《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于SystemVerilog語(yǔ)言的像素cache驗(yàn)證平臺(tái)的實(shí)現(xiàn)
基于SystemVerilog語(yǔ)言的像素cache驗(yàn)證平臺(tái)的實(shí)現(xiàn)
2016年電子技術(shù)應(yīng)用第10期
楊 錚1,韓俊剛1,李卯良2,劉 歡1
1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安710121;2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安710121
摘要: 以SystemVerilog為基礎(chǔ),對(duì)自主研發(fā)的GPU“螢火蟲(chóng)2號(hào)”中像素cache部分搭建可重用的驗(yàn)證平臺(tái)。該平臺(tái)可以自動(dòng)完成整個(gè)驗(yàn)證過(guò)程,并將驗(yàn)證結(jié)果打印到Linux終端和文件當(dāng)中,方便程序員檢查驗(yàn)證結(jié)果。實(shí)驗(yàn)結(jié)果表明,該驗(yàn)證平臺(tái)對(duì)像素cache的功能驗(yàn)證覆蓋率可以達(dá)到100%,并且具有良好的可重用性,能夠全面、正確地完成RTL級(jí)功能驗(yàn)證,有效地提高了驗(yàn)證的效率和質(zhì)量。
中圖分類(lèi)號(hào): TP302.1
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.012
中文引用格式: 楊錚,韓俊剛,李卯良,等. 基于SystemVerilog語(yǔ)言的像素cache驗(yàn)證平臺(tái)的實(shí)現(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)最近宣布,將于今年年底實(shí)現(xiàn)超越14 nm,達(dá)到10 nm的制造工藝。這些進(jìn)步會(huì)使芯片的處理能力更強(qiáng),體積更小,功耗更低。但伴隨著這些進(jìn)步同時(shí),也會(huì)使芯片的驗(yàn)證難度不斷增大,驗(yàn)證的工作量也會(huì)更多。如今,驗(yàn)證的工作量已經(jīng)占到了整個(gè)SOC研發(fā)的70%[1],因此提高驗(yàn)證的效率已經(jīng)迫在眉睫。

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

1 SystemVerilog語(yǔ)言

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

2 SystemVerilog驗(yàn)證平臺(tái)實(shí)現(xiàn)

2.1 像素cache簡(jiǎn)介

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

wdz5-t1.gif

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

2.2 cache模塊

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

2.2.1 cache_tag模塊

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

2.2.2 cache_lru模塊

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

2.2.3 cache_output模塊

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

2.3 控制模塊

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

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

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

wdz5-t2.gif

2.3.2 選擇模塊

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

2.4 像素cache驗(yàn)證平臺(tái)設(shè)計(jì)

    本文設(shè)計(jì)的驗(yàn)證平臺(tái)架構(gòu)圖如圖3所示。

wdz5-t3.gif

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

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

    整個(gè)驗(yàn)證平臺(tái)和DUT以如圖4[6]方式進(jìn)行搭建。

wdz5-t4.gif

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

3 結(jié)果分析

3.1 輸出報(bào)告

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

wdz5-t5.gif

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

    整個(gè)驗(yàn)證過(guò)程產(chǎn)生的報(bào)告如圖6所示。

wdz5-t6.gif

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

3.2 波形圖

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

wdz5-t7.gif

4 總結(jié)

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

參考文獻(xiàn)

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

[2] 王鵬,劉萬(wàn)和,劉銳,等.基于SystemVerilog可重用測(cè)試平臺(tái)的實(shí)現(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語(yǔ)言的RFID標(biāo)簽芯片數(shù)字系統(tǒng)驗(yàn)證平臺(tái)設(shè)計(jì)[J].中國(guó)集成電路,2016,25(3):30-34.

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

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

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