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

ID 847458
Date 4/24/2025
Public
Document Table of Contents

3.9.1. Optimizing Efficiency for Secondary Controller

You can encounter lower than expected efficiency for sequential access patterns on the secondary memory controller in the following EMIF configurations:
  • 2ch x16 LPDDR4
  • 1ch x16 of LPDDR4 on the top sub-bank

Asychronous Clocking Mode (Fabric Direct - User Clock Asychronous to PHY)

You can improve the efficiency for sequential access pattern on the secondary controller by increasing the AXI clock frequency. Recommendation is to set the AXI clock frequency to 1/4 of memory clock frequency. You can further improve the efficiency of sequential write access pattern on the secondary controller by increasing the burst length as shown in the Table 1. The data shown in the table is obtained by using a 2ch x16 LPDDR4 design, running at 1066.667MHz.

Table 32.  Controller Efficiency with Different AXI Clock Frequency and Burst Length
AXI Clock Frequency (MHz) Pattern Burst Length Controller Efficiency (%)
Primary Secondary

133.333

(Equivalent to Sync Mode)
Sequential write 2 ~90 ~40
Sequential read ~90 ~50

266.667

Sequential write 2 ~90 ~75
Sequential read ~90 ~90
Sequential write 4 ~90 ~80
Sequential read ~90 ~90
Sequential write 8 ~90 ~90
Sequential read ~90 ~90
Sequential write 16 ~90 ~90
Sequential read ~90 ~90

Random access patterns or mixed traffic patterns can mitigate the differences in the efficiency for the primary controller and secondary controller.

Table 33.  Controller Efficiency with Different AXI Clock Frequency for Random Traffic Pattern
AXI Clock Frequency (MHz Pattern Burst Length Controller Efficiency (%)
Primary Secondary
133.333 Random write 2 ~40 ~39
Random read ~38 ~38
266.667 Random write 2 ~41 ~41
Random read ~38 ~38

With increased AXI clock frequency, the efficiency number reported by the PMON IP represents the utilization of the AXI bus instead of controller efficiency. The following equation represents the efficiency of the memory controller:

Controller efficiency = AXI transactions accepted by AXI bus / Memory Controller Bandwidth * 100 %

= ( PMON efficiency * AXI Clock Freq * 256-bit ) / (16-bit * Mem Clock Freq ) * 100%

Synchronous Clocking Mode (Fabric Direct – User Clock Synchronous to PHY)

When using x16 2-channel configuration for long burst sequential access in your LPDDR4 interface during write or read operation, performance is limited to 50% per read/write sub-channel for the secondary controller.

If your application requires high controller efficiency for sequential access pattern, it is recommended to use asynchronous clocking mode. Random access patterns or mixed traffic patterns can mitigate the differences in the efficiency for the primary controller and secondary controller.

Note that in synchronous clocking mode, the efficiency for the primary controller used for implementing a x32 LPDDR4 memory interface has reduced performance. This is because the bandwidth for AXI bus is only half of the bandwidth for the memory controller.

AXI Bus Bandwidth = AXI Clock Freq x 256-bit = ( Memory Clock Freq / 8 ) * 256 = 32 * Memory Clock Frequency

Memory Controller Bandwidth = Memory Clock Freq * 2 * 32-bit = 64 * Memory Clock Frequency = 2 * AXI Bus Bandwidth