uvm 與 system verilog的理解

2021-07-10 11:29:14 字數 3971 閱讀 2385

數字晶元和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,再在其基礎上構建inte***ce/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

》現在看來依然不錯,

2009

年出版的中文字我是讀了好幾遍的。前幾年

cadence

的kathleena meade

寫了一本《

a practical guide to adopting the universalverification methodology(uvm)

》,後來的第二版我很喜歡,裡面配有大量實際驗證中的例子,很有價值。這本身出版後反映不錯,所以有了後來的另一本書

advancedverification topics

主要介紹混合訊號,低功耗,以及多語言驗證問題,有興趣的朋友可以參考一下。三大公司中的

mentor

graphics

也貢獻了《

verification methodology onlinecookbook

》。國內新出版的uvm實戰》也很有影響,不過它的第二部也就是源**部分實用性不大,就此我曾經詢問過

uvm的

communitymember

中的高人,他們都不推薦去研讀**,因為其中有不少東西涉及到各公司以及各大使用者中的很多苟且之事,很多說不定下一版本就會更改甚至取消,和我們使用

uvm驗證環境的工程師沒有多大的關係。很多公司對設計工程師的

assertion

有要求,其實設計工程師自己寫的斷言往往比驗證工程師更實用,《

apractial guide for systemverilog assertions

》也有中文版,例子和翻譯都不錯,這幾本書本站內基本都可以找到,如果沒有可以和我聯絡。

3.我想鼓勵初學者的是不要被厚厚的說明書給嚇一跳,主要是掌握基礎概念。systemverilog

中除了受限隨機,功能覆蓋率等以外,資料型別,運算子,類的概念都和

c++類似,這些也往往是面試中的重點。相比

systemverilog

,uvm

中的內容要少些但是牽扯到不少物件導向設計中比較專業的問題象

factory,callback

等,這需要通過仔細分析**來理解。總之,從基本概念入手不要妄圖一下子把所有問題都搞清楚,雖然不經過多年實際工作專案的考驗是無法真正掌握這些內容的,但是不排除經過短期的訓練迅速獲得敲門磚的可能。

4.其它資料

.包括一些**和論壇,象本站就有海量的資料,

uvm的官方**

verificationacademy

有uvm

committeemember

諮詢。另外在驗證工程師這個中文**有大量簡單示例對初學者也很有幫助。

UVM 關於UVM的路徑問題

3.5 config db機制 3.5.1 uvm中的路徑 在 清單2 3中已經介紹過,乙個component 如my driver 內通過get full name 函式可以得到此component的路徑 清單 3 91 function void my driver build phase su...

UVM驗證培訓 factory 實用的UVM機制

路科驗證官網 路科驗證 專注於數字晶元驗證的系統思想和前沿工程領域 eetop路科首頁 eetop 路科驗證 ic驗證培訓 csdn路科首頁 csdn 路科驗證 ic驗證培訓 uvm鼓勵工程師建立模組化 可復用的測試平台。uvm通過tlm介面,把乙個元件及其他與之相連的元件隔離開來,以此實現模組化。...

uvm類庫搜尋 UVM的類庫

乙個uvm驗證平台可以看成由多個模組組合在一起的,這和以前的verilog 以及verilog結合其它各種語言的驗證手段在理念上是一樣的,最大的不同就是這些模組不再是函式或者過程,而是乙個個物件,其實仔細想想如果想實現繼承,多型等等這些功能,類的概念勢必要引入的,這一點在學習systemverilo...