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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[讨论] Monitor 中为什么要定义3个数组?

[复制链接]
发表于 2015-10-20 10:43:55 | 显示全部楼层 |阅读模式

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

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

x
看 《UVM实战》中 Monitor 都定义了 3个数组,





  1. task my_monitor::collect_one_pkt(my_transaction tr);
  2.    byte unsigned data_q[$];
  3.    byte unsigned data_array[];
  4.    logic [7:0] data;
  5.    logic valid = 0;
  6.    int data_size;
  7.    
  8.    while(1) begin
  9.       @(posedge vif.clk);
  10.       if(vif.valid) break;
  11.    end
  12.    
  13.    while(vif.valid) begin
  14.       data_q.push_back(vif.data);
  15.       @(posedge vif.clk);
  16.    end
  17.    data_size  = data_q.size();   
  18.    data_array = new[data_size];
  19.    for ( int i = 0; i < data_size; i++ ) begin
  20.       data_array[i] = data_q[i];
  21.    end
  22.    tr.pload = new[data_size - 18]; //da sa, e_type, crc
  23.    data_size = tr.unpack_bytes(data_array) / 8;
  24. endtask




复制代码


直接用 data_q 传递到 tr.pload  不就可以了吧?


谢谢。
发表于 2015-10-20 15:12:20 | 显示全部楼层
最后unpack_byte 必须是一个byte的array,队列可不行,tr.unpack_byte就把数组中的各个byte转换成tr各个字段
 楼主| 发表于 2015-10-20 16:36:37 | 显示全部楼层
 楼主| 发表于 2015-10-20 16:37:33 | 显示全部楼层


最后unpack_byte 必须是一个byte的array,队列可不行,tr.unpack_byte就把数组中的各个byte转换成tr各个字段 ...
南宫恨 发表于 2015-10-20 15:12




   谢谢~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-9-21 15:43 , Processed in 0.017529 second(s), 9 queries , Gzip On, Redis On.

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