Note: You are encouraged to
try the Obtaining and Verifying Versal Adaptive SoC Memory
Pinouts
tutorial available on GitHub. This is
a fast and effective way to quickly generate pinouts for Versal DDRMCs. All pins
swaps must be captured in the design's XDC and validated before generating hardware.
PCB level pin swaps not captured in the tools may lead to hardware failures if pin
rules are not followed.
- All Command, Address, Control, Reset, and Clock pins are fixed.
- Command/Address/Control pins:
ACT_N, RAS_N(A[16])
,CAS_N(A[15])
,WE_N(A[14])
,A
,BA
,BG
,CKE
,CS_N
,ODT
,PAR
. - Clock pins:
CK_T
,CK_C
. - Reset pin: RESET_N
- Command/Address/Control pins:
- All
DQ/DM/DQS
pins are fixed with the following swapping allowed:- DDR4 DQ bit swap.
- DQ bits within a nibble can be swapped for x4
based interfaces.
Table 1. Example of DQ Bits Swapped within Nibble Triplet#Pin# Package pin name Un-swapped x4 Swapped x4 Notes MxP0 IO_L0P_XCC_N0P0 DQS0_t Cannot swap MxP1 IO_L0N_XCC_N0P1 DQS0_c Cannot swap MxP2 IO_L1P_N0P2 DQ3 DQ0 MxP3 IO_L1N_N0P3 DQ1 DQ2 MxP4 IO_L2P_N0P4 DQ2 DQ1 MxP5 IO_L2NN0P5 DQ0 DQ3 - DQ bits within a byte can be swapped for x8/x16
based interfaces.
Table 2. Example of DQ Bits Swapped within Byte Triplet#Pin# Package pin name Un-swapped x8/x16 Swapped x8/x16 Notes MxP0 IO_L0P_XCC_N0P0 DM1 Cannot swap MxP1 IO_L0N_XCC_N0P1 A12 Cannot swap MxP2 IO_L1P_N0P2 DQ11 DQ8 MxP3 IO_L1N_N0P3 DQ9 DQ12 MxP4 IO_L2P_N0P4 DQ10 DQ14 MxP5 IO_L2N_N0P5 DQ8 DQ15 MxP6 IO_L3P_XCC_N1P0 DQS1_t Cannot swap MxP7 IO_L3N_XCC_N1P1 DQS1_c Cannot swap MxP8 IO_L4P_N1P2 DQ12 DQ9 MxP9 IO_L4N_N1P3 DQ14 DQ13 MxP10 IO_L5P_N1P4 DQ13 DQ10 MxP11 IO_L5N_N1P5 DQ15 DQ11
- DQ bits within a nibble can be swapped for x4
based interfaces.
- DDR4 DQ nibble/byte swap.
- Any byte including the ECC byte (CB) can be swapped with any other byte
for x8/x16 based component and DIMM interfaces. DQ bits within
the swapped bytes can also be swapped.Note: When swapping DQ bytes the associated DQS and DM have to be swapped along with the DQ bits. A DQS pair can only be swapped with another DQS pair and a DM can only be swapped with another DM.
Table 3. Example of Byte1 Swapped with Byte0 Triplet#Pin# Package pin name Un-swapped x8 Swapped x8 Notes MxP0 IO_L0P_XCC_N0P0 DM1 DM0 Data Mask only MxP1 IO_L0N_XCC_N0P1 A12 Cannot swap MxP2 IO_L1P_N0P2 DQ11 DQ3 MxP3 IO_L1N_N0P3 DQ9 DQ1 MxP4 IO_L2P_N0P4 DQ10 DQ2 MxP5 IO_L2N_N0P5 DQ8 DQ0 MxP6 IO_L3P_XCC_N1P0 DQS1_t DQS0_t DQSx_t only MxP7 IO_L3N_XCC_N1P1 DQS1_c DQS0_c DQSx_c only MxP8 IO_L4P_N1P2 DQ12 DQ4 MxP9 IO_L4N_N1P3 DQ14 DQ6 MxP10 IO_L5P_N1P4 DQ13 DQ7 MxP11 IO_L5N_N1P5 DQ15 DQ5 MxP12 IO_L6P_GC_XCC_N2P0 DM0 DM1 Data Mask only MxP13 IO_L6N_GC_XCC_N2P1 A7 cannot swap MxP14 IO_L7P_N2P2 DQ3 DQ11 MxP15 IO_L7N_N2P3 DQ1 DQ9 MxP16 IO_L8P_N2P4 DQ2 DQ10 MxP17 IO_L8N_N2P5 DQ0 DQ8 MxP18 IO_L9P_GC_XCC_N3P0 DQS0_t DQS1_t DQSx_t only MxP19 IO_L9N_GC_XCC_N3P1 DQS0_c DQS1_c DQSx_c only MxP20 IO_L10P_N3P2 DQ4 DQ12 MxP21 IO_L10N_N3P3 DQ6 DQ14 MxP22 IO_L11P_N3P4 DQ7 DQ13 MxP23 IO_L11N_N3P5 DQ5 DQ15 - Any byte including the ECC byte (CB) with any other byte and nibbles
within bytes can be swapped for x4 based DIMM interfaces. DQ
bits within the swapped nibbles can also be swapped.Note: When swapping DQ bytes the associated DQS has to be swapped along with the DQ bits. A DQS pair can only be swapped with another DQS pair.
Table 4. Example of Swapping Nibbles within a Byte Triplet#Pin# Package pin name Un-swapped x4 Swapped x4 Notes MxP0 IO_L0P_XCC_N0P0 DQS4_t DQS13_t DQSx_t only MxP1 IO_L0N_XCC_N0P1 DQS4_c DQS13_c DQSx_c only MxP2 IO_L1P_N0P2 DQ35 DQ37 MxP3 IO_L1N_N0P3 DQ34 DQ36 MxP4 IO_L2P_N0P4 DQ33 DQ39 MxP5 IO_L2N_N0P5 DQ32 DQ38 MxP6 IO_L3P_XCC_N1P0 DQS13_t DQS4_t DQSx_t only MxP7 IO_L3N_XCC_N1P1 DQS13_c DQS4_c DQSx_c only MxP8 IO_L4P_N1P2 DQ37 DQ35 MxP9 IO_L4N_N1P3 DQ36 DQ34 MxP10 IO_L5P_N1P4 DQ39 DQ33 MxP11 IO_L5N_N1P5 DQ38 DQ32 - Any nibble with any other nibble can be swapped for x4 based component
interfaces. DQ bits within the swapped nibbles can also be
swapped. Note: When swapping DQ bytes the associated DQS has to be swapped along with the DQ bits. A DQS pair can only be swapped with another DQS pair.
Table 5. Example of Swapping any Nibble with any other Nibble Triplet#Pin# Package pin name Un-swapped x4 Swapped x4 Notes MxP6 IO_L3P_XCC_N1P0 DQS1_t DQS2_t DQSx_t only MxP7 IO_L3N_XCC_N1P1 DQS1_c DQS2_c DQSx_c only MxP8 IO_L4P_N1P2 DQ4 DQ8 MxP9 IO_L4N_N1P3 DQ6 DQ11 MxP10 IO_L5P_N1P4 DQ7 DQ10 MxP11 IO_L5N_N1P5 DQ5 DQ9 MxP54 IO_L0P_XCC_N0P0 DQS2_t DQS1_t DQSx_t only MxP55 IO_L0N_XCC_N0P1 DQS2_c DQS1_c DQSx_c only MxP56 IO_L1P_N0P2 DQ8 DQ4 MxP57 IO_L1N_N0P3 DQ11 DQ6 MxP58 IO_L2P_N0P4 DQ10 DQ7 MxP59 IO_L2N_N0P5 DQ9 DQ5 Important: With DDR4 clamshell interfaces, it is required that CS0 and Byte0 (DQ[7:0]) be associated with the non-mirrored devices in order for calibration to complete successfully.
- Any byte including the ECC byte (CB) can be swapped with any other byte
for x8/x16 based component and DIMM interfaces. DQ bits within
the swapped bytes can also be swapped.
- Swap across memory channels is not allowed. MC channel-0 must not be swapped with MC channel-1.
- DDR4 DQ bit swap.
- Reduced DDR4 data width configurations must remove from the
highest numbered DQs in order.
- 72-bit converts to 64-bit by removing DQ71 down to DQ64
- In XP I/O bank 700 and bank 800 (not present in all devices), there is an additional bank pin that is used as a reference to calibrate internal on-die termination. The IO_VR_700/IO_VR_800 pin must be externally connected to a 240Ω resistor on the PCB and pulled up to the bank VCCO voltage.
- Pinout for RDIMM/LRDIMM is not pin compatible with that of UDIMMs.
- Pinout for UDIMM is not pin compatible with that of components.
- Pinouts are compatible between x4 and x8 RDIMM/LRDIMM. If PCB
compatibility between x4 and x8 RDIMM/LRDIMM is desired, the following pin
swapping restrictions apply.
- DQ bits can only be swapped within a nibble
- Nibbles cannot be swapped with any other nibble
- Bytes can be swapped with any other byte
- One differential system clock source (sys_clk) is required per integrated DDR MC. Refer to Clocking for details.
- If an entire nibble is free then it can be used for non-memory designs.
- Multi-component interfaces must use same data width components. For example, a 72-bit interface can use nine x8 components or five x16 components.