Monitor 中为什么要定义3个数组?
时间:10-02
整理:3721RD
点击:
看 《UVM实战》中 Monitor 都定义了 3个数组,
直接用 data_q 传递到 tr.pload不就可以了吧?
谢谢。
-
- task my_monitor::collect_one_pkt(my_transaction tr);
- byte unsigned data_q[$];
- byte unsigned data_array[];
- logic [7:0] data;
- logic valid = 0;
- int data_size;
- while(1) begin
- @(posedge vif.clk);
- if(vif.valid) break;
- end
- while(vif.valid) begin
- data_q.push_back(vif.data);
- @(posedge vif.clk);
- end
- data_size= data_q.size();
- data_array = new[data_size];
- for ( int i = 0; i < data_size; i++ ) begin
- data_array[i] = data_q[i];
- end
- tr.pload = new[data_size - 18]; //da sa, e_type, crc
- data_size = tr.unpack_bytes(data_array) / 8;
- endtask
直接用 data_q 传递到 tr.pload不就可以了吧?
谢谢。
最后unpack_byte 必须是一个byte的array,队列可不行,tr.unpack_byte就把数组中的各个byte转换成tr各个字段
谢谢~
谢谢~