RapidIO Intel FPGA IP User Guide

ID 683884
Date 9/15/2021
Public
Document Table of Contents

7.3. SWRITE Transactions

The next set of operations performed are Streaming Writes (SWRITE). To perform SWRITE operations, one register in the IP core must be reconfigured as shown.

Table 122.  SWRITE Register
Module Register

Address

Name Value Description
rio 0x1040C Input/Output Slave Mapping Window 0 Control 32'h0055_0002 or 32'h5555_0002 Sets the DESTINATION_ID for outgoing transactions to the value 0x55 or 0x5555, depending on the device ID width of the sister_rio. This value matches the base device ID of the sister_rio module. Enables SWRITE operations.

With these setting, any write operation presented across the Input/Output Avalon® -MM slave interface on the rio module is translated to a RapidIO Streaming Write transaction.

Note: The Avalon® -MM write address must map into Input/Output Slave Window 0. However, in this example the window is set to cover the entire Avalon® -MM address space by setting the mask to all zeros.

The testbench generates a predetermined series of burst writes across the Avalon® -MM slave I/O interface on the DUT. These write bursts are each converted to an SWRITE request packet sent on the RapidIO serial interface. Because Streaming Writes only support bursts that are multiples of a double word (multiple of 8 bytes), the testbench cycles from 8 to MAX_WRITTEN_BYTES in steps of 8 bytes. Two tasks carry out the burst writes, rw_addr_data and rw_data. The rw_addr_data task initiates the burst by providing the address, burstcount, and the content of the first data word, and the rw_data task completes the remainder of the burst.

At the sister_rio module, the SWRITE request packets are received and translated into Avalon® -MM transactions that are presented across the Input/Output master Avalon® -MM interface. The testbench calls the task read_writedata of the sister_bfm_io_write_slave. The task captures the written data.

The written data is then checked against the expected value by running an expect task. After completing the SWRITE tests, the testbench performs NWRITE_R operations.