在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中有一個派生自uvm_seq_item_pull_port的成員 seq_item_port;
uvm_sequencer中有一個派生自uvm_seq_item_pull_imp的成員seq_item_export。
如果不想使用自帶的成員變量,也可以自行在drvr中定義uvm_seq_item_pull_port #(REQ, RSP)等類型的變量,此外與Sequencer中的export的連接方式和上面相同。
Driver和Sequencer之間的連接和對應(yīng)關(guān)系體現(xiàn)在兩個TLM端口的connect上。多個Driver不能和一個Sequencer連接,多個Sequencer也不能和一個Driver連接,也就是說Driver和Sequencer是一對一的關(guān)系;更準確的說,是一個seq_item_port只會connect一個seq_item_export,我們可以在一個Driver中用數(shù)組的形式定義多個uvm_seq_item_pull_port,用來連接多個Sequencer(一個seqr對應(yīng)一個uvm_seq_item_pull_imp),在agent里例化多個seq和seqr(數(shù)組形式),然后在connect_phase里連接drvr和seqr。