在agent的connect_phase里
drvr.seq_item_port.connect(seqr.seq_item_export);
drvr的run_phase里
forever begin
seq_item_port.get_next_item(req);
...
...
...
seq_item_port.item_done();
end
uvm_driver中有一個(gè)派生自u(píng)vm_seq_item_pull_port的成員 seq_item_port;
uvm_sequencer中有一個(gè)派生自u(píng)vm_seq_item_pull_imp的成員seq_item_export。
如果不想使用自帶的成員變量,也可以自行在drvr中定義uvm_seq_item_pull_port #(REQ, RSP)等類(lèi)型的變量,此外與Sequencer中的export的連接方式和上面相同。
Driver和Sequencer之間的連接和對(duì)應(yīng)關(guān)系體現(xiàn)在兩個(gè)TLM端口的connect上。多個(gè)Driver不能和一個(gè)Sequencer連接,多個(gè)Sequencer也不能和一個(gè)Driver連接,也就是說(shuō)Driver和Sequencer是一對(duì)一的關(guān)系;更準(zhǔn)確的說(shuō),是一個(gè)seq_item_port只會(huì)connect一個(gè)seq_item_export,我們可以在一個(gè)Driver中用數(shù)組的形式定義多個(gè)uvm_seq_item_pull_port,用來(lái)連接多個(gè)Sequencer(一個(gè)seqr對(duì)應(yīng)一個(gè)uvm_seq_item_pull_imp),在agent里例化多個(gè)seq和seqr(數(shù)組形式),然后在connect_phase里連接drvr和seqr。