第2章一個簡單的UVM驗證平臺
2.4 UVM的終極大作:sequence
2.4.1 在驗證平臺中加入sequencer
sequence機制作用:用于產生激勵。其分為兩部分,一是sequence,二是sequencer。
在定義driver時指明此driver要驅動的transaction的類型,這樣定義的好處是可以直接使用uvm_driver中的某些 預先定義好的成員變量 ,如uvm_driver中有成員變量 req ,它的類型就是傳遞給uvm_driver的參數。由此帶來的變化如下:(不需要定義中間變量tr了)

2.4.2 sequence機制
三者關系:

每一個sequence都有一個body任務,當一個sequence啟動之后,會自動執行body中的代碼。body中uvm_do這個宏的作用如下:
- 創建一個my_transaction的實例m_trans;
- 將其隨機化;
- 最終將其送給sequencer。
如果不使用uvm_do宏,也可以直接使用start_item與finish_item的方式產生transaction。
sequencer負責協調sequence和driver的請求
- sequencer和driver之間
- 將兩者連接:drv.seq_item_port.connect(sqr.seq_item_export);
- 在driver中通過get_next_item任務來得到一個新的req,并且驅動它,驅動完成后調用item_done通知sequencer(完成握手)。

- sequencer和sequence之間:
- sequence中的uvm_do宏發送transaction后,會一直等待,直到driver返回item_done信號。
- 在某個component(如my_sequencer、 my_env)的main_phase中啟動這個sequence,即可讓sequence向sequencer發送transaction。


get_next_item和try_next_item的比較
- get_next_item是阻塞的,它會一直等到有新的transaction才會返回;
- try_next_item則是非阻塞的,它嘗試著詢問sequencer是否有新的transaction,如果有,則得到此transaction,否則就直接返回。其行為更加接近真實driver的行為
2.4.3 default_sequence的使用
引入default_sequence的原因:
- 在某個component的build_phase階段使用config_db與default sequence替代了在某個component的main_phase階段利用seq.start(i_agt.sqr)啟動sequence,將objection與sequence完全聯系起來,增加了可移植性。
如何使用default_sequence:
- 方法一:在某個component(如my_env)的build_phase中設置如下代碼

- 方法二:在top_tb中設置

使用default_sequence時 如何提起和撤銷objection ?
- 因為在sequencer在啟動default_sequence時,uvm_sequence的內置變量starting_phase會自動執行如下內容:

- 所以可以在sequence中使用借助starting_phase來提起和撤銷objection。

2.5 建造測試用例
2.5.1 加入base_test
對my_env進一步封裝,添加一些公司個性化內容,舉例如下:
- 在report_phase中根據UVM_ERROR的數量來打印不同的信息。它在main_phase結束之后執行。
- 設置整個驗證平臺的超時退出時間
- 通過config_db設置驗證平臺中某些參數的值
2.5.2 UVM中測試用例的啟動
通過傳遞參數變量值啟動的原因:
- 保證后加的測試用例不影響已經建好的測試用例
如何使用:
- 定義不同的base_test,讓run_test()使用缺省模式,然后通過在命令中傳遞參數變量來實現一次編譯執行多個用例,如下:
- +UVM_TEST_NAME=my_case0
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
UVM
+關注
關注
0文章
183瀏覽量
20013 -
sequence
+關注
關注
0文章
23瀏覽量
3261
發布評論請先 登錄
相關推薦
熱點推薦
新手學習System Verilog & UVM指南
新手學習SystemVerilog & UVM指南 從剛接觸System Verilog以及后來的VMM,OVM,UVM已經有很多年了,隨著電子工業的逐步發展,國內對驗證人才的需求也會急劇
發表于 03-11 16:24
IC驗證"為什么要學習UVM呢"
目前市面上基于SystemVerilog的驗證主要有三種:VMM(Verification Methodology Manual),這是Synopsys在2006年推出的,在初期是閉源的。當OVM
發表于 12-01 15:09
數字IC驗證之“什么是UVM”“UVM的特點”“UVM提供哪些資源”(2)連載中...
?uvm的特點以及uvm為用戶提供了哪些資源?什么是uvm呢?uvm是通用驗證方法學的縮寫,是為驗證服務的,uvm是基于systemveri
發表于 01-21 16:00
什么是uvm?uvm的特點有哪些呢
大家好,我是一哥,上章內容我們介紹什么是uvm?uvm的特點以及uvm為用戶提供了哪些資源?本章內容我們來看一看一個典型的uvm驗證平臺應該是什么樣子的,來看一個典型的
發表于 02-14 06:46
談談UVM中的uvm_info打印
下uvm_info的三個參數?! D是作為message的標記(tag)。 MSG就是真正要打印的message文本?! ERBOSITY用于傳遞uvm\_verbosity枚舉類型的數字。當
發表于 03-17 16:41
談UVM之sequence/item見解 sequencer特性及應用(下)
_SEQ_ARB_WEIGHTED;UVM_SEQ_ARB_RANDOM ;UVM_SEQ_ARB_STRICT_FIFO等。出其中三種需要特別區分外其它的模式可以滿足絕大多數的仲裁需求。
Modelsim uvm庫編譯及執行
第一句話是設置uvm環境變量,指定uvm的dpi位置。
第二句話是創建work工作目錄。
第三句話是編譯源文件,并且通過-L指定幾個編譯庫。
第三句是執行仿真,調用
開關電源學習筆記 --- 目錄
— Buck-Boost變換器的基本原理二.DC-DC變換器的電感設計開關電源學習筆記4 — DC-DC變換器的儲能電感設計之電磁學知識儲備開關電源學習筆記5 — DC-DC變換器的
發表于 10-22 09:36
?35次下載
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學習筆記(三)
評論