我寫一些代碼的虛擬序列如下:虛擬序列類計劃
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
我的疑問是,當我在test
開始v_seq1
它會調用它包含task body
方法start_item()
的seq1
是也有start_item()
; start_item
是否存在物理順序會產生任何問題?數據傳輸如何發生在v_seq1
和seq1
之間? 和我的另一個問題是,「seq1.start(seqr1);」需要?
對於您最後的問題,我想您可能不會調用start start_item(seq1.w_transh),這違反了類的封裝。你應該調用seq1.start(seqr1),並在seq1的主體中執行start_item。 –