楊 錚,韓俊剛,李卯良,劉 歡
(1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安710121;2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安710121)
基于SystemVerilog語(yǔ)言的像素cache驗(yàn)證平臺(tái)的實(shí)現(xiàn)*
楊錚1,韓俊剛1,李卯良2,劉歡1
(1.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,陜西 西安710121;2.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安710121)
以SystemVerilog為基礎(chǔ),對(duì)自主研發(fā)的GPU“螢火蟲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ì)量。
像素cache;驗(yàn)證平臺(tái);SystemVerilog;可重用性
集成電路發(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ū)ο筇匦?、支持約束隨機(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]。
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.1像素cache簡(jiǎn)介
像素cache是GPU中的重要組成部分,這個(gè)模塊的算法是否正確和功能是否全面直接關(guān)系到GPU處理圖像的正確性及快慢與否。因此,該模塊的功能驗(yàn)證和覆蓋率驗(yàn)證就顯得至關(guān)重要。本文的像素cache模塊在我校工程中心自主研發(fā)的GPU“螢火蟲2號(hào)”中連接著像素處理單元(FOP)以及像素RAM兩個(gè)模塊,目的是保證兩者之間能夠快速準(zhǔn)確地傳輸數(shù)據(jù)和指令。像素cache模塊架構(gòu)如圖1所示。
圖1 像素cache的架構(gòu)
該像素cache包含2個(gè)模塊,分別是cache模塊和控制模塊。
2.2cache模塊
cache模塊包含 3個(gè)模塊,cache_tag模塊、cache_output模塊和cache_lru模塊,它們分別完成了cache地址選擇、輸出和算法實(shí)現(xiàn)的功能。
2.2.1cache_tag模塊
該模塊主要實(shí)現(xiàn)的功能就是地址運(yùn)算,將接收到的地址和cache內(nèi)部存儲(chǔ)的地址進(jìn)行比較來(lái)判斷是否命中。
2.2.2cache_lru模塊
該模塊主要實(shí)現(xiàn)了整個(gè)cache的核心內(nèi)容,實(shí)現(xiàn)了cache的替換算法。本文中的像素cache采用的是最近最少使用的替換算法。
2.2.3cache_output模塊
這個(gè)模塊主要功能就是根據(jù) cache_lru模塊輸出的控制條件,將cache_ram中的數(shù)據(jù)輸出。這部分控制條件包括2D刷新、讀命中、讀未命中、寫命中和寫未命中等。
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)。
圖2 像素cache的控制狀態(tài)機(jī)
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所示。
圖3 SV驗(yàn)證平臺(tái)設(shè)計(jì)框架
該平臺(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操作、寫讀寫、寫讀等激勵(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ì)屬于哪一類測(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)行搭建。
圖4 DUT與驗(yàn)證環(huán)境平臺(tái)
首先根據(jù)DUT模塊的功能和反饋信號(hào),將DUT輸入分為如下幾類:2D圖形加速的寫、寫后讀、寫后寫后讀、讀、讀后讀、讀后寫后讀;3D段操作的寫、寫后讀、寫后寫后讀、讀、讀后讀、讀后寫后讀等輸入信號(hào)。然后將輸入數(shù)據(jù)128位和地址32位進(jìn)行隨機(jī)產(chǎn)生,最終目標(biāo)要保證功能覆蓋率達(dá)到100%,并且數(shù)據(jù)和地址能夠正確無(wú)誤地進(jìn)行傳輸。
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。
圖5 隨機(jī)抽取的一條報(bào)告
圖中第200次隨機(jī)驗(yàn)證中 Driver讀取 generator產(chǎn)生的隨機(jī)激勵(lì)成功,并分析該次隨機(jī)驗(yàn)證的分類。分別經(jīng)過(guò)driver,scoreboard,monitor模塊操作,最終分析得出,該次隨機(jī)驗(yàn)證屬于3D端操作中的讀類型,讀的數(shù)據(jù)為如圖5中的128位的值,地址為32’h675745fd。本次隨機(jī)驗(yàn)證時(shí)間從99330000ps開始到99790000ps結(jié)束,數(shù)據(jù)和地址均與預(yù)期結(jié)果一直,傳輸結(jié)果正確。
整個(gè)驗(yàn)證過(guò)程產(chǎn)生的報(bào)告如圖6所示。
圖6 驗(yàn)證結(jié)果報(bào)告
根據(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ò)誤。
圖7 驗(yàn)證結(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)證其他同類型的待測(cè)模塊。
[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.
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)
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.
pixel cache;verification platform;SystemVerilog;reusable
TP302.1
A
10.16157/j.issn.0258-7998.2016.10.012
國(guó)家自然科學(xué)基金重點(diǎn)資助項(xiàng)目(61136002);教育部科學(xué)研究計(jì)劃重點(diǎn)資助項(xiàng)目(2111180)
2016-05-12)
楊錚(1990-),男,碩士研究生,主要研究方向:軟件工程。
韓俊剛(1943-),男,教授,主要研究方向:軟件和硬件形式化驗(yàn)證、圖形處理器和計(jì)算機(jī)體系結(jié)構(gòu)。
中文引用格式:楊錚,韓俊剛,李卯良,等.基于 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.