External Memory Interfaces (EMIF) IP User Guide: Agilex™ 3 FPGAs and SoCs

ID 847458
Date 7/07/2025
Public
Document Table of Contents

3.6.1.6. Pin Placement for Agilex™ 3 EMIF IP

This topic provides guidelines for pin placement.

Pin Assignments

To determine locations for all EMIF I/O pins you should refer to the pin table for your device. When referring to the pin table, the bank numbers, I/O bank indices, and pin names are provided. It is important to strictly follow the pin placement for a given memory topology when assigning pin locations for your EMIF IP.

You can perform pin assignments in a variety of ways. The recommended approach is to manually constrain some interface signals and let the Quartus® Prime Fitter handle the rest. This method consists of consulting the pin tables to find legal positions for some of the interface pins and assigning them through the .qsf file that is generated with the EMIF design example. For this method of I/O placement, you must constrain the following signals:

  • RZQ pin
  • PLL reference clock
  • Memory reset

If you need to swap the DQ pins within a DQS group or swap the DQS group to simplify board design, enter the swizzling specification when instantiating the EMIF IP. Refer to Configuring DQ Pin Swizzling for more information about swapping the DQ pin and DQS group.

Based on the above constraints, the Quartus® Prime Fitter runs place and route based on these assignments.

To generate a .sof programming file using the Quartus® Prime software version 25.1.1 or later, all the pins used in the design must have both a location assignment and I/O standard assignment. The I/O standard for EMIF pins is automatically constrained by the IP. The reference clock for user pll in the design example is not considered as a EMIF pin, therefore you must provide the I/O standard assignment.

To assign all the EMIF pin locations for the first time, you can do either of the following:
  • Back-annotate all the EMIF pin locations after a successful compilation.
  • Manually assign the pin locations using .qsf file or Pin Planner.

The user pll reference clock pin in the design example is not automatically constrained by the EMIF IP; you must constraint the location and I/O standard for this pin.

For dual-rank component interfaces, you cannot have different swizzling specifications for rank 0 and rank 1.

Note: The DQ/DQS location assignments must match the pin swizzling specifications. You must update the DQ/DQS pin location assignment whenever you update the pin swizzling specification in the EMIF IP, otherwise you will encounter fitter errors.

The following table shows the EMIF LPDDR4 pin placement on the I/O bank.

Table 30.  LPDDR4 Pin Placement
Lane Number Pin Index x32 2 Channel x16
BL7 95 MEM_DQ[31] MEM_1_MEM_DQ[15]
94 MEM_DQ[30] MEM_1_MEM_DQ[14]
93 MEM_DQ[29] MEM_1_MEM_DQ[13]
92 MEM_DQ[28] MEM_1_MEM_DQ[12]
91    
90 MEM_DMI[3] MEM_1_MEM_DMI[1]
89 MEM_DQS_C[3] MEM_1_MEM_DQS_C[1]
88 MEM_DQS_T[3] MEM_1_MEM_DQS_T[1]
87 MEM_DQ[27] MEM_1_MEM_DQ[11]
86 MEM_DQ[26] MEM_1_MEM_DQ[10]
85 MEM_DQ[25] MEM_1_MEM_DQ[9]
84 MEM_DQ[24] MEM_1_MEM_DQ[8]
BL6 83 MEM_DQ[23] MEM_1_MEM_DQ[7]
82 MEM_DQ[22] MEM_1_MEM_DQ[6]
81 MEM_DQ[21] MEM_1_MEM_DQ[5]
80 MEM_DQ[20] MEM_1_MEM_DQ[4]
79    
78 MEM_DMI[2] MEM_1_MEM_DMI[0]
77 MEM_DQS_C[2] MEM_1_MEM_DQS_C[0]
76 MEM_DQS_T[2] MEM_1_MEM_DQS_T[0]
75 MEM_DQ[19] MEM_1_MEM_DQ[3]
74 MEM_DQ[18] MEM_1_MEM_DQ[2]
73 MEM_DQ[17] MEM_1_MEM_DQ[1]
72 MEM_DQ[16] MEM_1_MEM_DQ[0]
BL5 71    
70    
69    
68    
67   MEM_1_MEM_CK_C
66   MEM_1_MEM_CK_T
65    
64    
63   MEM_1_MEM_RESET_N
62   OCT_1_OCT_RZQIN
61    
60    
BL4 59   Differential "N-side" reference clock input site
58   Differential "P-side" reference clock input site
57   MEM_1_MEM_CS[1]
56   MEM_1_MEM_CS[0]
55   MEM_1_MEM_CKE[1]
54   MEM_1_MEM_CKE[0]
53   MEM_1_MEM_CA[5]
52   MEM_1_MEM_CA[4]
51   MEM_1_MEM_CA[3]
50   MEM_1_MEM_CA[2]
49   MEM_1_MEM_CA[1]
48   MEM_1_MEM_CA[0]
BL3 47    
46    
45    
44    
43 MEM_CK_C MEM_0_MEM_CK_C
42 MEM_CK_T MEM_0_MEM_CK_T
41    
40    
39 MEM_RESET_N MEM_0_MEM_RESET_N
38 RZQ Site OCT_0_OCT_RZQIN
37    
36    
BL2 35 Differential "N-side" reference clock input site
34 Differential "P-side" reference clock input site
33 MEM_CS[1] MEM_0_MEM_CS[1]
32 MEM_CS[0] MEM_0_MEM_CS[0]
31 MEM_CKE[1] MEM_0_MEM_CKE[1]
30 MEM_CKE[0] MEM_0_MEM_CKE[0]
29 MEM_CA[5] MEM_0_MEM_CA[5]
28 MEM_CA[4] MEM_0_MEM_CA[4]
27 MEM_CA[3] MEM_0_MEM_CA[3]
26 MEM_CA[2] MEM_0_MEM_CA[2]
25 MEM_CA[1] MEM_0_MEM_CA[1]
24 MEM_CA[0] MEM_0_MEM_CA[0]
BL1 23 MEM_DQ[15] MEM_0_MEM_DQ[15]
22 MEM_DQ[14] MEM_0_MEM_DQ[14]
21 MEM_DQ[13] MEM_0_MEM_DQ[13]
20 MEM_DQ[12] MEM_0_MEM_DQ[12]
19    
18 MEM_DMI[1] MEM_0_MEM_DMI[1]
17 MEM_DQS_C[1] MEM_0_MEM_DQS_C[1]
16 MEM_DQS_T[1] MEM_0_MEM_DQS_T[1]
15 MEM_DQ[11] MEM_0_MEM_DQ[11]
14 MEM_DQ[10] MEM_0_MEM_DQ[10]
13 MEM_DQ[9] MEM_0_MEM_DQ[9]
12 MEM_DQ[8] MEM_0_MEM_DQ[8]
BL0 11 MEM_DQ[7] MEM_0_MEM_DQ[7]
10 MEM_DQ[6] MEM_0_MEM_DQ[6]
9 MEM_DQ[5] MEM_0_MEM_DQ[5]
8 MEM_DQ[4] MEM_0_MEM_DQ[4]
7    
6 MEM_DMI[0] MEM_0_MEM_DMI[0]
5 MEM_DQS_C[0] MEM_0_MEM_DQS_C[0]
4 MEM_DQS_T[0] MEM_0_MEM_DQS_T[0]
3 MEM_DQ[3] MEM_0_MEM_DQ[3]
2 MEM_DQ[2] MEM_0_MEM_DQ[2]
1 MEM_DQ[1] MEM_0_MEM_DQ[1]
0 MEM_DQ[0] MEM_0_MEM_DQ[0]