Showing results for 
Search instead for 
Did you mean: 
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.

UniPHY External Memory Interface Debug Toolkit

UniPHY External Memory Interface Debug Toolkit


This documentation describes the basics of UniPHY External Memory Interface Debug Toolkit. It explains how to launch the Toolkit, link the Project to a device, create connections, generate reports and export the reports. This documentation also gives information about the reports generated. 

This document shows how the reports will look when Calibration Failure occurs, provides ways to troubleshoot the causes of failure and outlines the features of the toolkit such as Calibration Mask, Re-index connections etc. 

Using the External Memory Interface (EMIF) Toolkit

 Linking the Project to a Device

  1. Launch the External Memory Interface Toolkit by clicking on External Memory Interface Toolkit from the Tools menu in the Quartus II (v.12.0 and above) Software.
  2. The toolkit has 3 main parts: the Reports window, the Tasks window and the View Window. In the Reports window connections and various reports generated can be found. In the Tasks window, the general flow is shown and in the View window, the information selected in either the Reports tab or the Tasks tab is shown.
  3. Once the toolkit window opens, open the desired project file by clicking on Open Project, in the Tasks window. If the Project is already opened, then go to Step4.
  4. After the project file has been opened, double-click on Initialize Connections, which can be found below Open Project in the Tasks window.
  5. To link the project to a device, double-click on Link Project to Device.
  6. Now, a window pops up. It has the Hardware, Device, JDI file name and Tcl Script fields, as shown in Fig.1.
  7. Choose the desired hardware and device from the drop-down menu.
  8. Check whether the .jdi file matches with the .sof file. Click OK.


What is a .jdi file? The JTAG Debugging Information File (.jdi) can be found in Quartus Project directory. It specifies the

name-to-node mappings for the JTAG chain elements and also gives more information about the debug nodes and hierarchy path names.

Make sure that the appropriate .jdi file is selected.


Note: If there is a mismatch between the .jdi file and the device connection, an error occurs. Else, Connections and Summary can be seen in the Reports window.

 Memory Interface Connection 

Creating a Memory Interface Connection

  1. To create a Memory Interface Connection, double-click on Create Memory Interface Connection which can be found in the Tasks Window below Connections. If there are multiple interfaces, the toolkit detects more than one interface. Multiple interfaces in a design can be found in the pull-down menu. Make sure the correct interface is selected.
  2. Now, a window, as shown in Fig.2, will open, which includes the parameters such as Hardware, Device, Memory Interface, UniPHY and the Connection name.
  3. Check whether all the parameters have the right values.
  4. Give a name for the connection (Connection name) and click OK.
  5. Once the Memory Interface Connection is created, a tab External Interface Conn: (name of the connection) appears in the Tasks window. This tab has sub-tabs such as Commands, Settings, Reports and Macros.
  6. In the Reports window, a new tab Interface Conn: (name of the connection) gets created. 


Generating Reports

We can generate individual reports or all the reports at once. To generate the reports individually, click on Report Summary, Report Calibration or Report Margining under the Reports section in the Tasks window. To generate all the reports at once, click on Generate All Reports under Macros in the Tasks window.

Note:If while generating all the reports, this error “The margin report could not be generated as the report was not enabled.” occurs, click on Generate Margining Report to initialize the reports.

External Memory Interface Debug Toolkit Features

This section gives information on the Toolkit features such as Re-index Connections, Calibration Mask, Resetting the External Memory Interface and Enable Calibration for all Groups on Failure.

Resetting the External Memory Interface 

Resetting the External Memory Interface is used for resetting the interface connection.

1) Go to the Tasks Window. Double-click on Reset External Memory Interface under Commands section.

2) After resetting the external memory interface, if you need to generate Margining reports, double-click on Generate Margining Report.

Re-index Connections

The Re-index connections task allows for rescanning the connections and updating the status of the connections.

To Re-index connections, go to the Tasks Window and double-click on Re-index Connections found below Initialize Connections.

Enable Calibration for All Groups on Failure

If one or more DQS Groups fail calibration, this feature prevents the calibration routine from skipping the remaining groups. To use this feature, go to the Tasks Window and click on Enable Calibration for All Groups on Failure.

Calibration Mask

Calibration Mask is used to prevent a group from being calibrated. Calibration Mask can be done by masking Group(s) or by masking Rank(s).

  • Calibration Mask by Group
  1. To mask one or more DQS Groups, click on Calibration Mask by Group.
  2. Select the Group that you want to be masked from Calibration.
  3. Click OK.
  4. Click Rerun Calibration


  • Calibration Mask by Rank
  1. To mask one or more Ranks, click on Calibration Mask by Rank.
  2. Select the Rank in which calibration masking has to be done.
  3. Click OK.
  4. Click Rerun Calibration.
  5. Generate Reports.




The toolkit generates three kinds of reports:

  1. Summary Report
  2. Calibration Report
  3. Margin Report

Summary Report

  1. Summary
  2. Interface Details
  3. DQS Groups Masked From Calibration
  4. Ranks Masked From Calibration

Calibration Report

  1. Per DQS Group Calibration
  2. DQ Pin Margins Observed before Calibration.
  3. DQS Group Margins Observed during Calibration.
  4. DQ Pin Settings After Calibration
  5. DQS Group Settings After Calibration

Margin Report

  1. DQ Pin post calibration margins
  2. Read Data Valid Windows
  3. Write Data Valid Windows

Summary Report


Summary Report gives the details about the Connection, Target and Calibration. The details include Connection name, Memory Interface Protocol, Connection Target type, Connection Target Version, Calibration Status, Calibrated Read Latency and Calibrated Write Latency.


Interface Details

The interface Details provides details about the Memory Interface used such as Rank and Row Address Width, Read DQS, Write DQS Group Size.


DQS Groups Masked From Calibration

This report provides the details about the Groups Masked from Calibration. Masked Groups have the status Masked. All the other Groups have the status Active.


Ranks Masked From Calibration

If any of the Ranks were masked from Calibration, then the Status is displayed as Masked. Else, it shows the status as active.


Calibration Report

Per DQS Group Calibration This report lists the Calibration results for each Group. If a Group is masked, Calibration Status shows Masked. If a group passes Calibration then it shows Pass and shows the values in Read Data Valid Window and Write Data Valid Window. When a group fails, Calibration Status shows Fail, the Read Data Valid Window and Write Data Valid Window show 0 and the Failing Stage shows the stage the failure has occurred.


DQ Pin Margins Observed before Calibration


As shown in Fig.11, this report lists the Read Margin, Write Margin and DM0 Margin for each DQ Pin observed before Calibration occurs. If the DQS Group is masked, then – lines get shown in the View window wherever DQ pins are present.DQS Group Margins Observed during Calibration 

This report lists the Read Margin, Write Margin, Data Mask Margin, Write Leveling Range and DQS Enable Margin.

 DQS Group Margins Observed during Calibration 

This report lists the Read Margin, Write Margin, Data Mask Margin, Write Leveling Range and DQS Enable Margin.


DQ Pin Settings after Calibration

This report lists D1 Delay chain, D5 Delay chain and D6 Delay chain values for all the DQ Pins as a result of Calibration. (Actual Value = D1 or D5 or D6 delay * Delay Chain Step Size found in Summary report.


DQS Group Settings after Calibration  Lists D4, D5 and D6 delay chain delay values, DQ Output Phase and DQS Output Phase for DQS Groups after Calibration is performed.


Margin Report

DQ Pin post calibration margins

Lists the DQ Read Margin, DQ write Margin and DM0 Margin after Calibration was performed for all the DQ pins.


Read Data Valid Windows

Fig.16 shows the read data valid window for all the DQS groups. If a DQS Group has been masked, then it is omitted. The green bars indicate the Data Valid Window. The step size for each block is 14ps.

Write Data Valid Windows

Fig.17. shows the graphical representation of the Write Data Valid Windows for all the DQ pins and also the DQS Group where the step size is 14ps.





Calibration Failure

When Calibration Failure occurs, the reports show the Calibration Status as Fail. It also shows the Initial failing group and Initial failing Calibration Stage. In the example below, it is shown that Calibration Failure is due to DQS Enable Phase not found during Read Calibration. 




Troubleshooting Calibration Failure

In the case of Calibration Failure, check the Flowchart shown in Fig. 24., to start the debug process and find the causes of Failure.


Efficiency Monitor Connection

Creating Efficiency Monitor Connection

  1. To create Efficiency Monitor Connection, first go to Diagnostics tab in Megawizard and check Enable the Efficiency Monitor and Protocol Checker on the Controller Avalon Interface tab under Efficiency Monitor and Protocol Checker Settings
  2. Generate the IP, compile the design, program the device with the .sof file and follow the first part of this tutorial until Linking Project to the Device.
  3. Click on Create Efficiency Monitor Connection in the Tasks window.
  4. A window will appear. Select the appropriate Device, Hardware and Efficiency Monitor Connection.


Generating Reports

You can generate individual reports or all the reports at once. To generate the reports click on Generate All Reports under Macros or Report Summary under Reports in the Tasks window.

Reset efficiency monitor

To reset the efficiency monitor, click on Reset Efficiency Monitor in the Tasks window under Commands Section.


  1. Summary
  2. Interface Details
  3. Efficiency Monitor Statistics
  4. Protocol Checker Summary Statistics


Summary shows about the status of Efficiency Monitor, Connection target type and Interface Hierarchy name.


Interface Details

Interface Details shows the values of Address Width, Data Width, Byte enable width and Burst count width.


Efficiency Monitor Statistics

This shows the system efficiency, latency and information about read and write.


Protocol Checker Summary Statistics

This shows the protocols and about the status of the protocols as to whether any violation was found.


Exporting the Report

To export the reports,

  1. Right click on the report and click on Export.
  2. Choose the directory. Enter the file name and click on Export.



Video Tutorial

Version history
Last update:
‎06-26-2019 02:17 AM
Updated by: