FPGA驗證之SystemVerilog+UVM

 
 
數字芯片和FPGA的驗證。主要是其中的功能仿真和時序仿真。

驗證中一般要搭建一個完整的測試平臺和寫所須要測試用例。而verilog這種硬件描述語言是出於可綜合成電路的目的設計出來的,因此它在書寫測試平臺和測試用例是不夠方便的(測試平臺和用例不須要綜合成電路)。而SV正是因爲它不須要知足可綜合性,因此它變得很是靈活,它引入了面嚮對象語言的概念。在驗證方面,若是說verilog是C語言的話,那SV就是C++,他不光有verilog的全部特性,還有自身面向對象的特性。若是你瞭解一點面向對象的概念的話,應該可以更好地理解其中的差別。

但說到底SV實際上只是一種語言,它撐不起如今芯片龐大的驗證規模。就像英語,你光知道詞彙和語法是不夠的。你須要一種模版,來讓行文變得容易、流暢和優美,來應付各類複雜的場景。SV這種語言之上的就是UVM、OVM等方法學。

說是叫方法學,其實UVM更像是一種庫。你調用這種庫的時候,就可使用庫中各類寫好的函數。更棒的是,你可使用它預設好的成熟的框架體系。這樣大量的測試平臺所須要的代碼均可以複用,做爲驗證工程師,你只須要集中注意力去設計你所需的測試用例,考慮會發生故障的情形就能夠了。

 
 
 
SystemVerilog,ASIC front end verification 本質上仍是仿真,須要提供輸入。SV可以跟方便編寫輸入源,控制激勵在不一樣時鐘週期的變化,C只是一個輔助處理特殊任務函數。 C/systemC不少狀況下用來編寫對照模型 計算對照參數,可是testbench仍是基於SV的,並且TB須要Fcov/ Assertion, SV更方便。工業界流行的驗證方法UVM OVM在ASIC驗證上大多數也是由SV實現的
 
 


C++的繼承、多態是基礎~SystemC是C++的一個類庫,是在C++面向對象基礎上實現了一個任務調度的kernel,再在其基礎上構建interface/port/channel等數據結構,之上還有TLM2.0,scv2.0!由於sc自己就是C++,因此它與系統軟件聯合建模驗證架構沒有任何障礙~
SystemVerilog主要適用於模塊級/IP級驗證,但感受與上層軟件銜接的流暢度沒有SC好!雖然sv實現了UVM思想,但仍是沒有充分體現UVM的統一二字~這一點有點硬傷~
SC的UVM庫立刻就要推出了~後面就有得一瞧了~若是綜合工具再給力一點,使用SC描述IC前段設計、驗證的全部階段也不是不可能~
其實學什麼都是相通的~關鍵是要貼合項目去實踐。若是有大量的項目來餵你,效果會很好~^_^




目前的IC驗證都是用SystemVerilog語言+UVM驗證方法學,C偶爾用來輔助編寫參考模型或者進行軟硬件協同仿真。因此學習SV和UVM就能夠了,固然最好再學點Verilog的設計知識,這樣驗證工做會作的比較完善。
 
 
 
 
從剛接觸System Verilog以及後來的VMM,OVM,UVM已經有不少年了,隨着電子工業的逐步發展,國內對驗證人才的需求也會急劇增長,這從各大招聘網站貼出的職位上也能夠看出來,很多朋友可能想盡快掌握這些知識,自學是一個好辦法,我結合本身的親身經歷和你們談談初學者如何能儘快入門,繼而成爲一名合格的IC驗證師。
 
1.首先來談談仿真工具,無非就是Synopsys,Cacence Mentor三大公司的vcs, incisive, modelsim,其實還有些稍小一些公司象aldec公司的Riviera-PRO也不錯,若是能接觸到這些工具,再能有水平比較高的人提供一些指點就方便多了。若是手頭沒有工具,則要本身考慮在UNIX上安裝合適的工具,這我就很少說了,你們都懂的,哈哈。若是你也不會或者不肯意安裝工具那麼能夠去這裏EDA-playground看看,能夠在線直接仿真出結果,若是你的網速比較快,這也不失爲一個好注意。
 
2.如今市面上的參考資料比前幾年多多了,不能簡單地說是參差不齊,至少要找到適合與本身當前狀況的資料。不要東看看西瞅瞅,由於包含的內容太多了,當你搞懂這一塊的時候另外一塊可能忽略了或者遺忘了,因此最好認真專一於一兩本書籍,千萬不要貪多,我推薦如下幾本:
若是Verilog基礎很差,應該加緊學習,畢竟是SystemVerilog的基礎,夏宇聞編寫的Verilog數字系統設計教程是首選。首先accellera的UniversalVerification Methodology User's Guide仍是要讀一讀的,雖然寫的不生動,畢竟只是一個說明書。有關SystemVerilog的書籍市面上很少,Synopsys 的chrisspear10年前所著的《SystemVerilog for Verification》如今看來依然不錯。前幾年Cadence的kathleenA Meade寫了一本《A Practical Guide to Adopting the UniversalVerification Methodology(UVM)》,裏面配有大量實際驗證中的例子,頗有價值。這自己出版後反映不錯,因此有了後來的另外一本書AdvancedVerification Topics主要介紹混合信號,低功耗,以及多語言驗證問題,有興趣的朋友能夠參考一下。三大公司中的MentorGraphics也貢獻了《VERIFICATION METHODOLOGY ONLINECOOKBOOK》。國內新出版的《UVM實戰》也頗有影響,不過它的第二部也就是源代碼部分實用性不大,就此我曾經詢問過UVM的communitymember中的高人,他們都不推薦去研讀代碼,由於其中有很多東西涉及到各公司以及各大用戶中的不少苟且之事,不少說不定下一版本就會更改甚至取消,和咱們使用UVM驗證環境的工程師沒有多大的關係。不少公司對設計工程師的assertion有要求,其實設計工程師本身寫的斷言每每比驗證工程師更實用,《A Practial Guide for SystemVerilog Assertions》也有中文版,例子和翻譯都不錯。
 
3.我想鼓勵初學者的是不要被厚厚的說明書給嚇一跳,主要是掌握基礎概念。SystemVerilog中除了受限隨機,功能覆蓋率等之外,數據類型,運算符,類的概念都和C++相似,這些也每每是面試中的重點。相比SystemVerilog,UVM中的內容要少些可是牽扯到很多面向對象設計中比較專業的問題象factory,callback等,這須要經過仔細分析代碼來理解。總之,從基本概念入手不要妄圖一會兒把全部問題都搞清楚,雖然不通過多年實際工做項目的考驗是沒法真正掌握這些內容的,可是不排除通過短時間的訓練迅速得到敲門磚的可能。
 
4.其它資料,包括一些網站和論壇,像本站就有海量的資料,UVM的官方網站VerificationAcademy有UVM的介紹和視頻,甚至還能夠就一些比較專業的問題向committeemember諮詢。
 
 
下面的連接是一個寫的不錯的基於UVM的FPGA驗證例子,共勉http://www.cnblogs.com/bettty/p/5285785.html
相關文章
相關標籤/搜索