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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2204|回复: 5

[求助] 没人愿意说说吗?为什么触发的不是同一个事物呢?

[复制链接]
发表于 2013-10-31 11:03:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lkk1988223 于 2013-10-31 15:43 编辑

直接附代码:
virtual task body();
  automatic ahb_transfer a ;
    begin
      for(int i = 0; i <= itr; i++) begin
        req = ahb_transfer::type_id::create("req");
        start_item(req);
        assert(req.randomize());
        a = req ;
        fork
          begin
           a.wait_trigger("DATA_DONE") ;
           if(a.direction==READ) `uvm_info(get_type_name(),$psprintf("master sequence read data :\n%s",a.sprint()), UVM_LOW)
         end
        join_none
        finish_item(req);
      end
    end
  endtask

  task  automatic  do_pipeline_transfer ;
      ahb_transfer  transfer ;
      forever begin
        key.get();                //the key is a semaphore
        seq_item_port.get( transfer );
        `uvm_info(get_type_name(),$psprintf("Driving request :\n%s",transfer.sprint()), UVM_LOW)
        accept_tr(transfer,$time);
        void'(begin_tr(transfer,"pipelined_driver"));
        // driver   control  
         ...
        @(posedge vif.HCLK)
        key.put();
        //driver data
        ...
        @(posedge vif.HCLK iff vif. AHB_HREADY)
         if(transfer.direction == READ)
            begin
         transfer.rdata = vif.AHB_HRDATA;
        `uvm_info(get_type_name(),$psprintf("master read data :\n%s",transfer.sprint()), UVM_LOW)
         transfer.trigger("DATA_DONE");
         end
        end_tr(transfer);
      end
  endtask
output :
# UVM_INFO ahb_master_driver.sv(73) @ 75: uvm_test_top.ahb0.master_agent.driver [ahb_master_driver] master read data :
# ----------------------------------------------------------------------------------------------------------------------
# Name                           Type               Size  Value                                                         
# ----------------------------------------------------------------------------------------------------------------------
# req                            ahb_transfer       -     @963                                                         
#   wdata                        integral           32    'h91fb2fc4                                                   
#   rdata                        integral           32    'h6afb75c6                                                   
#   address                      integral           32    'h17ce26                                                      
#   direction                    ahb_direction      1     READ                                                                                                        

# ----------------------------------------------------------------------------------------------------------------------
#
# UVM_INFO ahb_master_seq_lib.sv(84) @ 75: uvm_test_top.ahb0.master_agent.sequencer@@ahb_master_single_seq [ahb_master_single_seq] master sequence read data :
# ----------------------------------------------------------------------------------------------------------------------
# Name                           Type               Size  Value                                                         
# ----------------------------------------------------------------------------------------------------------------------
# req                            ahb_transfer       -     @1020                                                         
#   wdata                        integral           32    'hd1fb2950                                                   
#   rdata                        integral           32    'h82332ddc                                                   
#   address                      integral           32    'h136da6                                                      
#   direction                    ahb_direction      1     READ                                                         
求助:我是想让sequence输出从总线上收集的信息,为什么我执行transfer.trigger("DATA_DONE")时是@963  而sequence被触发的时候换成 @1020 了 。注意:这里任务 do_pipeline_transfer 是2个并发执行的。 谢谢指点~  速度来人啊!解答困惑啊!
 楼主| 发表于 2013-10-31 11:44:13 | 显示全部楼层
怎么没人给解惑啊?描述不清楚吗?代码都附上了
还是没人知道?不可能啊!
发表于 2013-10-31 14:05:59 | 显示全部楼层
你的意思是,触发的时间应该和那个打印时间是一样的吧?  
单看你的代码看不出为什么,你可以用VCS加一下断点,调试一下,就知道了
 楼主| 发表于 2013-10-31 15:41:51 | 显示全部楼层
回复 3# crazylk
时间是同一时间都是75n,因为触发事件发生了,只是我想打印的那个item不是我在sequence里面fork的,调试了一早上没结果啊不知道为什么?
发表于 2013-10-31 16:15:49 | 显示全部楼层
回复 4# lkk1988223


    那你说的想打印的item在哪
发表于 2013-11-1 13:52:26 | 显示全部楼层
解决了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-30 13:30 , Processed in 0.019191 second(s), 8 queries , Gzip On, Redis On.

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