Forum Discussion

fa_fpga_enthusiast's avatar
fa_fpga_enthusiast
Icon for Occasional Contributor rankOccasional Contributor
9 months ago

Issue with BSP Creation for Nios-V/m Using LPDDR4 on Agilex-5 (Quartus 24.1 & 24.3.1)

Hello,

We are encountering an issue while creating a BSP for the Nios-V/m targeting Agilex-5 using LPDDR4 as the processor memory. We have attempted this using Quartus 24.1 and 24.3.1 but faced the same problem in both versions.

Setup Attempted:

  • We connected the data and instruction interfaces of Nios-V/m to the External Memory Interfaces (EMIF) IP directly.
  • We also tried routing them through the Address Span Extender Intel FPGA IP before connecting to the EMIF.
  • In both cases, the memory interface is detected correctly under the "Vectors" section as the "Reset Agent" in the parameters editor of the Nios-V/m.

Issue:

When creating the BSP, we receive the following errors:

[Error] altera_hal_linkerx_generator: Required linker section mappings do not exist: "[.entry, .exceptions, .rodata, .rwdata, .text, .bss, .heap, .stack]"
[Error] CPU "intel_niosv_m" has no memories connected to its Avalon host(s)
[Error] CPU "intel_niosv_m" reset memory "emif_2b" has no matching memory region.

The instance name of the EMIF IP core in our design is "emif_2b". The last line of the message is different if we use "Address Span Extender Intel FPGA IP". Additionally, we cannot manually add the required memory regions in the BSP Link Script within the BSP Editor, as the "Memory Region" field remains empty when attempting to add a region.

Additional Observations:

  • This issue did not occur with Nios-V/m on Agilex-7 using Quartus 23.4, where the Address Span Extender IP was correctly assigned for different memory regions in BSP. In this case, we were using a DDR4 Memory.
  • The issue also does not occur when using On-Chip RAM as the processor memory.
  • A possible difference is that in Quartus 23.4, the EMIF IP’s memory interface is "Avalon Memory Mapped Agent", whereas in Quartus 24.1 and 24.3.1, it is "AXI4 Subordinate".
  • The type of Nios-V/m data and instruction buses is "AXI4Lite Manager" in both setups (Agilex-7 with Quartus 23.4 and Agilex-5 with Quartus 24.1/24.3.1).

Request for Assistance:

Could you provide the correct procedure for using LPDDR4 memory as the memory of Nios-V/m with the corresponding EMIF IP in Agilex-5 FPGAs?

At this moment, we are particularly interested in the correct setup for Quartus 24.1 with "External Memory Interfaces (EMIF) IP" which is no longer available in Quartus 24.3.1. However, we also tested "External Memory Interfaces (EMIF) IP - LPDDR4" in Quartus 24.3.1 with a similar outcome.

Thanks in advance for your help!

15 Replies

  • tehjingy_Altera's avatar
    tehjingy_Altera
    Icon for Regular Contributor rankRegular Contributor

    Hi


    I’m glad that your question has been addressed, I now transition this thread to community support. If you have a new question, Please login to ‘https://supporttickets.intel.com/s/?language=en_US’, view details of the desire request, and post a feed/response within the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support. The community users will be able to help you on your follow-up questions.


    Regards

    Jingyang, Teh


  • fa_fpga_enthusiast's avatar
    fa_fpga_enthusiast
    Icon for Occasional Contributor rankOccasional Contributor

    Hello,

    We received the hardware earlier than expected, so we are continuing the discussion in this thread/ticket.

    Unfortunately, we were unable to use the EMIF IP (LPDDR4) as the program memory for the Nios-V processor to run/debug our application using the Ashling RiscFree IDE on an Agilex-5 FPGA.

    Here is a summary of the tests we performed:

    • Using on-chip RAM as program memory: We successfully ran and debugged our application with the Nios-V processor using Ashling RiscFree IDE.
    • With on-chip RAM as program memory, we connected the processor’s data bus to the Address Span Extender linked to the EMIF. We were able to allocate and access LPDDR4 memory without issues. Write/read tests on multiple memory locations of the LPDDR4 were successful.
    • When both the data and instruction buses of the Nios-V processor were connected to the Address Span Extender (linked to the EMIF), and we set the Address Span Extender as the Reset Agent in the Nios-V Processor configuration (in parameters' editor), we attempted to use LPDDR4 as program memory. However, running/debugging from Ashling RiscFree IDE failed. A screenshot of the error is attached.

    It is worth mentioning that on Agilex 7, we successfully used DDR4 memory—connected via an EMIF IP core and linked through the Address Span Extender—as the program memory for the Nios-V processor, and were able to run and debug applications using the Ashling RiscFree IDE.

    Could you please advise how to resolve this issue on Agilex-5?

    Also, could you confirm whether this procedure has been successfully validated on your side using real hardware?

    Best regards,

  • fa_fpga_enthusiast's avatar
    fa_fpga_enthusiast
    Icon for Occasional Contributor rankOccasional Contributor

    Hello,

    After connecting the s0_axi4_ctrl_ready signal of the EMIF IP core to the reset ports of both the Address Span Extender and the Nios® V processor, the issue no longer occurs.

    We can now successfully use the LPDDR4 as the program memory for the Nios® V processor.

    Please note that we were unable to find any information regarding the s0_axi4_ctrl_ready signal in the External Memory Interfaces (EMIF) IP User Guide.

    Thank you for your support.

    Best regards,

  • tehjingy_Altera's avatar
    tehjingy_Altera
    Icon for Regular Contributor rankRegular Contributor

    Hi


    Thanks for sharing the connection.

    Yes the s0_axi4_ctrl_ready needs to be connected to the nios reset input.

    The logic behind this connection is s0_axi4_ctrl_ready is an output reset signal to keep the Nios in reset until the DDR calibration is completed.


    You could find the documentation on the signal below:https://www.intel.com/content/www/us/en/docs/programmable/817467/25-1/s0-axi4-ctrl-ready-for-agilex-5-e-series-62430.html


    Regards

    Jingyang, Teh



  • tehjingy_Altera's avatar
    tehjingy_Altera
    Icon for Regular Contributor rankRegular Contributor

    Hi


    I’m glad that your question has been addressed, I now transition this thread to community support. If you have a new question, Please login to ‘https://supporttickets.intel.com/s/?language=en_US’, view details of the desire request, and post a feed/response within the next 15 days to allow me to continue to support you. After 15 days, this thread will be transitioned to community support. The community users will be able to help you on your follow-up questions.


    Regards

    Jingyang, Teh