Altera® AXI4 Bus Functional Model User Guides

ID 838773
Date 5/19/2025
Public
Document Table of Contents

2.2.3. Altera® AXI4 Streaming Transmitter BFM

AXI4 streaming communication occurs when one block sends a stream of data, and then another block receives the sent data. The following describes the transmitter side of the transfer that initiates the data transfer.

Altera AXI4 Streaming BFM Transmitter Block Diagram shows the top-down functionality of the Altera® AXI4 Streaming Transmitter BFM. The top level axi4_stream_bfm_transmit_top module of the transmitter is in the altera_lnsim library.

Figure 12. Altera AXI4 Streaming Transmitter BFM Block Diagram

Data to be sent via the transmitter is placed in the transmitter’s send_input_packet_queue input packet queue on the left side of the block diagram. The queue is a SystemVerilog queue of type Axi4StreamPacket[$]. You can place BFM packet objects into the send_input_packet_queue using the put_packet_for_transmit BFM method. Refer to examples in AXI4 Streaming Platform Designer Example and AXI4 Streaming BFM RTL Example.

The transfer objects in the packet container are taken out of send_input_packet_queue in the order entered and placed in the axis_send block transaction delay queue, tdq. tdq handles the delay and gap timing for the transfer, while holding the data ready for transmission at the appropriate time. When the time arrives for data transmission, the data is stored in the data_queue byte queue. data_queue immediately presents the data and the appropriate beat-specific data fields for transmission. The transmitter’s axis.tvalid and axis.tlast output control signals are driven by the Send State Machine using the receiver’s axis.tready signal as an input. The AXI4 streaming interface is then directly driven from these final logic blocks of axis_send for reception by the downstream receiver.