Platform Designer fails QDR II elaboration
This behavior began recently with a mature project. During QSys Generation, the process fails while elaborating a QDR II instantiation claiming it can't find "sequencer/sequencer.elf". Here's the error log:
Info: pll0: "qdrii_1" instantiated altera_mem_if_qdrii_pll "pll0" Info: p0: Generating clock pair generator Info: p0: Generating qsys_fabric_qdrii_1_p0_altdqdqs Info: p0: Generating qsys_fabric_qdrii_1_p0_altdqdqs_in Info: p0: Info: p0: ***************************** Info: p0: Info: p0: Remember to run the qsys_fabric_qdrii_1_p0_pin_assignments.tcl Info: p0: script after running Synthesis and before Fitting. Info: p0: Info: p0: ***************************** Info: p0: Info: p0: "qdrii_1" instantiated altera_mem_if_qdrii_phy_core "p0" Info: m0: "qdrii_1" instantiated altera_mem_if_qdrii_afi_mux "m0" Error: s0: Error during execution of "{C:/intelfpga/18.1/quartus/../nios2eds/Nios II Command Shell.bat} make all 2>> stderr.txt": child process exited abnormally Error: s0: Execution of command "{C:/intelfpga/18.1/quartus/../nios2eds/Nios II Command Shell.bat} make all 2>> stderr.txt" failed Error: s0: ]2;Altera Nios II EDS 18.1 [gcc4]C:/intelfpga/18.1/quartus/bin64/uniphy_mcc -ac_code sequencer_mc/ac_rom.s -inst_code sequencer_mc/inst_rom.s -ac_rom ../qsys_fabric_qdrii_1_s0_AC_ROM.hex -inst_rom ../qsys_fabric_qdrii_1_s0_inst_ROM.hex -header sequencer/sequencer_auto.h -vheader ../sequencer_auto_h.sv -ac_rom_init sequencer/sequencer_auto_ac_init.c -inst_rom_init sequencer/sequencer_auto_inst_init.c -DQUARTER_RATE=0 -DHALF_RATE=1 -DFULL_RATE=0 -DNON_DES_CAL=0 -DGUARANTEED_READ_BRINGUP_TEST=0 -DMEM_ADDR_WIDTH=22 -DHARD_PHY=0 Error: s0: UniPHY Sequencer Microcode Compiler Error: s0: Copyright (C) 2018 Intel Corporation. All rights reserved. Error: s0: Info: Reading sequencer_mc/ac_rom.s ... Error: s0: Info: Reading sequencer_mc/inst_rom.s ... Error: s0: Info: Writing ../qsys_fabric_qdrii_1_s0_AC_ROM.hex ... Error: s0: Info: Writing ../qsys_fabric_qdrii_1_s0_inst_ROM.hex ... Error: s0: Info: Writing sequencer/sequencer_auto_ac_init.c ... Error: s0: Info: Writing sequencer/sequencer_auto_inst_init.c ... Error: s0: Info: Writing sequencer/sequencer_auto.h ... Error: s0: Info: Writing sequencer/sequencer_auto.h ... Error: s0: Info: Writing ../sequencer_auto_h.sv ... Error: s0: Info: Microcode compilation successful Error: s0: C:/intelfpga/18.1/quartus/../nios2eds/sdk2/bin/nios2-bsp hal sequencer_bsp .. --default_sections_mapping sequencer_mem --use_bootloader DONT_CHANGE Error: s0: child process exited abnormally Error: s0: Cannot find sequencer/sequencer.elf Error: s0: An error occurred while executing "error "An error occurred"" (procedure "_error" line 8) invoked from within "_error "Cannot find $seq_file"" ("if" then script line 2) invoked from within "if {[file exists $seq_file] == 0} { _error "Cannot find $seq_file" }" (procedure "alt_mem_if::util::seq_mem_size::get_max_memory_usage" line 14) invoked from within "alt_mem_if::util::seq_mem_size::get_max_memory_usage [file join "sequencer" "sequencer.elf"" invoked from within "set calc_mem_size [alt_mem_if::util::seq_mem_size::get_max_memory_usage [file join "sequencer" "sequencer.elf"]]" ("if" then script line 2) invoked from within "if { !$do_only_rw_mgr_mc && !($bfm_mode || $hps_mode)} { set calc_mem_size [alt_mem_if::util::seq_mem_size::get_max_memory_usage [file join "sequenc..." (procedure "generate_qsys_sequencer_sw" line 924) invoked from within "generate_qsys_sequencer_sw $prepend_str $protocol $pre_compile_dir $fileset $inhdl_dir $rdimm $lrdimm 0 0 $nios_hex_file_name $ac_rom_init_file_name ..." invoked from within "set seq_mem_size_list [generate_qsys_sequencer_sw $prepend_str $protocol $pre_compile_dir $fileset $inhdl_dir $rdimm $lrdimm 0 0 $nios_hex_file_name ..." ("if" else script line 2) invoked from within "if {[::alt_mem_if::util::qini::qini_value alt_mem_if_seq_size_request 0] > 0} { set seq_mem_size [::alt_mem_if::util::qini::qini_value alt_mem_if_se..." (procedure "alt_mem_if::gen::uniphy_gen::generate_qsys_sequencer" line 238) invoked from within "alt_mem_if::gen::uniphy_gen::generate_qsys_sequencer "${name}" $protocol $tmpdir $fileset {}" invoked from within "set qsys_sequencer_files_list [alt_mem_if::gen::uniphy_gen::generate_qsys_sequencer "${name}" $protocol $tmpdir $fileset {}]" (procedure "alt_mem_if::gen::uniphy_gen::generate_sequencer_files" line 3) invoked from within "alt_mem_if::gen::uniphy_gen::generate_sequencer_files $name "QDRII" $tmpdir QUARTUS_SYNTH" invoked from within "foreach generated_file [alt_mem_if::gen::uniphy_gen::generate_sequencer_files $name "QDRII" $tmpdir QUARTUS_SYNTH] { set file_name [file tail $gener..." (procedure "generate_synth" line 8) invoked from within "generate_synth qsys_fabric_qdrii_1_s0" Info: s0: "qdrii_1" instantiated altera_mem_if_qdrii_qseq "s0" Error: Generation stopped, 63 or more modules remaining Info: qsys_fabric: Done "qsys_fabric" with 45 modules, 58 files Error: qsys-generate failed with exit code 1: 20 Errors, 4 Warnings Info: Finished: Create HDL design files for synthesis
I've tried de-installing and re-installing Quartus 18.1.0 to no avail. I've included a stripped down project to see if someone can replicate the issue. Steps to follow:
- Unzip to an empty directory.
- Open project "cxp_upr.qpf"
- Launch Platform Designer
- Open "qsys_fabric.qsys"
- Click "Generate..."
Many thanks in advance for your much valued assistance!
*************** Problem Solved ***************
The issue was traced to enabling WSL (Windows Subsystem for Linux). Apparently WSL interferes with the scripting used to compile the QDR II sequencer code. So, one can either upgrade to a more recent Quartus version or operate without WSL. The effect is reversible, but disabling WSL destroys any installed Linux distributions and Linux files that you've created.