[UVM源代码研究] sequence、 sequencer与driver的通信(uvm-1.2版)
driver与sequencer间的基本连接与通信
driver与sequencer之间的通信,我们最常用的最基本的方法就是
- driver中的seq_item_port在agent中connect到了sequencer中的seq_item_export
- driver中的seq_item_port通过调用get_next_item任务来从sequencer上获取transaction
于是我们产生如下几个问题:
- sequencer上的transaction从何处而来?
- get_next_item这个任务如何实现数据的传递?
- seq_item_port和seq_item_export分别是什么样的端口类型?
带着以上几个疑问我们看看uvm源代码中都是如何实现的。
get_next_item
src/seq/uvm_sequencer.svh中的源代码

src/comps/uvm_driver.svh中的源代码

经过TLM的学习我们知道在TLM通信中存在以下几个概念:
- initiator(调用通信方法)和target(实现通信方法)
- producer(产生数据)和consumer(使用数据)
由此我们得出如下结论:
- driver这里充当的是一个initiator和consumer的作用,发起get_next_item()的通信方法并获取数据,因而我们知道get_next_item()一定是在充当target的sequencer中实现的,并且数据也是在sequencer中产生。
- driver中seq_item_port是一个port类型,而sequencer中的seq_item_export是一个imp类型
自定义的d

本文详细剖析了UVM1.2版本中sequence、sequencer与driver之间的通信机制,包括get_next_item任务的实现、数据传递过程和相关变量的作用。通过TLM原理,揭示了driver作为initiator和consumer的角色,以及sequencer作为target的数据生成者。
最低0.47元/天 解锁文章
182

被折叠的 条评论
为什么被折叠?



