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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2211|回复: 1

[原创] UVM 中对reg_model进行read操作不成功

[复制链接]
发表于 2016-11-16 10:51:13 | 显示全部楼层 |阅读模式

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

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

x
task my_model::main_phase(uvm_phase phase);
   my_transaction tr;
   my_transaction new_tr;
   uvm_status_e status;
   uvm_reg_data_t value;
   super.main_phase(phase);
   p_rm.invert.read(status, value, UVM_FRONTDOOR);
   p_rm.invert.write(status, 1, UVM_FRONTDOOR);                //这里进行写操作
   p_rm.invert.read(status, value, UVM_FRONTDOOR);           //这里进行读操作
   while(1) begin
      port.get(tr);
      new_tr = new("new_tr");
      new_tr.copy(tr);
      //`uvm_info("my_model", "get one transaction, copy and print it:", UVM_LOW)
      //new_tr.print();
      `uvm_info("my_model",$sformatf("0000: invert value is : %0d",value),UVM_LOW)   //这里value的值应该为1
      if(value)
         invert_tr(new_tr);
      ap.write(new_tr);
   end
endtask


但是运行结果显示 value的值还是为0,这里对reg_model的操作都是在reference_model中进行的


请教大神 ,这是哪里调用的不对么?
 楼主| 发表于 2016-11-16 11:34:40 | 显示全部楼层
已搞定,是因为在bus_driver的代码中读操作之后,立即将vif.bus_rd_data 赋给了 tr.rdata,而此时
需要一定的时间延时
task bus_driver::drive_one_pkt(bus_transaction tr);
  `uvm_info("bus_driver","begin to drive one pkt",UVM_LOW);
  repeat(1) @(posedge vif.clk);

  vif.bus_cmd_valid <= 1'b1;
  vif.bus_op <= ((tr.bus_op == BUS_RD)?0:1);
  vif.bus_addr <= tr.addr;
  vif.bus_wr_data <= ((tr.bus_op == BUS_RD)?0:tr.wr_data);

  @(posedge vif.clk);

  vif.bus_cmd_valid <= 1'b0;
  vif.bus_op <= 1'b0;
  vif.bus_addr <= 16'b0;
  vif.bus_wr_data <= 16'b0;

  
  #1;                                                  //加上这一个延时即可
  if(tr.bus_op == BUS_RD) begin
    tr.rd_data = vif.bus_rd_data;
  end

  `uvm_info("DEBUG",$sformatf("bus_op = %0d, tr.rd_data = %h:%h",tr.bus_op,tr.rd_data,vif.bus_rd_data),UVM_LOW)

  `uvm_info("bus_driver","end drive one pkt",UVM_LOW);
endtask
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-17 04:27 , Processed in 0.020683 second(s), 6 queries , Gzip On, Redis On.

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