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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7742|回复: 4

[求助] 求助:UVM中peek与read的区别这样大么?

[复制链接]
发表于 2012-9-5 13:44:08 | 显示全部楼层 |阅读模式

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

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

x
各位:
     我还在折腾UVM。终于能用virtual sequence来启动register sequence了,但是又出来了一个新问题。我是这样操作的,先用poke将memory中填上数,然后用read读出来,结果,仿真在进行到read的时候就直接退出了,但是什么都不变,把read变成peek就能正确读出数据。这到底是为什么呀,我想dump个波形也dump不出来,感觉没地下手啊。
我的register sequence:



  1. class base_reg_seq extends uvm_reg_sequence;
  2.     my_reg_block regmodel;
  3.     `uvm_object_utils(base_reg_seq)
  4.     function new(string name="base_reg_seq");
  5.         super.new(name);
  6.     endfunction : new
  7.     rand uvm_reg_addr_t addr;
  8.     rand uvm_reg_data_t data;
  9.     virtual task body();
  10.         starting_phase.raise_objection(this);
  11.         uvm_status_e status;
  12.         addr=32'h0;
  13.         data=32'h1;
  14.         repeat(1024) begin
  15.             regmodel.n_ram.poke(status,addr,data);
  16.             addr++;
  17.             data += 32'h10;
  18.         end
  19.         addr=32'h0;
  20.         repeat(1024) begin
  21.             $display("=====Read data=====");
  22.             regmodel.n_ram.read(status,addr,data);
  23.             $display("Read Method : %0h@%0h",data,addr);
  24.             addr++;
  25.         end
  26.         starting_phase.drop_objection(this);
  27.     endtask : body()
  28. endclass : base_reg_seq

  29. class vsequence extends uvm_sequence;
  30.     `uvm_object_utils(vsequence)
  31.     `uvm_declare_p_sequencer(vsequencer)
  32.     base_reg_seq reg_seq
  33.     function new(string name="vsequence");
  34.         super.new(name);
  35.     endfunction : new
  36.     virtual task body();
  37.         reg_seq=base_reg_seq::type_id::create("reg_seq");
  38.         reg_seq.regmodel=p_sequencer.regmodel;
  39.         reg_seq.start(null);
  40.     endtask : body
  41. endclass : vsequence


复制代码
仿真的话,能出来第一个“=====Read data=====”,之后就仿真结束了,工具也没给出其他多余的信息。如果将read换成peek,就能正确读1024次。反正不管哪种方法,波形都dump不出,peek是不花仿真时间的,这个可以理解,那么read出问题又是为什么呢?
发表于 2012-10-31 21:21:47 | 显示全部楼层
同求解释
发表于 2014-12-31 15:57:35 | 显示全部楼层
回复 1# oscillator_cn1

poke和peek都是backdoor操作,所以波形上是看不出来的。至于read操作错误,期待高手。
发表于 2015-1-9 21:36:32 | 显示全部楼层
试下UVM_FULL看下打印信息吧。看是不是你sequence 启动的phase和driver是不是在同一个phase。或者是driver错了,或者是reg_model set_sequencer不对,这个情况很多。你懂得。你给的代码太少了。
发表于 2015-1-9 23:41:41 | 显示全部楼层
有没有可能你适配到总线出错,导致使用front_door的操作就会结束
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-11-14 14:47 , Processed in 0.021060 second(s), 9 queries , Gzip On, Redis On.

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