在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4255|回复: 7

[求助] uvm_driver类中的端口

[复制链接]
发表于 2014-9-19 17:49:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
各位大神:

UVM_driver类中的seq_item_port端口 调用的get_next_item方法怎么是sequencer类中的?在port类中没有找到get_next_item方法还有driver在例化时没有显示的调用seq_item_port.get_next_item(item)方法,这个数据包是怎么传递进来的?
通过查找uvm_1.1d源代码,并没有在start_item 和finish_item函数中找到sequence的写入数据包操作。
我个人感觉seq_item_port端口调用的就是sequencer中的方法,但是seq_item_port貌似和sequencer没有什么关系。求大神解答一下
发表于 2014-9-19 18:18:11 | 显示全部楼层




   1. 一般的,在driver的main_phase或者run_phase中显式的调用seq_item_port.get_next_item();

   2. seq_item_port.get_next_item()最终会调用相应sequencer的get_next_item,而这个task会从m_req_fifo中拿数。   

   3. sequence会通过各种task向m_req_fifo写入数据。
发表于 2014-9-22 17:01:38 | 显示全部楼层
class uvm_seq_item_pull_port #(type REQ=int, type RSP=REQ)
  extends uvm_port_base #(uvm_sqr_if_base #(REQ, RSP));
  `UVM_SEQ_PORT(`UVM_SEQ_ITEM_PULL_MASK, "uvm_seq_item_pull_port")
  `UVM_SEQ_ITEM_PULL_IMP(this.m_if, REQ, RSP, t, t)

  bit print_enabled;
   
endclass

中的宏UVM_SEQ_ITEM_PULL_IMP里面定义了task get_next_item
我没有继续追,再继续应该是通过sequencer的export获取sequence_item,因为driver的port已经connect到sequencer的export了。
 楼主| 发表于 2014-9-22 17:08:22 | 显示全部楼层


class uvm_seq_item_pull_port #(type REQ=int, type RSP=REQ)
  extends uvm_port_base #(uvm_sqr_if_bas ...
ly1dragon 发表于 2014-9-22 17:01




   get_next_item 应该是端口调用的,但是在端口基类中只有一个get_next_item方法,该方法不做任何事情就返回了,我查了下源代码,只有sequencer中才有get_next_item方法具体的实现。
发表于 2014-9-22 17:20:57 | 显示全部楼层
第二个问题:

sequence.start(sequencer)或者start_item
会调用sequencer.send_request,你查看这个task会看到有fifo的put操作
而sequencer.get_next_item会有fifo的get(peek)操作
而get_next_item的发起源头是driver,这样driver就获得了sequence_item
发表于 2014-9-23 09:15:40 | 显示全部楼层
回复 4# allencherry


   task get_next_item(output REQ t); this.m_if.get_next_item(t); endtask
明显有一个调用export中get_next_item的语句,怎么会没有返回呢
 楼主| 发表于 2014-9-23 10:34:24 | 显示全部楼层


回复  allencherry


   task get_next_item(output REQ t); this.m_if.get_next_item(t); endtask
明 ...
ly1dragon 发表于 2014-9-23 09:15



get_next_item中的参数是输出的,相当于返回。从这里get到一个transaction item.
发表于 2014-9-23 10:46:11 | 显示全部楼层
you can treat it as the uvm system embedded port.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-20 19:59 , Processed in 0.020437 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表