uvm_do宏及其變體提供了創(chuàng)建、隨機(jī)化和發(fā)送transaction items或者sequence的方法。
`uvm_do
`uvm_do宏將uvm_sequence或uvm_sequence_item類型的變量作為參數(shù)。使用factory創(chuàng)建一個對象并賦值給指定的變量。
當(dāng)driver從sequencer中請求一個uvm_sequence_item時,該uvm_sequence_item被隨機(jī)化并提供給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宏,發(fā)送了一個類型為simple_item的數(shù)據(jù)項(xiàng)。

類似地,下面的例子聲明了一個sequence(simple_seq_sub_seqs),使用`uvm_do來執(zhí)行前面定義的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類似。
第一個參數(shù)是從uvm_sequence_item派生出來的變量,包括uvm_sequence_item或者uvm_sequence 。
第 二 個 參 數(shù) 可 以 是 任 何 有 效 的inline constraints。
在下面的例子中,sequence產(chǎn)生兩個數(shù)據(jù)項(xiàng),對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
如果約束條件只是用來將發(fā)送數(shù)據(jù)設(shè)置為特定的值,可以用用戶定義的任務(wù)來代替宏。
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
+關(guān)注
關(guān)注
0文章
183瀏覽量
20087 -
sequence
+關(guān)注
關(guān)注
0文章
23瀏覽量
3293
原文標(biāo)題:UVM中的uvm_do宏
文章出處:【微信號:芯片驗(yàn)證工程師,微信公眾號:芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
IC驗(yàn)證之UVM常用宏匯總分析(四)
IC驗(yàn)證"一個簡單的UVM驗(yàn)證平臺"是如何搭建的(六)
數(shù)字IC驗(yàn)證之“什么是UVM”“UVM的特點(diǎn)”“UVM提供哪些資源”(2)連載中...
數(shù)字IC驗(yàn)證之“搭建一個可以運(yùn)行的uvm測試平臺”(5)連載中...
什么是uvm?uvm的特點(diǎn)有哪些呢
談?wù)?b class='flag-5'>UVM中的uvm_info打印
UVM中seq.start()和default_sequence執(zhí)行順序
我的第一個UVM代碼——Hello world
UVM中uvm_config_db機(jī)制背后的大功臣
如何用Verdi查看UVM環(huán)境中的變量?
UVM中uvm_config_db機(jī)制背后的大功臣
一文詳解UVM設(shè)計模式
UVM設(shè)計中的sequence啟動方式有哪幾種呢?
UVM中的uvm_do宏簡析
評論