Visible to Intel only — GUID: crp1565209227654
Ixiasoft
1.3.1. Signaling Information
1.3.2. Read and Write to Main Memory
1.3.3. Interrupts
1.3.4. UMsg
1.3.5. MMIO Accesses to I/O Memory
1.3.6. CCI-P Tx Signals
1.3.7. Tx Header Format
1.3.8. CCI-P Rx Signals
1.3.9. Multi-Cache Line Memory Requests
1.3.10. Byte Enable Memory Request ( Intel® FPGA PAC D5005)
1.3.11. Additional Control Signals
1.3.12. Protocol Flow
1.3.13. Ordering Rules
1.3.14. Timing Diagram
1.3.15. CCI-P Guidance
Visible to Intel only — GUID: crp1565209227654
Ixiasoft
1.3.10. Byte Enable Memory Request ( Intel® FPGA PAC D5005)
To achieve fine control of write data so that only specific bytes of data are written to host memory, use the byte enable mode. Listed below are the characteristics of byte enable memory requests:
- Byte enable memory requests use a byte-invariant little endianness scheme. This means that:
- For any single or multi-byte element in a data structure, the element uses the same contiguous bytes of memory, specified by the byte_start and byte_len header fields.
- Write data is positioned in the data field at the offset where it is stored within the cache line. The first data bit written is bit byte_start*8.
- byte_start specifies the byte index, where the least significant byte is 0 (pck_af2cp_sTx.c1.data[7:0]), and the most significant byte is 63 (pck_af2cp_sTx.c1.data[511:504])
- byte_len specifies the number of bytes to be included in a byte-enabled memory write transaction. The byte length extends the write data towards the most significant byte.
- Byte enable memory requests must operate with cache length (cl_len) set to 0 (a 1 CL memory write request).
- The length cannot extend past byte 63 of pck_af2cp_sTx.c1.data. The maximum allowable byte length can be represented by the following equations:
- If byte_start is 0:
- MAX_BYTE_LEN = 63
- If byte_start is not 0:
- MAX_BYTE_LEN = 64 – byte_start
- If byte_start is 0:
The following table is an example of how the channel 1 request header (pck_af2cp_sTx.c1.hdr) indexes bytes in byte enable mode. In this example, the AFU designer is writing bytes [20:4] (pck_af2cp_sTx.c1.data[167:32]) of the data word 0xAAAABBBBCCCCDDDDE to bytes [20:4] of the host memory at address 0xFFF00.
Bit Index | Width (bits) | Field | Value | |
---|---|---|---|---|
Header | 79:74 | 6 | byte_len | 0x11 |
73:72 | 2 | vc_sel | eVC_VA (0x0) | |
71 | 1 | sop=1 | 1 | |
70 | 1 | (CL/byte) 0:CL, 1:byte | 1 | |
69:68 | 2 | cl_len | 0 | |
67:64 | 4 | req_type | eREQ_WRLINE_I (0x0) | |
63:58 | 6 | byte_start | 0x4 | |
57:18 | 40 | address | 0xFFF00 | |
17:16 | 2 | — | 0x0 | |
15:0 | 16 | mdata | 0x0 | |
Data | — | 512 | Data | 0xAAAABBBBCCCCDDDDE |
Figure 15. Host memory at address 0xFFF00. This figure shows the value in host memory before and after a write.