External Memory Interfaces Agilex™ 7 M-Series FPGA IP User Guide
A newer version of this document is available. Customers should click here to go to the newest version.
6.4.5.6.1. DDR4 Byte Lane Swapping
The rules for swapping DQ byte lane are as follows:
- You can only swap between utilized DQ lanes.
- You cannot swap a DQ lane with an AC lane.
- You cannot swap a DQ lane with an ECC lane when out-of-band ECC is enabled. For x40 interfaces, the highest-indexed DQ byte lane cannot be swapped.
- Additional restrictions apply when you use a x16 memory component:
- You must place DQ group 0 and DQ group 1 on adjacent byte lanes, unless they are separated by AC Lanes. These 2 groups must be connected to the same x16 memory component.
- You must place DQ group 2 and DQ group 3 on adjacent byte lanes, unless they are separated by AC Lanes. These 2 groups must be connected to the same x16 memory component.
- If you use only one byte of the x16 memory component, you must use only the lower byte of the memory component.
- Additional restrictions apply in lockstep configuration implemented with 2 adjacent IO96 banks:
- Any DQ lane with a letter s prefix must remain in its designated byte lane. You cannot swap an sprefixed DQ lane with any other byte-lane.
- DQ lane swapping between IO96 banks is not allowed. You can only swap between utilized DQ lanes within the same IO96 bank.
Address/Command Scheme | Data Width usage | BL7 [P95:P84] | BL6 [P83:P72] | BL5 [P71:P60] | BL4 [P59:P48] | BL3 [P47:P36] | BL2 [P35:P24] | BL1 [P23:P12] | BL0 [P11:P0] |
---|---|---|---|---|---|---|---|---|---|
Scheme 2 | DDR4 x32 + ECC | DQ[ECC] | DQ[3] | DQ[2] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] |
Scheme 2 | DDR4 x40 | DQ[4] | DQ[3] | DQ[2] | DQ[1] | AC2 | AC1 | AC0 | DQ[0] |
Example: DDR4 x 32 +ECC implemented with AC Scheme 2
BL7 is used as ECC DQ lane, while Lane 0, 4, 5 and 6 are used DQ lanes. Byte lane swapping between BL0,4,5,6 is allowed.
Example: DDR4 x 40 implemented with AC Scheme 2
BL0,4,5,6,7 are used as DQ lanes. Byte lane swapping between BL0,4,5,6 is allowed. The highest-index DQ byte lane (that is, DQ[4]), cannot be swapped and must be placed at BL7.
A/C Placement Option | BL0 | BL1 | BL2 | BL3 | BL4 | BL5 | BL6 | BL7 | BL0 | BL1 | BL2 | BL3 | BL4 | BL5 | BL6 | BL7 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Primary | Secondary | |||||||||||||||
AC Pri Top Sub-Bank / Sec DQ Bot | DQ[4] | DQ[3] | DQ[2] | DQ[1] | AC1 | AC2 | AC0 | sDQ[0] | DQ[8] | DQ[7] | DQ[6] | DQ[5] | GPIO | GPIO | GPIO | GPIO |
AC Pri Bot Sub-Bank / Sec DQ Bot | DQ[0] | AC0 | AC1 | AC2 | DQ[1] | DQ[2] | DQ[3] | sDQ[4] | DQ[8] | DQ[7] | DQ[6] | DQ[5] | GPIO | GPIO | GPIO | GPIO |
AC Pri Top Sub-Bank / Sec DQ Top(m) | DQ[4] | DQ[3] | DQ[2] | DQ[1] | AC1 | AC2 | AC0 | sDQ[0] | GPIO | X | X | X | DQ[5] | DQ[6] | DQ[7] | DQ[8] |
Example: x72 or x64+ECC Configuration with AC Pri Top Sub-Bank/Sec DQ Bot Placement
In Primary IO96 Bank: sDQ[0] is used for ECC or RUSER/WUSER. It cannot be swapped to other byte lanes.
Byte lane swapping between BL0, 1,2 and 3 is allowed.In Secondary IO96 Bank: BL0,1,2,3 are used as DQ lanes. Byte lane swapping between BL0,1,2,3 is allowed.
Example: x72 or x64+ECC Configuration with AC Pri Bot Sub-Bank/Sec DQ Bot Placement
In Primary IO96 Bank: sDQ[4] is used for ECC or RUSER/WUSER. It cannot be swapped to other byte lanes.
Byte lane swapping between BL0, 4,5 and 6 is allowed.In Secondary IO96 Bank: BL0,1,2,3 are used as DQ lanes. Byte lane swapping between BL0,1,2,3 is allowed.
Example: x72 or x64+ECC Configuration with AC Pri Top Sub-Bank / Sec DQ Top(m)
In Primary IO96 Bank: sDQ[0] is used for ECC or RUSER/WUSER. It cannot be swapped to other byte lanes.
Byte lane swapping between BL0, 1,2 and 3 is allowed.In Secondary IO96 Bank: BL4,5,6,7 are used as DQ lanes. Byte lane swapping between BL4,5,6,7 is allowed.