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

ID 772632
Date 7/08/2024
Public
Document Table of Contents

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

Table 12.  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 USER Extra Parameters:

  • BYTE_SWIZZLE_CH0=X,ECC,3,2,X,X,1,0;
  • BYTE_SWIZZLE_CH1=1,0,X,X,3,2,ECC,X;
Table 13.  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 MEM_DM_N[4] MEM_DM_N[4]
41 MEM_DM_C[4] MEM_DM_C[4]
40 MEM_DM_T[4] MEM_DM_T[4]
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 MEM_DM_N[4] MEM_DM_N[4]
17 MEM_DM_C[4] MEM_DM_C[4]
16 MEM_DM_T[4] MEM_DM_T[4]
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 shown in the above table, enter the following BYTE_SWIZZLE_CH0 specification in User Extra Parameters:

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

This is a full ECC byte but because 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.

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

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.

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