我正在为虚拟序列编写一些代码,如下所示:
class base_v_seq extends uvm_sequence #(uvm_sequence_item);
seqr1 seqr1h;
seqr2 seqr2h;
//function new......
endclass
class v_seq1 extends base_v_seq #(uvm_sequence_item);
//...
task body();
seq1 seq1h;
seq2 seq2h;
seq1h=seq1::type_id::create("seq1");
start_item(seq1.w_transh);--------------(1)
assert(se1.w_trans.randomize);
finish_item(seq1.w_transh);
seq1.start(seqr1);
endclass
class test extends uvm_test();
//...
task run_phase();
v_seq1.start(null);
endtask
endclass
class seq1 extends uvm_sequence#(uvm_sequence_item);
//...
wr_trans wr_transh;
endclass
我怀疑当我在v_seq1
中开始test
时,它会调用task body
方法,其中包含start_item()
seq1
start_item()
{1}};物理序列中存在的start_item
是否会产生任何问题?如何在v_seq1
和seq1
之间进行数据传输?
我的另一个问题是,是“seq1.start(seqr1);”需要?
答案 0 :(得分:0)
Seq_1创建一个项目并将其直接发送到运行它的音序器。当驱动程序调用seq_item_port.get()时,顺控程序将检查项是否存在,如果是,则顺控程序将返回该项。因此seq_1和vseq之间没有数据传输。请记住,虚拟序列用于协调物理序列