External Memory Interfaces Intel Arria 10 FPGA IP Design Example User Guide
Design Example Quick Start Guide for External Memory Interfaces Intel Arria 10 FPGA IP
The Example Designs tab in the parameter editor allows you to specify the creation of synthesis and/or simulation file sets which you can use to validate your EMIF IP.
You can generate an example design specifically for an Intel FPGA development kit, or for any EMIF IP that you generate.

Creating an EMIF Project
-
Launch the
Intel®
Quartus® Prime software
and select File > New Project Wizard. Click Next.
-
Specify a directory and name for the project that you want to
create. Click Next.
-
Verify that Empty
Project is selected. Click Next two times.
- Under Name filter, type the device part number.
-
Under Available devices,
select the appropriate device.
- Click Finish.
Generating and Configuring the EMIF IP
-
In the IP Catalog
window, select
Intel®
Arria® 10
External Memory Interfaces. (If the
IP Catalog window is not visible,
select View > Utility Windows > IP Catalog.)
-
In the IP Parameter
Editor, provide an entity name for the EMIF IP (the name that
you provide here becomes the file name for the IP) and specify a directory.
Click Create.
-
The parameter editor has multiple tabs where you must configure parameters to
reflect your EMIF implementation:
Intel Arria 10 EMIF Parameter Editor Guidelines
Parameter Editor Tab | Guidelines |
---|---|
General | Ensure that the following parameters are entered
correctly:
|
Memory |
|
Mem I/O |
|
FPGA I/O |
|
Mem Timing |
|
Board |
|
Controller | Set the controller parameters according to the desired configuration and behavior for your memory controller. |
Diagnostics | You can use the parameters on the Diagnostics tab to assist in testing and debugging your memory interface. |
Example Designs | The Example Designs tab lets you generate design examples for synthesis and for simulation. The generated design example is a complete EMIF system consisting of the EMIF IP and a driver that generates random traffic to validate the memory interface. |
For detailed information on individual parameters, refer to the appropriate chapter for your memory protocol in the Intel Arria 10 External Memory Interfaces IP User Guide .
Generating the Synthesizable EMIF Design Example
- Verify that the Presets window is visible. If the Presets window is not visible, display it by selecting View > Presets.
-
In the Presets window,
select the appropriate development kit preset and click Apply.
-
Configure the EMIF IP and click Generate Example Design in the upper-right corner of the
window.
- Specify a directory for the EMIF design example and click OK. Successful generation of the EMIF design example creates the following fileset under a qii directory.

If you don't select the Simulation or Synthesis checkbox, the destination directory will contain Platform Designer design files, which are not compilable by the Intel® Quartus® Prime software directly, but can be viewed or edited under the Platform Designer. In this situation you can run the following commands to generate synthesis and simulation file sets.
- To create a compilable project, you must run the quartus_sh -t make_qii_design.tcl script in the destination directory.
- To create a simulation project, you must run the quartus_sh -t make_sim_design.tcl script in the destination directory.
The Select board pulldown in this section applies the appropriate development kit pin assignments to the example design.
- This setting is available only when you turn on the Synthesis checkbox in the Example Design Files section.
- This setting must match the applied development kit present, or else an error message appears.
If the value None appears in the Select board pulldown, it indicates that the current parameter selections do not match any development kit configurations. You may apply a development kit-specific IP and related parameter settings by selecting one of the presets from the preset library. When you apply a preset, the current IP and other parameter settings are set to match the selected preset. If you want to save your current settings, you should do so before you select a preset. If you do select a preset without saving your prior settings, you can always save the new preset settings under a different name
If you want to generate the example design for use on your own board, set Select board to None, generate the example design, and then add pin location constraints.
Generating the EMIF Design Example for Simulation
- Verify that the Presets window is visible. If the Presets window is not visible, display it by selecting View > Presets.
-
In the Presets window,
select the appropriate development kit preset and click Apply.
-
Configure the EMIF IP and click Generate Example Design in the upper-right corner of the
window.
- Specify a directory for the EMIF design example and click OK.
Successful generation of the EMIF design example creates multiple file sets for various supported simulators, under a sim/ed_sim directory.

If you don't select the Simulation or Synthesis checkbox, the destination directory will contain Platform Designer design files, which are not compilable by the Intel® Quartus® Prime software directly, but can be viewed or edited under the Platform Designer. In this situation you can run the following commands to generate synthesis and simulation file sets.
- To create a compilable project, you must run the quartus_sh -t make_qii_design.tcl script in the destination directory.
- To create a simulation project, you must run the quartus_sh -t make_sim_design.tcl script in the destination directory.
Simulation Versus Hardware Implementation
EMIF Simulation Models
This table compares the characteristics of the skip calibration and full calibration models.
Skip Calibration | Full Calibration |
---|---|
System-level simulation focusing on user logic. | Memory interface simulation focusing on calibration. |
Details of calibration are not captured. | Captures all stages of calibration. |
Has ability to store and retrieve data. | Includes leveling, per-bit deskew, etc. |
Represents accurate efficiency. | |
Does not consider board skew. |
RTL Simulation Versus Hardware Implementation
This table highlights key differences between EMIF simulation and hardware implementation.
RTL Simulation | Hardware Implementation |
---|---|
Nios® initialization and calibration code execute in parallel. | Nios® initialization and calibration code execute sequentially. |
Interfaces assert cal_done signal signal simultaneously in simulation. | Fitter operations determine the order of calibration, and interfaces do not assert cal_done simultaneously. |
You should run RTL simulations based on traffic patterns for your design's application. Note that RTL simulation does not model PCB trace delays which may cause a discrepancy in latency between RTL simulation and hardware implementation.
Simulating External Memory Interface IP With ModelSim
- Launch the Mentor Graphics* ModelSim software and select File > Change Directory. Navigate to the sim/ed_sim/mentor directory within the generated design example folder.
- Verify that the Transcript window is displayed at the bottom of the screen. If the Transcript window is not visible, display it by clicking View > Transcript.
- In the Transcript window, run source msim_setup.tcl.
- After source msim_setup.tcl finishes running, run ld_debug in the Transcript window.
- After ld_debug finishes running, verify that the Objects window is displayed. If the Objects window is not visible, display it by clicking View > Objects.
- In the Objects window, select the signals that you want to simulate by right-clicking and selecting Add Wave.
- After you finish selecting the signals for simulation, execute run -all in the Transcript window. The simulation runs until it is completed.
- If the simulation is not visible, click View > Wave.
Pin Placement for Intel Arria 10 EMIF IP
Overview
- Each device contains 2 I/O columns.
- Each I/O column contains up to 8 I/O banks.
- Each I/O bank contains 4 lanes.
- Each lane contains 12 general-purpose I/O (GPIO) pins.
General Pin Guidelines
The following points provide general pin guidelines:
- Ensure that the pins for a given external memory interface reside within a single I/O column.
- Interfaces that span multiple banks must meet the following requirements:
- The banks must be adjacent to one another. For information on adjacent banks, refer to the Intel Arria 10 External Memory Interfaces IP User Guide.
- The address and command bank must reside in a center bank to minimize latency. If the memory interface uses an even number of banks, the address and command bank may reside in either of the two center banks.
- Unused pins can be used as general-purpose I/O pins.
- All address and command and associated pins must reside within a single bank.
- Address and command and data pins can share a 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 be used for data pins.
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. DM/DBI pins must be paired off with a DQ pin for proper operation. 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 bank. |
Pin Assignments
If you applied a development kit preset during IP generation, all pin assignments for the development kit are automatically generated and can be verified in the .qsf file that is generated with the design example.
Compiling and Programming the Intel Arria 10 EMIF Design Example
- Navigate to the Intel® Quartus® Prime folder containing the design example directory.
- Open the Intel® Quartus® Prime project file, (.qpf).
- To begin compilation, click Processing > Start Compilation. The successful completion of compilation generates an .qsf file, which enables the design to run on hardware.
- To program your device with the compiled design, open the programmer by clicking Tools > Programmer.
- In the programmer, click Auto Detect to detect supported devices.
- Select the Intel® Arria® 10 device and then select Change File.
- Navigate to the generated ed_synth.sof file and select Open.
- Click Start to begin programming the Intel® Arria® 10 device. When the device is successfully programmed, the progress bar at the top-right of the window should indicate 100% (Successful).
Debugging the Intel Arria 10 EMIF Design Example
- To launch the EMIF Debug Toolkit, navigate to Tools > System Debugging Tools > External Memory Interface Toolkit.
- Click Initialize Connections.
- Click Link Project to device. A window appears; verify that the correct device is selected and that the correct .sof file is selected.
- Click Create Memory Interface Connection. Accept the default settings by clicking OK.
- Rerun calibration. Produces a calibration report summarizing the calibration status per DQ/DQS group along with the margins for each DQ/DQS pin.
- Driver Margining. Produces a report summarizing the read and write margins per I/O pin. This differs from calibration margining because driver margining is captured during user mode traffic rather than during calibration
- Generate Eye Diagram. Generates read and write eye diagrams for each DQ pin based on calibration data patterns.
- Calibrate Termination. Sweeps different termination values and reports the margins that each termination value provides. Use this feature to help select the optimal termination for the memory interface.
Design Example Description for External Memory Interfaces Intel Arria 10 FPGA IP
If you select Simulation or Synthesis under Example Design Files on the Example Designs tab, the system creates a complete simulation file set or a complete synthesis file set, in accordance with your selection.
Synthesis Example Design
- A traffic generator, which is a synthesizable Avalon® -MM example driver that implements a pseudo-random pattern of reads and writes to a parameterized number of addresses. The traffic generator also monitors the data read from the memory to ensure it matches the written data and asserts a failure otherwise.
- An instance of the memory interface,
which includes:
- A memory controller that moderates between the Avalon® -MM interface and the AFI interface.
- The PHY, which serves as an interface between the memory controller and external memory devices to perform read and write operations.
If you are using the Ping Pong PHY feature, the synthesis example design includes two traffic generators issuing commands to two independent memory devices through two independent controllers and a common PHY, as shown in the following figure.
If you are using RLDRAM 3, the traffic generator in the synthesis example design communicates directly with the PHY using AFI, as shown in the following figure.
Simulation Example Design
- An instance of the synthesis example design. As described in the previous section, the synthesis example design contains a traffic generator and an instance of the memory interface. These blocks default to abstract simulation models where appropriate for rapid simulation.
- A memory model, which acts as a generic model that adheres to the memory protocol specifications. Frequently, memory vendors provide simulation models for their specific memory components that you can download from their websites.
- A status checker, which monitors the status signals from the external memory interface IP and the traffic generator, to signal an overall pass or fail condition.
If you are using the Ping Pong PHY feature, the simulation example design includes two traffic generators issuing commands to two independent memory devices through two independent controllers and a common PHY, as shown in the following figure.
If you are using RLDRAM 3, the traffic generator in the simulation example design communicates directly with the PHY using AFI, as shown in the following figure.
Example Designs Interface Tab

Available Example Designs Section
The Select design pulldown allows you to select the desired example design. At present, EMIF Example Design is the only available choice, and is selected by default.
Document Revision History for External Memory Interfaces Intel Arria 10 FPGA IP Design Example User Guide
Document Version | Intel® Quartus® Prime Version | Changes |
---|---|---|
2018.09.24 | 18.1 |
|
2018.05.07 | 18.0 |
|
Date | Version | Changes |
---|---|---|
November 2017 | 2017.11.06 | Initial release. |