Visible to Intel only — GUID: opu1490746713336
Ixiasoft
Visible to Intel only — GUID: opu1490746713336
Ixiasoft
7.8. Doorbell and Write Transactions With Transaction Order Preservation
The transaction ordering test has two parts. The first part checks that transaction order is preserved among I/O write requests and Doorbell messages. The second part injects errors in the write transactions to force transaction cancellation, to test the integrity of the COMPLETED_OR_CANCELLED_WRITES field of the Input/Output Slave RapidIO Write Requests register. Because the behavior of the write transactions themselves is not under test, but only the preservation of transaction ordering between Doorbell messages and write requests, each part of the transaction ordering test generates only one type of write transaction.
In the first part of this test, the bfm_drbell_master sends a Doorbell message one clock cycle after the bfm_io_write_master sends a write request. Write requests are sent and checked according to the test sequence, and Doorbell messages are sent and checked according to the test sequence. The additional hardware shown in the figure is used to compare the transaction order before and after transmission on the RapidIO link. Each queue has 40 bits of FIFO data. In each queue, the current entry is set to 0 for a write request and to 1 for a Doorbell message. The comparator compares bit by bit, checking for an exact match.
In the second part of this test, the DUT asserts an invalid byteenable value on the I/O slave port for a single NWRITE_R transaction, and then transmits 32 NWRITE_R transactions with a target address set out of bounds. After the bfm_io_write_master initiates the sequence of NWRITE_R transactions, the bfm_drbell_master generates transactions. Each Doorbell transaction is sent to the DUT immediately following a different NWRITE_R transaction. In addition to checking for data integrity and for transaction order preservation despite the tracking complication of canceled transactions, the testbench checks that the I/O Slave Interrupt register reflects each cancelled transaction correctly.