uvm_do宏及其變體提供了創建、隨機化和發送transaction items或者sequence的方法。
`uvm_do
`uvm_do宏將uvm_sequence或uvm_sequence_item類型的變量作為參數。使用factory創建一個對象并賦值給指定的變量。
當driver從sequencer中請求一個uvm_sequence_item時,該uvm_sequence_item被隨機化并提供給driver。
class simple_seq_do extends uvm_sequence #(simple_item); ...//ConstructorandUVMautomationmacros virtual task body(); `uvm_do(req) endtask : body endclass : simple_seq_do
上面的例子中,simple_seq_do的body使用uvm_do宏,發送了一個類型為simple_item的數據項。
類似地,下面的例子聲明了一個sequence(simple_seq_sub_seqs),使用`uvm_do來執行前面定義的simple_seq_do類型的sequence。
class simple_seq_sub_seqs extends uvm_sequence #(simple_item); ... // Constructor and UVM automation macros simple_seq_do seq_do; virtual task body(); `uvm_do(seq_do) endtask : body endclass : simple_seq_sub_seqs
`uvm_do_with
`uvm_do_with宏與`uvm_do類似。
第一個參數是從uvm_sequence_item派生出來的變量,包括uvm_sequence_item或者uvm_sequence 。
第 二 個 參 數 可 以 是 任 何 有 效 的inline constraints。
在下面的例子中,sequence產生兩個數據項,對addr和data的值有特定的約束。
class simple_seq_do_with extends uvm_sequence #(simple_item); ...//ConstructorandUVMautomationmacros virtual task body(); `uvm_do_with(req, { req.addr == 16'h0120; req.data == 16'h0444; } ) `uvm_do_with(req, { req.addr == 16'h0124; req.data == 16'h0666; } ) endtask : body endclass : simple_seq_do_with
如果約束條件只是用來將發送數據設置為特定的值,可以用用戶定義的任務來代替宏。
class simple_seq_do_with extends uvm_sequence #(simple_item); task do_rw(int addr, int data); item= simple_item::create("item",,get_full_name()); item.addr.rand_mode(0); item.data.rand_mode(0); item.addr = addr; item.data = data; start_item(item); randomize(item); finish_item(item); endtask virtual task body(); repeat (num_trans) do_rw($urandom(),$urandom()); endtask ... endclass : simple_seq_do_with
審核編輯:劉清
-
UVM
+關注
關注
0文章
182瀏覽量
19359 -
sequence
+關注
關注
0文章
23瀏覽量
2933
原文標題:UVM中的uvm_do宏
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
IC驗證之UVM常用宏匯總分析(四)
IC驗證"一個簡單的UVM驗證平臺"是如何搭建的(六)
數字IC驗證之“什么是UVM”“UVM的特點”“UVM提供哪些資源”(2)連載中...
數字IC驗證之“搭建一個可以運行的uvm測試平臺”(5)連載中...
什么是uvm?uvm的特點有哪些呢
談談UVM中的uvm_info打印
UVM中seq.start()和default_sequence執行順序
我的第一個UVM代碼——Hello world
UVM中uvm_config_db機制背后的大功臣
如何用Verdi查看UVM環境中的變量?

評論