文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.10.012
中文引用格式: 楊錚,韓俊剛,,李卯良,,等. 基于SystemVerilog語言的像素cache驗(yàn)證平臺的實(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.
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)步會使芯片的處理能力更強(qiáng),,體積更小,,功耗更低。但伴隨著這些進(jìn)步同時,,也會使芯片的驗(yàn)證難度不斷增大,,驗(yàn)證的工作量也會更多。如今,,驗(yàn)證的工作量已經(jīng)占到了整個SOC研發(fā)的70%[1],,因此提高驗(yàn)證的效率已經(jīng)迫在眉睫。
傳統(tǒng)的Verilog驗(yàn)證方法是定向的,,需要程序員設(shè)計(jì)大量的測試激勵,,然后對波形進(jìn)行觀察檢測,這樣的方法驗(yàn)證效率低,、可重用性差,,為此工業(yè)界推出了具有面向?qū)ο筇匦?、支持約束隨機(jī)與斷言等功能的標(biāo)準(zhǔn)化硬件描述與驗(yàn)證語言SystemVerilog[2-3]。本文基于該語言實(shí)現(xiàn)了一種芯片系統(tǒng)功能驗(yàn)證平臺,,有效地完成了對芯片的RTL級功能驗(yàn)證,,突破了傳統(tǒng)的驗(yàn)證方法,有效地解決了傳統(tǒng)驗(yàn)證方法對芯片驗(yàn)證的充分性不足和效率低下的問題[4],。
1 SystemVerilog語言
SystemVerilog語言吸收了Verilog,、VHDL、C++的概念,,還包括驗(yàn)證平臺語言和斷言語言,,也就是說,它將硬件描述語言(HDL)與現(xiàn)代的高層級驗(yàn)證語言(HVL)結(jié)合了起來[5],。正是因?yàn)檫@些優(yōu)點(diǎn),,使得SystemVerilog語言在RTL驗(yàn)證流程上比傳統(tǒng)方式具有更強(qiáng)大的表現(xiàn)能力,而且該語言集成了面向?qū)ο蠛途€程間通信等的特點(diǎn),,使得該語言具有更強(qiáng)的靈活性,,使程序員在設(shè)計(jì)驗(yàn)證平臺時有更大的發(fā)揮空間。同樣幾個比較著名的驗(yàn)證方法還有如:UVM,、OVM,、VMM等,本文主要使用SystemVerilog語言來搭建一個可重用的驗(yàn)證平臺對待測模塊(Design Under Test,,DUT)像素cache進(jìn)行全面地驗(yàn)證,。
2 SystemVerilog驗(yàn)證平臺實(shí)現(xiàn)
2.1 像素cache簡介
像素cache是GPU中的重要組成部分,這個模塊的算法是否正確和功能是否全面直接關(guān)系到GPU處理圖像的正確性及快慢與否,。因此,,該模塊的功能驗(yàn)證和覆蓋率驗(yàn)證就顯得至關(guān)重要。本文的像素cache模塊在我校工程中心自主研發(fā)的GPU“螢火蟲2號”中連接著像素處理單元(FOP)以及像素RAM兩個模塊,,目的是保證兩者之間能夠快速準(zhǔn)確地傳輸數(shù)據(jù)和指令,。像素cache模塊架構(gòu)如圖1所示。
該像素cache包含2個模塊,,分別是cache模塊和控制模塊,。
2.2 cache模塊
cache模塊包含3個模塊,cache_tag模塊,、cache_output模塊和cache_lru模塊,它們分別完成了cache地址選擇,、輸出和算法實(shí)現(xiàn)的功能,。
2.2.1 cache_tag模塊
該模塊主要實(shí)現(xiàn)的功能就是地址運(yùn)算,將接收到的地址和cache內(nèi)部存儲的地址進(jìn)行比較來判斷是否命中,。
2.2.2 cache_lru模塊
該模塊主要實(shí)現(xiàn)了整個cache的核心內(nèi)容,,實(shí)現(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)。
2.3.2 選擇模塊
該模塊根據(jù)狀態(tài)機(jī)跳轉(zhuǎn)輸出的選擇信號選擇3D段操作或者2D圖形加速并且把相應(yīng)的信號傳遞給cache模塊,,然后進(jìn)行相應(yīng)的處理,。
2.4 像素cache驗(yàn)證平臺設(shè)計(jì)
本文設(shè)計(jì)的驗(yàn)證平臺架構(gòu)圖如圖3所示。
該平臺主要包括了頂層模塊和一些功能模塊,。其中tb_top模塊是頂層模塊,,也是整個驗(yàn)證平臺的入口,該模塊實(shí)例化了env模塊和interface模塊,;env模塊是環(huán)境模塊,,該模塊實(shí)例化了generator、driver,、monitor等的功能模塊,,這些功能模塊在env模塊中分別完成自己的任務(wù);interface模塊是接口模塊,,該模塊定義了整個像素cache模塊驗(yàn)證環(huán)境中需要控制和驗(yàn)證的接口,;generator模塊是整個驗(yàn)證環(huán)境中測試激勵的產(chǎn)生器,該模塊會根據(jù)需求產(chǎn)生包括2D操作,、3D操作,、寫讀寫、寫讀等激勵,,并且將激勵以郵箱的方式傳送給其他模塊,;driver模塊是驅(qū)動模塊,該模塊接收generator模塊傳來的激勵,,然后根據(jù)像素cache的時序處理這些接口信號,;monitor模塊是監(jiān)視器模塊,該模塊會監(jiān)視整個驗(yàn)證過程中的信號,,如數(shù)據(jù),、地址,、功能,包括像素cache模塊中間產(chǎn)生的信號,,并將監(jiān)視到的有用信號以郵箱的方式傳送給其他模塊,;scoreboard模塊是計(jì)分板,該模塊接收monitor模塊傳來的有用數(shù)據(jù),,并根據(jù)需求把結(jié)果打印到終端和文件中,,以供程序員對比檢查,如果出現(xiàn)錯誤,,該模塊會打印出問題所在位置和時間,,并中斷整個驗(yàn)證流程;coverage模塊是覆蓋率模塊,,該模塊接收每一次激勵信號,,并分析該激勵屬于哪一類測試,最終統(tǒng)計(jì)所有結(jié)果,,計(jì)算出整個驗(yàn)證過程中的功能覆蓋率和數(shù)據(jù)的覆蓋率并打印到終端和文件中,,以供程序員對比檢查。
2.5 驗(yàn)證過程和預(yù)期目標(biāo)
整個驗(yàn)證平臺和DUT以如圖4[6]方式進(jìn)行搭建,。
首先根據(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 輸出報(bào)告
經(jīng)過隨機(jī)產(chǎn)生的100 000組測試激勵,在VCS終端會打印出執(zhí)行報(bào)告,,隨機(jī)挑出一條報(bào)告進(jìn)行分析,,如圖5。
圖中第200次隨機(jī)驗(yàn)證中Driver讀取generator產(chǎn)生的隨機(jī)激勵成功,,并分析該次隨機(jī)驗(yàn)證的分類,。分別經(jīng)過driver,scoreboard,,monitor模塊操作,,最終分析得出,該次隨機(jī)驗(yàn)證屬于3D端操作中的讀類型,,讀的數(shù)據(jù)為如圖5中的128位的值,,地址為32’h675745fd。本次隨機(jī)驗(yàn)證時間從99330000ps開始到99790000ps結(jié)束,,數(shù)據(jù)和地址均與預(yù)期結(jié)果一直,,傳輸結(jié)果正確。
整個驗(yàn)證過程產(chǎn)生的報(bào)告如圖6所示,。
根據(jù)圖6中報(bào)告可知,,經(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)生的部分驗(yàn)證波形,,從波形中可以看出,,每個驗(yàn)證激勵均為隨機(jī)產(chǎn)生,并且結(jié)果與預(yù)期的一致,,沒有出現(xiàn)錯誤,。
4 總結(jié)
本文基于SV語言搭建了一個能夠全面驗(yàn)證像素cahce的平臺,并且詳細(xì)地介紹了該平臺各個模塊及架構(gòu),。隨后利用VCS軟件對像素cache進(jìn)行了全面驗(yàn)證測試,。實(shí)驗(yàn)結(jié)果表明,該平臺針對像素cache模塊實(shí)現(xiàn)了功能上全面覆蓋,,能夠準(zhǔn)確地檢測出像素cache模塊中出錯的地方,,并且及時報(bào)錯,從覆蓋率和正確性上均達(dá)到了預(yù)期目標(biāo),。由于本文設(shè)計(jì)的驗(yàn)證平臺與待測模塊在架構(gòu)上是獨(dú)立的,,所以該平臺具有很好的可重用性,只需對部分模塊進(jìn)行修改便可以用于驗(yàn)證其他同類型的待測模塊,。
參考文獻(xiàn)
[1] 山蕊,,蔣林,李濤.基于SystemVerilog的可重用驗(yàn)證平臺[J].電子技術(shù)應(yīng)用,2013,,39(5):128-131.
[2] 王鵬,,劉萬和,劉銳,,等.基于SystemVerilog可重用測試平臺的實(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語言的RFID標(biāo)簽芯片數(shù)字系統(tǒng)驗(yàn)證平臺設(shè)計(jì)[J].中國集成電路,,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.