cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Explorer
Explorer
622 Views
Registered: ‎10-12-2018

AXI4-stream VIP get transaction done

Jump to solution

How can I get the transacrion drive/done event using AXI-Stream VIP?

I mean the

mst_agent.driver.send(wr_transaction);

will return immediately after the sequece port has taken the transaction, which can be earlier than the concrete drive of the signals.

task send(input axi4stream_transaction t );
    if(this.get_is_active()) begin
      seq_item_port.put_item(t);
      seq_item_port.wait_for_item_done();
    end else begin
      `xil_fatal(this.get_tag(), $sformatf("%m : Component (%s) is not active. Trying to send transaction: %s", this.get_name(), t.convert2string()))
    end
  endtask  : send

I want to get the event when the AXI-Stream signals (tdata, tvalid etc) are driven.

Reading the code it should belongs to the following documentation of the AXI VIP:

protected task return_item_to_sequence( axi4stream_transaction transfer);
    axi4stream_transaction transfer_clone;
    xil_object      cloned;
    cloned = transfer.my_clone();
    $cast(transfer_clone, cloned);
    seq_item_port.put_rsp(transfer_clone);
  endtask
0 Kudos
1 Solution

Accepted Solutions
Highlighted
Explorer
Explorer
612 Views
Registered: ‎10-12-2018

Re: AXI4-stream VIP get transaction done

Jump to solution

I found:

Two thing is needed:

  1. Set the return policy of the transaction:
    wr_transaction.set_driver_return_item_policy(XIL_AXI4STREAM_AT_ASSERT_RETURN);
  2. Wait on queue of the seq_tem_port:
    mst_agent.driver.seq_item_port.get_next_rsp(resp_transaction);

View solution in original post

0 Kudos
1 Reply
Highlighted
Explorer
Explorer
613 Views
Registered: ‎10-12-2018

Re: AXI4-stream VIP get transaction done

Jump to solution

I found:

Two thing is needed:

  1. Set the return policy of the transaction:
    wr_transaction.set_driver_return_item_policy(XIL_AXI4STREAM_AT_ASSERT_RETURN);
  2. Wait on queue of the seq_tem_port:
    mst_agent.driver.seq_item_port.get_next_rsp(resp_transaction);

View solution in original post

0 Kudos