RapidIO Intel FPGA IP User Guide

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

7.9. Port-Write Transactions

To test port-writes, the test performs some basic configuration of the port-write registers in the DUT and the sister_rio module. It then programs the DUT to transmit port-write request packets to the sister_rio module. The port-writes are received by the sister_rio module and retrieved by the test program.

The configuration enables the Rx packet stored interrupt in the sister_rio module. With the interrupt enabled, the sister_rio module asserts the sister_sys_mnt_s_irq signal, which indicates that an interrupt is set in either the Maintenance Interrupt register or the Input/Output Slave Interrupt register. Because this part of the testbench is testing port writes, the assertion of sister_sys_mnt_s_irq means that a Port-Write transaction has been received and that the payload can be retrieved. To enable the interrupt, call the task rw_addr_data defined in the sister_bfm_cnt_master module.

A write operation is performed by the task with the address 0x10084 and data 0x10 passed as parameters. In addition, the sister_rio module must be enabled to receive Port-Write transactions from the DUT. The task is called with the address 0x10250 and data 0x1.

After the configuration is complete, the test performs the following operations:

Table 125.  Port-Write Test
Operation Action
Places data into the TX_PORT_WRITE_BUFFER Write incrementing payload to registers at addresses 0x10210 to 0x1024C
Indicates to the DUT that Port-Write data is ready Write DESTINATION_ID = 0x55 or 0x5555, depending on the device ID width setting, and PACKET_READY = 0x1 to 0x10200
Waits for the sister_rio module to receive the port-write Monitor sister_sys_mnt_s_irq
Verifies that the sister _rio module has the interrupt bit PACKET_STORED set Read register at address 0x10080
Retrieves the Port-Write payload from the sister_rio module and checks for data integrity Read registers at addresses 0x10260–0x1029C
Checks the sister_rio module Rx Port Write Status register for correct payload size Read register at address 0x10254
Clears the PACKET_STORED interrupt in the sister_rio module Write 1 to bit 4 of register at address 0x10080
Waits for the next interrupt at the sister _rio module Monitor sister_sys_mnt_s_irq

The test iterates through these operations, each time incrementing the payload of the port write. The loop exits when the max payload for a port-write has been transmitted, 64 bytes.

All of the operations in the loop are executed by running the rw_addr_data task either in the bfm_cnt_master or the sister_bfm_cnt_master instances.