// Define a task to collect data and unpack
task collect_packets(){
// Define queue of byte that will hold the received bytes
bit [7:0] temp;
integer i;
bit [7:0] received_bytes[$] ;
while(1) {
@(posedge intf.clk);
received_bytes.push_back(ports.$data_out);
printf("[RECIVER] chanel valid 0 data %x num %d\n ",ports.$data_out,received_bytes.size());
}
ports.$read = 0;
repeat (1)@(posedge intf.clk);
rcv_packet=new(id,cfg);
id++;
printf("[RECIVER]pkt id is %d size is %d\n",id,received_bytes.size());
//void = received_bytes.pop_front();
//unpack the recived data
rcv_packet.byte_unpack(received_bytes);
//as queues are used,delete it
received_bytes.delete();
// call the scoreboard task to check the packets
score_board.checkpacket(rcv_packet);
}
}
}