UVM 的精髓在于給驗證人員提供了快速搭建 testbench 的途徑
[導(dǎo)讀]UVM(universalverificationmethodology),俗稱通用驗證方法學(xué)。通用二字在于其將以前所有的驗證方法學(xué)(OVM、VMM、VMM等等)都融合到一起,類似于秦王統(tǒng)一六國的意思。其是由三大EDA巨頭成立了一個accellera的組織,共同推的一個驗證方法學(xué)...
UVM(universal verificationmethodology),俗稱通用驗證方法學(xué)。通用二字在于其將以前所有的驗證方法學(xué)(OVM、 VMM、 VMM 等等)都融合到一起,類似于秦王統(tǒng)一六國的意思。其是由三大 EDA 巨頭成立了一個 accellera 的組織,共同推的一個驗證方法學(xué)標(biāo)準(zhǔn),后面什么 AMD、 ARM、 intel、 ericsson、 qualcomm等等半導(dǎo)體巨頭也都加入了該組織,下面圖片羅列了現(xiàn)在該組織的合作成員,可見 accellera 勢力之強大。
按照其官網(wǎng)上的說法,該組織是一個獨立的,致力于生成、支持、推進(jìn)和提高用于全世界范圍的電子產(chǎn)業(yè)系統(tǒng)級別的用于設(shè)計、建模、和驗證標(biāo)準(zhǔn)的非營利組織。說白了就是組成壟斷巨頭掌控未來 EDA 發(fā)展的方向。
該組織目前推的三大標(biāo)準(zhǔn)是 SystemC、 UVM 和 IP-XACT。UVM,俗稱通用驗證方法學(xué),是目前做驗證無法繞過但是很難吃透的一塊知識,無法繞過是因為其為驗證平臺的搭建和 case 的加載提供了很多現(xiàn)成的模塊和組件以及機制、框架, 很難吃透的意思是其內(nèi)部具體實現(xiàn)機制比較復(fù)雜, 掌握其原理比較困難。?
對于我們驗證人員,如果僅僅掌握如何使用 UVM 還是比較簡單的(其實,掌握 UVM 的使用方法也是比較復(fù)雜的,因為不知道其實現(xiàn)原理,因此只能按照別人的使用方法去照搬,而不是根據(jù)自己的需求來考慮用 UVM 的哪一部分的功能,這目前也是自己比較遺憾的一點)。
按照 UVM 用戶指南手冊上的說法, UVM 提供了一個用于以覆蓋驅(qū)動驗證
(CVD, coverage-driven verification)的最好的框架。覆蓋驅(qū)動驗證結(jié)合了自動測試用例生成,自測平臺和覆蓋向量從而減少了驗證設(shè)計的時間。
UVM 主要用于驗證數(shù)字邏輯電路的正確性。其基本原理如下圖所示:設(shè)計人員和驗證人員針對同一個數(shù)字邏輯的特性列表(feature list)分別完成兩個模型。設(shè)計人員通常用 Verilog或 VHDL語言完成,通常稱之為 DUT(Design Under Test);驗證人員通常用 SystemVerilog、 SystemC、 C 語言、 matlab 語言完成(但是目前支持較好的語言僅為 SystemVerilog、 systemC、以及 C 語言,支持最好的語言是 SystemVerilog),通常稱之為參考模型(reference model)。
然后向兩個模型分別施加相同的激勵,根據(jù)輸出判斷兩個模型是否一致,如果不一致,則修改 DUT 或 reference model ,直到兩個模型完全一致。這里完全一致是用代碼覆蓋率和功能覆蓋率來體現(xiàn)的。
Verilog、 SystemVerilog 之間的關(guān)系相當(dāng)于 C、 C ,因為 SV 支持 Verilog所有的語言。另外 SystemVerilog 中引入了 C 中的類的概念,使得 reference model 和驗證平臺的編寫更加容易,但其部分語句無法綜合(無法綜合到硬件電路中)。
UVM 在基于 SystemVerilog 的基礎(chǔ)上給出了一個封裝庫,其中包括了通用的驗證架構(gòu)、基本的模塊類(driver、 scoreboard 等)、通信機制(port、 analysis port、imp 等)。用基本的模塊類擴展得到需要的模塊后填充到驗證架構(gòu)中,然后用合適的通信機制將模塊串起來,這樣就得到了驗證平臺,十分方便。
另外 UVM 給出了激勵的封裝類型 transaction(具體說應(yīng)該是 uvm_sequence_item) 和隨機化的方式(不知道是 SV 提供的還是 UVM 提供的,按理來說應(yīng)該是SV 提供了理論,因為基于對象, UVM 提供了具體可用的代碼)。通過 UVM 定義好的 uvm_sequence_item 類,驗證人員能夠按照自己的需求很方便的約束和隨機化各種類型的激勵。
總體來說, UVM 提供了一個便捷的、預(yù)定義的、靈活的驗證框架。該框架中規(guī)定了基本的驗證平臺需要的基本組件、通信機制、激勵類型,驗證流程。驗證人員按照其定義能夠快速搭建驗證平臺。
UVM 的精髓在于給驗證人員提供了快速搭建 testbench 的途徑,從而使得驗證人員能夠?qū)⒐ぷ髦匦姆旁跍y試?yán)木帉懮稀?/span>
按照其官網(wǎng)上的說法,該組織是一個獨立的,致力于生成、支持、推進(jìn)和提高用于全世界范圍的電子產(chǎn)業(yè)系統(tǒng)級別的用于設(shè)計、建模、和驗證標(biāo)準(zhǔn)的非營利組織。說白了就是組成壟斷巨頭掌控未來 EDA 發(fā)展的方向。
該組織目前推的三大標(biāo)準(zhǔn)是 SystemC、 UVM 和 IP-XACT。UVM,俗稱通用驗證方法學(xué),是目前做驗證無法繞過但是很難吃透的一塊知識,無法繞過是因為其為驗證平臺的搭建和 case 的加載提供了很多現(xiàn)成的模塊和組件以及機制、框架, 很難吃透的意思是其內(nèi)部具體實現(xiàn)機制比較復(fù)雜, 掌握其原理比較困難。?
對于我們驗證人員,如果僅僅掌握如何使用 UVM 還是比較簡單的(其實,掌握 UVM 的使用方法也是比較復(fù)雜的,因為不知道其實現(xiàn)原理,因此只能按照別人的使用方法去照搬,而不是根據(jù)自己的需求來考慮用 UVM 的哪一部分的功能,這目前也是自己比較遺憾的一點)。
按照 UVM 用戶指南手冊上的說法, UVM 提供了一個用于以覆蓋驅(qū)動驗證
(CVD, coverage-driven verification)的最好的框架。覆蓋驅(qū)動驗證結(jié)合了自動測試用例生成,自測平臺和覆蓋向量從而減少了驗證設(shè)計的時間。
UVM 主要用于驗證數(shù)字邏輯電路的正確性。其基本原理如下圖所示:設(shè)計人員和驗證人員針對同一個數(shù)字邏輯的特性列表(feature list)分別完成兩個模型。設(shè)計人員通常用 Verilog或 VHDL語言完成,通常稱之為 DUT(Design Under Test);驗證人員通常用 SystemVerilog、 SystemC、 C 語言、 matlab 語言完成(但是目前支持較好的語言僅為 SystemVerilog、 systemC、以及 C 語言,支持最好的語言是 SystemVerilog),通常稱之為參考模型(reference model)。
然后向兩個模型分別施加相同的激勵,根據(jù)輸出判斷兩個模型是否一致,如果不一致,則修改 DUT 或 reference model ,直到兩個模型完全一致。這里完全一致是用代碼覆蓋率和功能覆蓋率來體現(xiàn)的。
Verilog、 SystemVerilog 之間的關(guān)系相當(dāng)于 C、 C ,因為 SV 支持 Verilog所有的語言。另外 SystemVerilog 中引入了 C 中的類的概念,使得 reference model 和驗證平臺的編寫更加容易,但其部分語句無法綜合(無法綜合到硬件電路中)。
UVM 在基于 SystemVerilog 的基礎(chǔ)上給出了一個封裝庫,其中包括了通用的驗證架構(gòu)、基本的模塊類(driver、 scoreboard 等)、通信機制(port、 analysis port、imp 等)。用基本的模塊類擴展得到需要的模塊后填充到驗證架構(gòu)中,然后用合適的通信機制將模塊串起來,這樣就得到了驗證平臺,十分方便。
另外 UVM 給出了激勵的封裝類型 transaction(具體說應(yīng)該是 uvm_sequence_item) 和隨機化的方式(不知道是 SV 提供的還是 UVM 提供的,按理來說應(yīng)該是SV 提供了理論,因為基于對象, UVM 提供了具體可用的代碼)。通過 UVM 定義好的 uvm_sequence_item 類,驗證人員能夠按照自己的需求很方便的約束和隨機化各種類型的激勵。
總體來說, UVM 提供了一個便捷的、預(yù)定義的、靈活的驗證框架。該框架中規(guī)定了基本的驗證平臺需要的基本組件、通信機制、激勵類型,驗證流程。驗證人員按照其定義能夠快速搭建驗證平臺。
UVM 的精髓在于給驗證人員提供了快速搭建 testbench 的途徑,從而使得驗證人員能夠?qū)⒐ぷ髦匦姆旁跍y試?yán)木帉懮稀?/span>





