微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > payload.push_back($urandom);

payload.push_back($urandom);

时间:10-02 整理:3721RD 点击:

  1. logic[7:0] payload[$];
  2. payload.delete();
  3. repeat($urandom_range(2,4))
  4. payload.push_back($urandom);
  5. foreach(payload[index]) begin
  6. for(int i=0;i<8;i++) begin
  7. rtr_io.cb.din[3] <= payload[index][i];
  8. @(rtr_io.cb);
  9. end
  10. end

复制代码


声明一个8bit的队列payload,给它赋2到4字节的随机数,然后将这个队列传递给一个单bit的din[3],最后的波形显示队列中的随机数都是1。这不正常吧。
我把payload.push_back($urandom);改成了payload.push_back($random);结果还是全为1;
请教!

这是sv lab上面的吧。可能是你另外的代码有问题吧

先不要看波形,先看一看,payload里面是什么,用$display打印出来。在for上面写,$display("payload = %0h", payload[index]);看看队列里面是什么数。

我试了你说的方法,提示错误:index未定义,foreach(payload[index])
$dispaly("payload = %0h,payload[index]");
foreach遍历不用定义index吧

写错了
$dispaly("payload = %0h",payload[index]);

我检查payload里面的数了,都正常,但是波形还是不对
hello world
payload is 3c
din[da] = 0
din[da] = 0
din[da] = 1
din[da] = 1
din[da] = 1
din[da] = 1
din[da] = 0
din[da] = 0
hello world
payload is 7d
din[da] = 1
din[da] = 0
din[da] = 1
din[da] = 1
din[da] = 1
din[da] = 1
din[da] = 1
din[da] = 0
hello world
payload is e2
din[da] = 0
din[da] = 1
din[da] = 0
din[da] = 0
din[da] = 0
din[da] = 1
din[da] = 1
din[da] = 1
hello world
payload is b
din[da] = 1
din[da] = 1
din[da] = 0
din[da] = 1
din[da] = 0
din[da] = 0
din[da] = 0
din[da] = 0

@(rtr_io.cb);
把这句话前后的时间点一级赋的值都打出来,最后把波形也一并贴出来



回复 7# churchmice
因为其他代码没有贴出来,所以把时序图贴出来看(下面)

波形上的din[3]是rtr_io.cb.din[3]吗?能否给出波形中该信号的层次结构?

是的。另外sa是一个源地址变量,我设成了3。dint[sa]就是rtr_io.cb.dint[3]。

粗心啊,把队列payload里面的数送到DUT的其他端口了,怪不得就算打印payload里面的值也没有问题,

问题已解决,谢谢大家了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top