微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > Monitor 中为什么要定义3个数组?

Monitor 中为什么要定义3个数组?

时间:10-02 整理:3721RD 点击:
看 《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. while(1) begin
  8. @(posedge vif.clk);
  9. if(vif.valid) break;
  10. end

  11. while(vif.valid) begin
  12. data_q.push_back(vif.data);
  13. @(posedge vif.clk);
  14. end
  15. data_size= data_q.size();
  16. data_array = new[data_size];
  17. for ( int i = 0; i < data_size; i++ ) begin
  18. data_array[i] = data_q[i];
  19. end
  20. tr.pload = new[data_size - 18]; //da sa, e_type, crc
  21. data_size = tr.unpack_bytes(data_array) / 8;
  22. endtask

复制代码


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

谢谢。

最后unpack_byte 必须是一个byte的array,队列可不行,tr.unpack_byte就把数组中的各个byte转换成tr各个字段

谢谢~

谢谢~

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

网站地图

Top