External Memory Interfaces (EMIF) IP Design Example User Guide: Agilex™ 5 FPGAs and SoCs

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

2.6. Pin Placement for Agilex™ 5 EMIF IP

This topic provides guidelines for pin placement.

Overview

Agilex™ 5 FPGAs have the following structure:
  • Each device contains up to 4 HSIO banks.
  • Each HSIO bank contains 2 sub-banks.
  • Each sub-bank contains 4 I/O lanes.
  • Each lane contains 12 general-purpose I/O (GPIO) pins.

General Pin Guidelines

The following are general pin guidelines.

Note: For more detailed pin information, refer to the Pin and Resource Planning section in the protocol-specific chapter for your external memory protocol, in the External Memory Interfaces (EMIF) IP User Guide: Agilex™ 5 FPGAs and SoCs .
  • Ensure that the pins for a given external memory interface reside within the same I/O row.
  • Interfaces that span multiple banks must meet the following requirements:
  • All address and command and associated pins must reside within a single sub-bank.
  • Address and command and data pins can share a sub-bank under the following conditions:
    • Address and command and data pins cannot share an I/O lane.
    • Only an unused I/O lane in the address and command bank can contain data pins.
Table 19.  General Pin Constraints
Signal Type Constraint
Data Strobe All signals belonging to a DQ group must reside in the same I/O lane.
Data Related DQ pins must reside in the same I/O lane. For protocols that do not support bidirectional data lines, read signals should be grouped separately from write signals.
Address and Command Address and Command pins must reside in predefined locations within an I/O sub-bank.

Adjacent Banks

For banks to be considered adjacent, they must reside in the same I/O row. To determine if banks are adjacent, refer to the EMIF Architecture: I/O Bank topic in the External Memory Interfaces (EMIF) IP User Guide: Agilex™ 5 FPGAs and SoCs .

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.

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 the Configuring DQ Pin Swizzling topic in this section for more information about swapping the DQ pin and DQS group.

Based on the above constraints, the Quartus® Prime Fitter rotates pins within each lane as necessary.

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 the location assignment and I/O standard assignment.

The I/P automatically constrains I/O standard for EMIF pins. Reference clock for user pll in the example design is not considered as a EMIF pin, hence you need to provide the I/O standard assignment.

To assign all the EMIF pin locations for the first time, do either of the following:

  • Back-annotate all the EMIF pin locations after a successful compilation.
  • Manually assign the pin location using .qsf file or Pin Planner.

User pll reference clock pin in the example design is not automatically constrained by EMIF IP. You need to constraint the location and I/O standard.

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 afterwards, else you will encounter a fitter error.