Error: niosv_g_dcache.sv: part-select direction is opposite from prefix index direction
Description Due to a problem in the: Quartus® Prime Pro Edition Software version 24.3.1, 25.1, and Quartus® Prime Standard Edition Software version 24.1 When the Nios® V/g processor is configured with No Data Cache and enabled with Error Detection and ECC Status Reporting, performing Analysis and Synthesis fails with the error "niosv_g_dcache.sv: part-select direction is opposite from prefix index direction". Note that this issue has no relationship with No Instruction Cache. Figure. Nios® V/g Processor Setting to Replicate the Error Resolution To work around this error, Select 1Kbytes Data Cache. Apply a Peripheral Region that covers the whole Nios® V processor’s data_manager address map Enable Error Detection and ECC Status Reporting. By implementing Peripheral Region, the above settings can emulate an ECC-enabled Nios® V processor system that operates without caches. Figure. Workaround (in this example, the whole Nios® V processor’s data_manager address map is 1GB) This problem is scheduled to be fixed in a future release of the Quartus® Prime Edition Software.21Views0likes0CommentsWARNING: Tcl script <file name> error: Module "none" doesn't exist in SOPC design "nios_setup".
Description Due to a problem in the Quartus® II software, if you uncheck Enable for any driver in the Drivers tab of BSP Editor for Nios® II, export a tcl file, and specify it as an option of some command like nios2-bsp, you will get the tcl script error. Resolution To work around this problem, open the tcl file in a text editor and swap the 2 operand of set_driver command. For example, if you disable led_io driver, you will get a line below. set_driver led_io none Then modify the line like below. set_driver none led_io This problem is scheduled to be fixed in a future release of the Quartus II software.0Views0likes0CommentsHow do I include a C file in my Nios II C software project?
Description C2H doesn’t support generating accelerators from C files. There is a work-around which will enable you to call your accelerator(s) from a C program which involves moving the functions you wish to accelerate from a C source file to a C source file. Once your functions are in a C source file, the C2H compiler can effectively “see them” and convert them into hardware accelerators. There are some additional steps necessary for mixing C and C functions (and files). The GNU tool-chain supports the calling of C functions from C programs (and vice versa) through a well defined methodology of explicit assertion. The way this works is that, from your C program you tell the compiler which functions should be call as C functions- instead of C . This operation is done through the use of the extern “C” syntax within the C source file. Some examples of the extern “C” syntax in action are as follows: Calling C function from C program Setup: You have a function void bar(void), which lives in C source file “bar.c” that you want to call from the C source file “foo.cpp”. Solution: Add this to the top of “foo.cpp”- extern “C”void foo(void); Calling C functions from C program Setup: A collection of functions which lives in C source file “bar.c” that you want to call from the C source file “foo.cpp”. Solution: Simply add braces around the group of functions at the top of the extern statement in “foo.cpp”- extern “C” { void foo(void); int foo2(int number); int foo3(int number1, int number2); } Calling a C header from a C program Setup: You have a whole collection of C functions (or a library) in a file called “bar.c” that you want to call from your C program “foo.c”, and you really don’t want to list them individually through procedure #2 (above). You do have a header file for “bar.c” called “bar.h” which declares the interface to the functions. Solution: The extern statement also works for header files… In the file “foo.cpp”, use the extern statement to add the header file- extern “C” { #include “bar.h” } Which methodology is best to use with C2H? When using the C2H compiler, it is recommended that a user “isolate” the function for acceleration into its own file, so using the first example is the best approach for accelerating functions with the C2H compiler.0Views0likes0CommentsHow can I monitor the RY/BY pin of the AM29LV128 flash device on the Nios® development board, Stratix® II Edition from within my Stratix II application?
Description In order to use the RY/BY output of the flash device within a design running on the Nios development board, Stratix II Edition follow the instructions below: Add an input pin to the config_controller design located in the <Nios II install directory>\examples\<HDL>\<development board>\EPM7128_flash_config_controller directory. Assign the new input pin to location 35 on the EPM7128 device. Recompile the design in the Quartus ® II tool. The EPM7128 device will now tri-state its connection to the flash's RY/BY pin. Program the EPM7128 device on the Stratix II board with the POF file generated in the above step. Open the Quartus II design which you are targeting to the Stratix II board. Go to the Assignment Editor and add the "Weak Pull-up Resistor" option for the RY/BY pin. After performing the above steps you can access the RY/BY output of the flash in your Stratix II design.0Views0likes0CommentsWhy does IP Upgrade fail on a composed IP that includes the discontinued Nios® II processor IP in future Quartus® Prime Software?
Description In the Quartus® Prime Pro Edition Software version 24.1, when migrating a composed IP that contains the discontinued Nios® II processor from the previous software version, the IP Upgrade feature reports the following error: “IP component no longer supported. Compilation of IP not supported in current software version.” This problem is due to the discontinued Nios® II processor. Resolution Workaround: Recommended action is to implement Nios® V processor IPs with equivalent functions in a new composed IP. Alternatively, add the following property in the *hw.tcl of the existing composed IP, set_module_property SUPPORTED_EOL_SUB_IPS {altera_nios2_gen2} The discontinued Nios® II processor IP core is render unavailable in the Quartus® Prime IP Catalog after the Last Time Shipments. Interested parties are encouraged to refer to the Nios II Processor Product Discontinuation Notice (PDN2312).0Views0likes0CommentsWhy do I see transceiver PMA functionality problems when using NIOS II as an Avalon Memory Mapped Master for the transceiver reconfiguration controller when using Stratix V, Arria V, or Cyclone V transceiver devices?
Description Due to a bug in the Quartus® II software version 13.0 and earlier, you may see transceiver PMA functionality problems when using NIOS II as an Avalon Memory Mapped Master for the reconfiguration controller when using Stratix® V, Arria® V, or Cyclone® V transceiver devices. When accessing the following transceiver PMA functions through the reconfiguration controller Avalon memory mapped interface using a NIOS II master or other Avalon master you may encounter a failure in the transceiver PMA. Stratix V GX/GT/GS, Arria V GZ Arria V GX/GT/ST/SX Cyclone V GX/GT/ST Pre and post CDR reverse serial loopback Pre and post CDR reverse serial loopback Pre and post CDR reverse serial loopback - Rx equalization Rx equalization The PMA failure is caused by corruption inside the reconfiguration controller if the reconfig_mgmt_address bus toggles when the reconfig_busy signal is asserted. The failure can be recovered by reprogramming the FPGA. Resolution To work around the problem, you can insert logic that prevents toggling of the reconfiguration controller reconfig_mgmt_address bus when the reconfig_busy signal is asserted. Or you can replace the "alt_xreconf_uif.sv" file that resides in your Reconfiguration Controller Megawizard™ generated <instance_name> folder with this file and recompile your design. This problem will be fixed in a future version of the Quartus II software.0Views0likes0CommentsWhy does nios2-bsp fail to look for .sopcinfo file when .ipx is used?
Description Due to a problem in the Quartus® Prime Pro software version 17.0, when using an .ipx file to create multiple custom components, the .sopcinfo file is generated in the qsys_name folder and not in the project directory folder. When you are building a Nios® II application and bsp project in the Nios II Software Build Tools, you will see an error when you build the application project. Error: Info: Compiling ../src/main.c to obj/default/main.o nios2-elf-gcc -xc -MP -MMD -c -I../bsp/HAL/inc -I../bsp -I../bsp/drivers/inc -pipe -D__hal__ -DALT_NO_C_PLUS_PLUS -DALT_USE_DIRECT_DRIVERS -DALT_NO_INSTRUCTION_EMULATION -DALT_USE_SMALL_DRIVERS -DSMALL_C_LIB -DALT_SINGLE_THREADED -O2 -g -Wall -mno-hw-div -mno-hw-mul -mno-hw-mulx -mgpopt=global -o obj/default/main.o ../src/main.c ../src/main.c:33:38: fatal error: custom_pattern_generator.h: No such file or directory #include "custom_pattern_generator.h" ^ compilation terminated. make: *** [obj/default/main.o] Error 1 make: Leaving directory Resolution To workaround this problem, copy the qsys_name.sopcinfo file in the qsys_name folder into the project directory which has the same path with where the <component name>.ipx file is located and rebuild the application file in the Nios II Software Build Tools. This problem is scheduled to be fixed in a future release of the Quartus Prime Pro software0Views0likes0CommentsExample Code Error in Nios II Processor Reference Handbook, Application Binary Interface Chapter
Description In the Application Binary Interface chapter of the Nios II Processor Reference Handbook, Example 7-3 (“Returned struct is Larger than 8 Bytes”) contains a typographical error. *value should be replaced by &value . Resolution The correct code example is as follows: void b(STRUCT *p_result, int i, int j) { ... *p_result = result; } void a(...) { STRUCT value; ... b(&value, i, j); }0Views0likes0CommentsWhy does the Nios® V processor force Configuration Scheme with Memory Initialization for MAX® 10 FPGA?
Description Due to a problem in the Quartus® Prime Standard Edition Software version 23.1 and 24.1, you may see an error below when using Dual Compressed Image as the Internal Configuration mode for Nios® V Processor Design on MAX® 10 FPGA, Error (16031): The current Internal Configuration mode does not support memory initialization or ROM. Select Internal Configuration mode with ERAM. Note: Assuming that memory initialization is disabled in every on-chip memory. Resolution To work around this problem, Download and install the patches below for the Quartus® Prime Standard Edition Software version 24.1. Quartus® Prime Stardand Edition Software v24.1 Patch 0.01std for Windows (.exe) Quartus® Prime Stardand Edition Software v24.1 Patch 0.01std for Linux (.run) Readme for Quartus® Prime Stardand Edition Software v24.1 Patch 0.01std (.txt) Download and install the patches below for the Quartus® Prime Standard Edition Software version 23.1. Quartus® Prime Stardand Edition Software v23.1 Patch 0.03std for Windows (.exe) Quartus® Prime Stardand Edition Software v23.1 Patch 0.03std for Linux (.run) Readme for Quartus® Prime Stardand Edition Software v23.1 Patch 0.03std (.txt) This problem will be resolved in the Quartus® Prime Standard Edition Software version 25.1.0Views0likes0CommentsWhy can't I use siprintf() with Nios II when using the small newlib library?
Description In the Nios® II Software Build Tools, there is an option to use the small newlib c library. However, when this option is selected in the Board Support Package (BSP), it is no longer possible to use the siprintf() function, which is incorrectly stripped from the library. The siprintf() function is a stripped-down version of sprintf() without the support for floating point operators. However, as the small newlib library removes support for floating point operatins on all of the printf() derivitives, effectively siprintf and sprintf are the same. Replacing siprintf with sprintf in your code will work around the issue. This issue is planned to be fixed in a later version of the Nios II Software Build Tools.0Views0likes0Comments