Visible to Intel only — GUID: imi1490746713730
Ixiasoft
Visible to Intel only — GUID: imi1490746713730
Ixiasoft
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:
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.