External Memory Interfaces Agilex™ 7 M-Series FPGA IP Design Example User Guide

ID 772632
Date 3/31/2025
Public
Document Table of Contents

2.4.5. Example: Swizzling for a 2Ch x32 + ECC interface

Table 11.  Byte Swizzling for an RDIMM DDR5 2Ch x 32 + ECC Interface Implemented with Ch0 Top Sub-Bank / Ch1 Bottom Sub-Bank
Scheme BL0 BL1 BL2 BL3 BL4 BL5 BL6 BL7
Ch 0
Default Placement GPIO DQ[ECC] DQ[3] DQ[2] AC0 AC1 DQ[0] DQ[1]
DQS Group Number in Byte Swizzling Notation X ECC 3 2 X X 0 1
After Byte Swizzling X ECC 3 2 X X 1 0
Ch 1
Default Placement DQ[1] DQ[0] AC0 AC1 DQ[2] DQ[3] DQ[ECC] GPIO
DQS Group Number in Byte Swizzling Notation 1 0 X X 2 3 ECC X
After Byte Swizzling 1 0 X X 3 2 ECC X

This example illustrates byte swizzling in Ch0 DQS group 1 (BL7) with DQS group 0 (BL6) and Ch1 DQS group 2 (BL4) with DQS group 3 (BL5). To achieve this swizzling, enter the following BYTE_SWIZZLE_CH0 and BYTE_SWIZZLE_CH1 specification in the Pin Swizzle Map:

  • BYTE_SWIZZLE_CH0=X,ECC,3,2,X,X,1,0;
  • BYTE_SWIZZLE_CH1=1,0,X,X,3,2,ECC,X;
Table 12.  Example of DQ Pin Swizzling in Ch0 ECC Lane for a 2Ch x 32 + ECC Interface
Lane Pin Index Default Placement After Swizzling
BL3 47 MEM_DQ[23] MEM_DQ[23]
46 MEM_DQ[22] MEM_DQ[22]
45 MEM_DQ[21] MEM_DQ[20]
44 MEM_DQ[20] MEM_DQ[21]
43    
42    
41    
40    
39 MEM_DQ[19] MEM_DQ[16]
38 MEM_DQ[18] MEM_DQ[19]
37 MEM_DQ[17] MEM_DQ[18]
36 MEM_DQ[16] MEM_DQ[17]
BL1 23 MEM_DQ[39] MEM_DQ[36]
22 MEM_DQ[38] MEM_DQ[37]
21 MEM_DQ[37] MEM_DQ[38]
20 MEM_DQ[36] MEM_DQ[39]
19    
18    
17    
16    
15 MEM_DQ[35] MEM_DQ[34]
14 MEM_DQ[34] MEM_DQ[35]
13 MEM_DQ[33] MEM_DQ[32]
12 MEM_DQ[32] MEM_DQ[33]

To achieve the pin swizzling for the out-of-band controller ECC byte (DQ[39:32]) shown in the above table, enter the following BYTE_SWIZZLE_CH0 specification in the Pin Swizzle Map:

PIN_SWIZZLE_CH0_ECC=1,0,3,2,7,6,5,4;

This is a full ECC byte (8-bit out-of-band controller ECC). In the case where it is implemented with x4 devices it must follow the x4 restrictions of placing the lower 4 bits of the byte in the lower half and the upper four bits of the byte in the upper half.

Note: For 4-bit out-of-band controller ECC implemented with x4, x8 or x16 devices, the 4 ECC pins must be placed on the lower half of the byte lane. In this case, users only need to specify 4 values for the pin swizzle.

Example: PIN_SWIZZLE_CH0_ECC=1,0,3,2;

For x4 device widths, the values in BYTE_SWIZZLE represent the bundles of 2 x4 DQS groups. The lower DQS group of the bundle is connected to the lower half of the byte lane, and the upper DQS group of the bundle is connected to the upper half of the byte lane.

To achieve the pin swizzling for DQ[23:16] shown in the table above using x4 devices, enter the following pin swizzling specification:

  • PIN_SWIZZLE_CH0_DQS4=17,18,19,16;
  • PIN_SWIZZLE_CH0_DQS5=21,20,22,23;

The placement of each DQS bundle and DQS group in this example, after the byte swizzling, follows the pattern shown below:

  • CH0 Bundle 2 is placed on BL3:
    • CH0 DQS4 connected to lower half of BL3
    • CH0 DQS5 connected to upper half of BL3