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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2874|回复: 3

[求助] uvm 设置 virtual sequencer 跑到driver里 clock不动

[复制链接]
发表于 2012-10-24 17:57:46 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 xileito 于 2012-10-24 18:02 编辑

一样的代码 ,不设置 virtual sequencer 就能一直执行sequence,有波形产生。
设置virtual sequencer 就没有任何波形产生, 执行到driver里,在@(posedge vif.clock iff (vif.reset)) 这个地方一直等待。

在driver里的代码

task uart_tx_driver::get_and_drive();

  while (1) begin

    reset();

    fork

      @(negedge vif.reset)

    begin

      forever begin

        @(posedge vif.clock iff (vif.reset))                        //  执行到这里就一直等到, clock也不动

        seq_item_port.get_next_item(req);

        send_tx_frame(req);

        seq_item_port.item_done();

      end

    end

join_any

    disable fork;

    //If we are in the middle of a transfer, need to end the tx. Also,

    //do any reset cleanup here. The only way we got to this point is via

    //a reset.

        `uvm_info(get_type_name(), "Get out the loop\n", UVM_LOW)

    if(req.is_active()) this.end_tr(req);

  end

endtask : get_and_drive



run_phase部分

task uart_tx_driver::run_phase(uvm_phase phase);

  fork

    get_and_drive();

    gen_sample_rate(ua_brgr, sample_clk);

  join

endtask : run_phase


请各位前辈帮帮忙 谢谢了

发表于 2012-10-25 21:49:00 | 显示全部楼层
你的driver肯定没有get到transaction,一直block住了。看看你的Virtual Sequencer里面的Sequencer指针有没有指向Agent里面的Sequencer
发表于 2012-11-22 11:26:49 | 显示全部楼层
没有启动sequence
发表于 2013-1-24 08:43:47 | 显示全部楼层
一楼说的有理,不过先检查下你的reset有没有被置位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-22 08:48 , Processed in 0.019618 second(s), 9 queries , Gzip On, Redis On.

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