![SystemVerilog如何進行有效的功能驗證_第1頁](http://file4.renrendoc.com/view/f582a16ff21453ba9274d8adaee21df3/f582a16ff21453ba9274d8adaee21df31.gif)
![SystemVerilog如何進行有效的功能驗證_第2頁](http://file4.renrendoc.com/view/f582a16ff21453ba9274d8adaee21df3/f582a16ff21453ba9274d8adaee21df32.gif)
![SystemVerilog如何進行有效的功能驗證_第3頁](http://file4.renrendoc.com/view/f582a16ff21453ba9274d8adaee21df3/f582a16ff21453ba9274d8adaee21df33.gif)
![SystemVerilog如何進行有效的功能驗證_第4頁](http://file4.renrendoc.com/view/f582a16ff21453ba9274d8adaee21df3/f582a16ff21453ba9274d8adaee21df34.gif)
![SystemVerilog如何進行有效的功能驗證_第5頁](http://file4.renrendoc.com/view/f582a16ff21453ba9274d8adaee21df3/f582a16ff21453ba9274d8adaee21df35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
SystemVerilog如何進行有效的功能驗證摩爾定律指出,集成芯片可容納的晶體管數(shù)目約每18個月增加一倍,性能也將提升一倍。對于FPGA和數(shù)字IC設(shè)計開發(fā)的工程師們而言,感同身受的是,在龐大復(fù)雜的系統(tǒng)研發(fā)過程中,設(shè)計和驗證幾乎同等重要,甚至驗證工作將花費整個周期的70%~80%。如何進行有效的功能驗證,是我們必須面對的課題。隨著芯片設(shè)計驗證技術(shù)的發(fā)展,SystemVerilog語言在業(yè)界獲得了廣泛應(yīng)用。本文將介紹常用的驗證技術(shù)和方法。無論是從事FPGA開發(fā),還是數(shù)字IC設(shè)計,驗證是一個無法逃避的問題,是整個項目周期中極為重要的一環(huán)。驗證是一個覆蓋面比較廣的課題,主要包括功能驗證、物理驗證、時序驗證等。我們常常涉及功能驗證,以確保設(shè)計能夠按照設(shè)計規(guī)范實現(xiàn)應(yīng)有功能。為了完成功能驗證,我們需要搭建驗證平臺testbench,這也是業(yè)界最常用的驗證手段。芯片設(shè)計流程我們以專用芯片(ASIC)設(shè)計舉例,從設(shè)計規(guī)范到投片的設(shè)計流程,如圖:與ASIC設(shè)計不同的是,在FPGA的設(shè)計流程中,沒有物理實現(xiàn)和版圖設(shè)計這一塊,因為FPGA已經(jīng)是經(jīng)過測封后的成品,只需要按照設(shè)計架構(gòu)進行開發(fā)和驗證。因此,數(shù)字IC工程師與FPGA工程師常??上嗷マD(zhuǎn)換。RTL設(shè)計是將設(shè)計規(guī)范進行邏輯代碼實現(xiàn)的過程,我們常常使用verilogHDL或VHDL語言進行設(shè)計。通過采用相對合理的設(shè)計方案,在資源消耗、處理速率和時延上進行平衡。功能驗證作為一個獨立模塊,但驗證過程卻相當(dāng)復(fù)雜:定義測試用例,搭建測試環(huán)境,運行測試用例,以及保證功能覆蓋率。怎樣進行有效功能驗證,確保設(shè)計可靠性,是我們最關(guān)心的課題。驗證平臺以FPGA開發(fā)為例,當(dāng)我們完成功能模塊設(shè)計后,別急著進行綜合與實現(xiàn),以及上板調(diào)試,進行行為仿真或功能仿真驗證是必要的。在功能驗證中,我們在被測設(shè)計(DesignUnderTest,DUT)外搭建驗證平臺,就像這樣:驗證平臺可以用來做什么,又應(yīng)該怎么做?如上圖所示,對于DUT,我們需要通過testbench產(chǎn)生測試激勵,然后把測試激勵應(yīng)用到DUT中,而DUT產(chǎn)生的輸出結(jié)果,我們需要進行檢查,看驗證測試是否通過,也就是,我們要確保輸出結(jié)果和期望一致。產(chǎn)生用戶激勵常用方法:一種是提供確定輸入,進行直接測試(directtest);另外就是產(chǎn)生隨機數(shù)據(jù),進行隨機測試(randomtest)。通常,我們需要產(chǎn)生必要的使能信號、測試數(shù)據(jù)、地址等,通過DUT接口送入。在高級驗證平臺種,激勵被工程師建模并封裝,進行事務(wù)級驗證(transactionbasedverification)。驗證的目的,在于檢查DUT的輸出是否和期望一致。常用發(fā)方法和途徑有以下三種。(1)通過視圖(波形窗口)檢查。我們通過仿真器查看信號波形,這也是常用的方法,不過也存在缺點,對于復(fù)雜的設(shè)計,信號接口眾多,數(shù)據(jù)量大,人眼視覺容易出現(xiàn)錯誤。(2)自動化后處理對比。記錄DUT的輸出,通過運行腳本對比結(jié)果。我們可以將需要的結(jié)果寫為文件保存,導(dǎo)入MATLAB進行對比分析。也可將期望得到的結(jié)果與DUT輸出的結(jié)果通過程序自動對比分析。(3)做一個實時監(jiān)測器自動檢查。當(dāng)然,監(jiān)測器需要進行開發(fā),當(dāng)對比發(fā)生錯誤時,通過設(shè)置錯誤標(biāo)志和打印信息提示,便于快速發(fā)現(xiàn)錯誤,節(jié)省仿真時間。在功能驗證時,需要考慮主要功能點,提供比較完備的測試用例。對于FPGA功能模塊的驗證,或許用不上去搭建復(fù)雜的驗證平臺,但是這樣的驗證方法和思想依然可借鑒。在芯片設(shè)計領(lǐng)域,驗證工程師作為獨立崗位,承擔(dān)著設(shè)計把關(guān)的重任,一旦投片,基本就決定這款芯片的命運了。像筆者這樣的FPGA工程師新手而言,主要任務(wù)就是算法實現(xiàn)。算法工程師把算法模型交給你,你就開始制定功能模塊實現(xiàn)方案、與前后級商討接口、RTL設(shè)計、仿真驗證到上板調(diào)試。相對于數(shù)字IC工程師的獨立性而言,FPGA工程師需要的技能也許更多:首先要懂算法,至少要理解算法處理流程;其次,常規(guī)技能要掌握,就是RTL設(shè)計能力;仿真驗證能力,如何設(shè)計好的testbench來驗證你的DUT,保證系統(tǒng)集成時不會有問題;最后還需要上板調(diào)試,需要掌握調(diào)試手段和驗證分析能力,對整個系統(tǒng)需要比較熟悉,常常涉及射頻和協(xié)議棧。隔行如隔山,精力也有限,因此挑戰(zhàn)必然存在。整個驗證流程,我們通過下圖來說明。這里上圖提到的回歸測試和覆蓋率收斂,對于小白或新手而言,可能比較陌生,尤其是對于我這樣的非驗證崗人員。一旦幾乎全部測試用例被成功執(zhí)行,那么驗證就進入了回歸測試(regressiontest)和覆蓋率收斂階段。回歸測試要求能夠周期的批處理運行,并且激勵能夠得到重現(xiàn),成功或失敗都能夠自動檢查。這個時候,所有測試應(yīng)該在每天或每周做回歸周期性運行,查看覆蓋率,解決可能存在的bug,盡可能實現(xiàn)覆蓋率100%。對于做FPGA的工程師而言,仿真時間太長,就不爽了。我們關(guān)心的是,功能驗證和邏輯驗證。覆蓋率沒有100%,也不要緊。不管是Vivado還是QuartusII自帶的仿真器,或者Modelsim,都可用來做仿真。使用Modelsim做來聯(lián)合仿真時,需要注意版本匹配和庫文件編譯。驗證技術(shù)和方法學(xué)有三種常用驗證手段:白盒、黑盒和灰盒驗證。三種主要驗證技術(shù):形式驗證、仿真驗證和硬件加速驗證。三種主要驗證方法學(xué):隨機激勵生成、斷言驗證和覆蓋率驗證。做功能驗證,目標(biāo)就是驗證設(shè)計能否能夠像預(yù)期工作。然而,可能存在一些設(shè)計缺陷并沒有在輸出邊界暴露出來,檢測產(chǎn)生遺漏等。黑盒驗證:只通過其邊界信號來驗證一個模塊或設(shè)計的功能。驗證模型:黑盒驗證有優(yōu)點,也有缺點。優(yōu)點就是看起來testbench搭建簡單,缺點就是DUT內(nèi)部錯誤不好驗證。FPGA仿真驗證,就類似這樣。對于算法實現(xiàn)而言,常常利用FPGA仿真結(jié)果與MATLAB運算結(jié)果對比,比如畫個圖,畫條線,數(shù)據(jù)相減,計算方差等等。內(nèi)部邏輯則可通過觀察波形來判斷,局限于復(fù)雜度不高的情況。白盒驗證和灰盒則通過在設(shè)計內(nèi)部或者外部輸出信號放置監(jiān)控器或斷言來保證設(shè)計操作的正確性,不需要參考模型。
關(guān)于驗證技術(shù)中的形式驗證、仿真驗證和硬件輔助加速驗證等,其概念和使用方法,咱們不詳細(xì)去討論了,有興趣的朋友,去找?guī)妆維ystemVerilog驗證的參考書看看。在功能驗證中,驗證工程師面臨著以下挑戰(zhàn):完備性:最大限度驗證DUT的行為,然而,怎樣去獲取必須被驗證的場景,提高覆蓋率??芍赜眯裕嚎紤]如何優(yōu)化驗證環(huán)境架構(gòu),使其可在不同場景下重用。若每做一個工程或迭代更新一個版本,都需要重新去設(shè)計testbench,那會累死三軍??煽啃裕涸隍炞C中減少手工操作,以減少認(rèn)為錯誤和節(jié)省時間,然而,搭建一個自動化系統(tǒng)也并非易事,需仔細(xì)分析和搭建,同時采用約束隨機進行驗證。效率:在給定時間內(nèi),對驗證工作投入的產(chǎn)出最大化,提高驗證的成功率。對于設(shè)計師而言,我們常常采用重用技術(shù),比如某個通用模塊,可在不同工程中使用,我們進行簡單移植修改即可。然而驗證就沒有這么幸運了,場景不同,激勵也不同,產(chǎn)生的結(jié)果也不同。性能:驗證程序性能上的挑戰(zhàn)就是要如何最大化驗證程序的效率。驗證耗時費力,所以,每年在秋招春招時,大量芯片類企業(yè)招驗證工程師。筆者去年秋招時,本來投遞設(shè)計崗,然后當(dāng)你筆試或者面試的時候,給你安排驗證的崗位。功能驗證方法學(xué),就是驗證電子系統(tǒng)的技術(shù)和科學(xué)。前面,筆者在《FPGA工程師的核心競爭力—方法篇(一、二)》中,總結(jié)了UltraFast設(shè)計方法學(xué),從而有效提高設(shè)計和效率。而對于驗證這一環(huán),也是有章法可循。設(shè)計與驗證,相輔相成,如下圖:DUT能正常工作嗎?測試功能點是什么?怎么測?功能對不對?我們做完驗證了嗎?簡直就是靈魂拷問。在驗證方法中,斷言驗證(ABV)、約束隨機激勵測試(CRTB)、覆蓋率驅(qū)動驗證(CDV)等技術(shù)將會極大提高驗證效率。縮短驗證周期,快速定位錯誤,加速激勵生成和有效實現(xiàn)驗證收斂。對于FPGA工程師而言,在進行設(shè)計和仿真驗證中,最常用的語言是verilogHDL或VHDL,各有千秋。verilogHDL用起來比較靈活,有C語言基礎(chǔ)和硬件思維,就可以快速入門。VHDL語法嚴(yán)謹(jǐn),有利于大規(guī)模系統(tǒng)集成。SystemVerilog是業(yè)界新興的工程語言,基于verilogHDL進行了擴展,包括對硬件建模的擴展和驗證斷言方面的擴展。SystemVerilog具有以下優(yōu)點:(1)單一,同時支持設(shè)計和驗證的標(biāo)準(zhǔn)語言。(2)支持約束隨機的產(chǎn)生。(3)支持覆蓋率統(tǒng)計分析。(4)支持?jǐn)嘌则炞C。(5)面向?qū)ο蟮木幊探Y(jié)構(gòu),有助于采用事務(wù)級的驗證和提高驗證的重用性?;赟ystemVerilog的驗證方法學(xué)有:OVM、VMM和UVM。目前,業(yè)界最流行的是UVM。相信你在或?qū)诮窈蟮摹敖鹁陪y十”的秋招時,會被問到是否對UVM有所了解。如果你是看到本文了解到UVM這個概念,那么趕緊再深入了解一下。下圖是驗證方法學(xué)的發(fā)展時間線:UVM(UniversalVerificationMethodology)通用驗證方法學(xué)。它起源于OVM(OpenVerificationMethdology),其正式版是在2011年2月由Accellera推出的,得到了Synopsys、Cadence和Mentor的一致支持。UVM幾乎完全繼承了OVM,同時又采納了Synopsys在VMM中的寄存器解決方案RAL。UVM繼承了OVM和VMM的優(yōu)點,克服了各自的缺點,代表了驗證方法學(xué)的發(fā)展方向。下圖是典型的UVM驗證平臺框圖:由于SystemVerilog可完全兼容Verilog,所以你在.sv文件中加入幾行Verilog語法的程序也不會出錯。比如讀寫文件的操作,前幾天,筆者也不了解這個SystemVerilog的用法,就在微信群里問這種小兒科問題:“SystemVerilog和Verilog在讀寫文件操作上,有什
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《溝通中外文明的“絲綢之路”》聽課評課記錄3(新部編人教版七年級上冊歷史)
- 人教版部編歷史九年級下冊《第5課 第二次工業(yè)革命》聽課評課記錄
- 湘教版數(shù)學(xué)九年級上冊3.4.1《相似三角的判定》(第1課時)聽評課記錄
- 人教部編版九年級歷史下冊聽課評課記錄:第4課《日本明治維新》
- 北師大版歷史八年級上冊第2課《第二次鴉片戰(zhàn)爭》聽課評課記錄
- 蘇教版四年級數(shù)學(xué)上冊期末復(fù)習(xí)口算練習(xí)題一
- 蘇教版二年級數(shù)學(xué)下冊《兩位數(shù)減兩位數(shù)的口算》教學(xué)設(shè)計
- 上市或擬上市公司獨立董事聘任合同范本
- 孵化器委托運營協(xié)議書范本
- 企業(yè)承包合同范本
- 2023年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)模擬試題及答案解析
- 鋁合金門窗設(shè)計說明
- 常見食物的嘌呤含量表匯總
- 小學(xué)數(shù)學(xué)-三角形面積計算公式的推導(dǎo)教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 人教版數(shù)學(xué)八年級下冊同步練習(xí)(含答案)
- SB/T 10752-2012馬鈴薯雪花全粉
- 2023年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招(英語)試題庫含答案解析
- 秦暉社會主義思想史課件
- 積累運用表示動作的詞語課件
- 機動車登記證書英文證書模板
- 質(zhì)量管理體系基礎(chǔ)知識培訓(xùn)-2016
評論
0/150
提交評論