|
fork
begin
axi_xaction item;
@`AXI_DRV_CB;
`uvm_info("DEBUG", $sformatf("w_addr(), w_done = %0d", w_done), UVM_DEBUG)
if(w_done && (seq_item_port.has_do_available())) begin
w_done = 0;
seq_item_port.get_next_item(req);
if(!$cast(w_trans, req)) begin
`uvm_fatal(get_name(), "req type error")
end
`uvm_info(get_name(), "Write Packet received in master driver", UVM_LOW)
w_trans.print();
fork
send_write_address();
send_write_data();
join
void'($cast(item, w_trans.clone()));
foreach(tx_port_w[i]) begin
tx_port_w[i].write(item);
end
seq_item_port.put_response(w_trans);
seq_item_port.item_done();
w_done = 1;
end
end
begin
@`AXI_DRV_CB;
`uvm_info("DEBUG", $sformatf("r_addr(), r_done = %0d", r_done), UVM_DEBUG)
if(r_done) begin
r_done = 0;
seq_item_port2.get_next_item(req);
`uvm_info(get_name(), "Read Packet received in master driver", UVM_LOW)
if(!$cast(r_trans, req)) begin
`uvm_fatal(get_name(), "req type error")
end
r_trans.print();
send_read_address();
seq_item_port2.put_response(r_trans);
seq_item_port2.item_done();
r_done = 1;
end
end
//--join_none
join |
|