seqr和drvr的连接

在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之间的连接和对应关系体现在两个TLM端口的connect上。多个Driver不能和一个Sequencer连接,多个Sequencer也不能和一个Driver连接,也就是说Driver和Sequencer是一对一的关系;更准确的说,是一个seq_item_port只会connect一个seq_item_export,我们可以在一个Driver中用数组的形式定义多个uvm_seq_item_pull_port,用来连接多个Sequencer(一个seqr对应一个uvm_seq_item_pull_imp),在agent里例化多个seq和seqr(数组形式),然后在connect_phase里连接drvr和seqr。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容