第1章與UVM的第一次接觸
基本沒有感興趣的內容,推薦直接從第2章開始,防止勸退。
第2章一個簡單的UVM驗證平臺
2.1 驗證平臺的組成


2.2 只有driver的驗證平臺
2.2.1 最簡單的驗證平臺
driver應該派生自uvm_driver,而uvm_driver派生自uvm_component。相關派生關系如下圖所示:

2.2.2 加入factory機制
factory機制的實現被集成在了一個宏中:uvm_component_utils。它可以將my_driver注冊在UVM內部的一張表中。只要在定義一個新的類時使用這個宏,就相當于把這個類注冊到了這張表中。然后使用run_test時,可以自動創建一個類的實例并調用其中函數main_phase。其中uvm_component_utils的入參是類名my_driver,而run_test入參為在UVM內部表中注冊的字符串名(注意:這里的字符串名必須和類名相同)。

2.2.3 加入objection機制
objection機制用來控制仿真的開始和結束。在每個phase中,UVM會檢查是否有objection被提起(raise_objection),如果有,那么等待這個objection被撤銷(drop_objection)后停止仿真;如果沒有,則馬上結束當前phase。

2.2.4 加入virtual interface
目的:杜絕在驗證平臺中使用絕對路徑,從而增強驗證平臺的可移植性。
SV和UVM中端口使用的比對:
- sv中
- 使用interface,通過對top_tb.my_driver.xxx的引用實現賦值。
- UVM中
- 引入virtual interface:解決UVM類中無法實例化接口的問題。
- 引入config_db機制:解決top中無法通過實例模塊引用內部接口的問題(UVM通過run_test語句實例化了一個脫離了top_tb層次結構的實例,建立了一個新的層次結構,導致top_tb.my_dut.xxx可以,但top_tb.my_driver.xxx不可以)。具體而言分為set和get兩步操作
- 引入了build_phase:為config_db機制的實現服務。它也是UVM中內建的一個phase,在new函數之后main_phase之前執行(是一個函數phase,不消耗仿真時間)。通過config_db的set和get操作來傳遞一些數據,以及實例化成員變量等。
config_db機制中set方法的使用

- 第一個參數:目標get所在實例的參考路徑索引(舉例:“null”,“this”)。在top_tb中設置virtual interface時,由于top_tb不是一個類,無法使用this指針,所以設置set的第一個參數為null。
- 第二個參數:目標get所在實例的路徑索引,它是相對于第一個參數的相對路徑(舉例:"uvm_test_top"、"uvm_test_top.drv")
- 第三個參數:一個名字,建立set與get之間的對應關系
- 第四個參數:set要傳遞個get的信號,信號為uvm_config_db#(xxx)中xxx的實例。
進一步解釋:
- 無論傳遞給run_test的參數是什么,創建的實例的名字都為uvm_test_top。
- 由于set操作的目標是my_driver,所以set函數的第二個參數就是uvm_test_top。
- set函數與get函數使用雙冒號是因為這兩個函數都是靜態函數,而uvm_config_db#( virtual my_if)則是一個參數化的類,其參數就是要寄信的類型。
uvm_fatal宏的理解
- 類似于斷言,條件為假時,結束仿真。
路徑索引的概念:
- UVM采用樹形結構,對于樹中任何一個結點,都有一個與其相應的字符串類型的路徑索引。路徑索引可以通過get_full_name函數來獲取,把下列代碼加入任何UVM樹的結點中就可以得知當前結點的路徑索引:
$display("the full name of current component is: %s", get_full_name());
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
字符串
+關注
關注
1文章
596瀏覽量
23165 -
UVM
+關注
關注
0文章
183瀏覽量
20012 -
PHASE
+關注
關注
0文章
14瀏覽量
11161
發布評論請先 登錄
相關推薦
熱點推薦
新手學習System Verilog & UVM指南
新手學習SystemVerilog & UVM指南 從剛接觸System Verilog以及后來的VMM,OVM,UVM已經有很多年了,隨著電子工業的逐步發展,國內對驗證人才的需求也會急劇
發表于 03-11 16:24
IC驗證"為什么要學習UVM呢"
推出了RGM,補上了這一短板。只是很遺憾的是,RGM并沒有成為OVM的一部分,要想使用RGM,需要額外下載。現在OVM已經停止更新,完全被UVM代替。UVM(Universal
發表于 12-01 15:09
數字IC驗證之“什么是UVM”“UVM的特點”“UVM提供哪些資源”(2)連載中...
原文鏈接:https://zhuanlan.zhihu.com/p/345775995大家好,我是一哥,上章內容主要講述兩個內容,芯片驗證以及驗證計劃。那本章我們主要講述的內容有介紹什么是uvm
發表于 01-21 16:00
請問一下在UVM中的UVMsequences是什么意思啊
在UVM方法學中,UVMsequences 是壽命有限的對象。UVM sequences從uvm_sequence_item基類擴展得到,uvm_sequence_item進
發表于 04-11 16:43
談談UVM中的uvm_info打印
。uvm_report_info(xxx)函數調用當前m_rh的report(xxx)函數來打印message。但在m_rh.report(xxx)內部其實是調用uvm_report_server class來打印消息的。uvm
發表于 03-17 16:41
我的第一個UVM代碼——Hello world
`uvm_component_utils有關
仿真命令:
irun -sv -uvmhome \\\\
/.../ies/tools/methodology/UVM/CDNS-1.2/sv \\\\
hello_world.sv
仿真結果如下:
最后,再用
發表于 11-03 10:18
什么是UVM environment?
UVM environment**包含多個可重用的驗證組件,并根據test case的需求進行相應的配置。例如,UVM environment可能具有多個agent(對應不同的interface)、scoreboard、functional coverage collec
UVM中uvm_config_db機制背后的大功臣
本次講一下UVM中的uvm_config_db,在UVM中提供了一個內部數據庫,可以在其中存儲給定名稱下的值,之后可以由其它TB組件去檢索。
UVM中uvm_config_db機制背后的大功臣
本次講一下UVM中的uvm_config_db,在UVM中提供了一個內部數據庫,可以在其中存儲給定名稱下的值,之后可以由其它TB組件去檢索。
一文詳解UVM設計模式
本篇是對UVM設計模式 ( 二 ) 參數化類、靜態變量/方法/類、單例模式、UVM_ROOT、工廠模式、UVM_FACTORY[1]中單例模式的補充,分析靜態類的使用,UVM中資源池的
UVM學習筆記(一)
評論