DE10-Nano Manual instructions fail to compile GHRD on Ubuntu (SOLVED)

Hello

I’m new to Cyclone V tools and am struggling to get the stock GHRD to compiile as described in the manual. Would some kind and experienced soul take a quick peek to find out what I’m doing wrong?

It’s a DE10-Nano Cylcone V development board rev B2 from Terasic, and I’m following the instructions in the User Manual (rev B2) chapter 7 “Examples for using both the HPS SoC and FPGA”

It’s on a freshly-installed Ubuntu 16.04.3 server, at AWS.

It’s a straightforward compilation of the GHRD (open project .qpf file, Tools>Qsys: open .qsys file, Generate>Generate HDL). Following the instructions very carefully, I get four warnings and screenfuls of errors, the first of which is something to do with a missing file hps_AC_ROM.hex

Error: border: Error during execution of script generate_hps_sdram.tcl: seq: \
    add_fileset_file: \
   No such file /tmp/alt7540_4530398708016069914.dir/0003_seq_gen/hps_AC_ROM.hex
Error: border: Error during execution of script generate_hps_sdram.tcl: \
   Generation stopped, 3 or more modules remaining
Error: border: Execution of script generate_hps_sdram.tcl failed

The warnings were

Warning: hps_0.f2h_irq0: Cannot connect clock for irq_mapper_001.sender
Warning: hps_0.f2h_irq0: Cannot connect reset for irq_mapper_001.sender
Warning: hps_0.f2h_irq1: Cannot connect clock for irq_mapper_002.sender
Warning: hps_0.f2h_irq1: Cannot connect reset for irq_mapper_002.sender

Can some kind soul tell me what I should do to get it compiled? (Complete details of my steps below).

Many thanks,
Jonathan.


Below here is just exact details of what I was doing, probably no need to read

Compilation system is freshly installed Ubuntu 16.04 LTS server
CDROM image was from Terasic: DE10-Nano_v.1.2.4_HWrevB2_SystemCD.zip
This is my project directory:
cp -Rp cdrom/Demonstrations/SoC_FPGA/DE10_NANO_SoC_GHRD ~/GHRD
File DE10_NANO_SoC_GHRD.qsf seems to say it’s done in Quartus 16.0

set_global_assignment -name TOP_LEVEL_ENTITY "DE10_NANO_SoC_GHRD"
set_global_assignment -name LAST_QUARTUS_VERSION 16.0.2
set_global_assignment -name PROJECT_CREATION_TIME_DATE "17:14:54 MARCH 04,2015"

Because the manual says “16.0 or greater”, and this file was done with 16.0, that’s what I’m using. (I actually tried with 17.1, same problems.)

cadbox$ quartus

Just for completeness, this is how I got the tools installed in case I’ve done something wrong here.

wget http://download.altera.com/akdlm/software/acdsinst/16.0/211/ib_tar/Quartus-lite-16.0.0.211-linux.tar
tar xvf Quartus-lite-16.0.0.211-linux.tar
cd components/
./QuartusLiteSetup-16.0.0.211-linux.run --mode unattended --unattendedmodeui none --installdir /mnt/altera/16.0
wget http://download.altera.com/akdlm/software/acdsinst/16.0/211/ib_installers/SoCEDSSetup-16.0.0.211-linux.run
chmod 775 SoCEDSSetup-16.0.0.211-linux.run 
./SoCEDSSetup-16.0.0.211-linux.run --mode unattended --unattendedmodeui none --installdir /mnt/altera/16.0

# Fix PATH in .bashrc, log out, log in, Check environment has QSYS_ROOTDIR and suitable path:
cadbox$ echo $QSYS_ROOTDIR
/mnt/altera/16.0/quartus/sopc_builder/bin
cadbox$ which quartus
/mnt/altera/16.0/quartus/bin/quartus
cadbox$ quartus_sh --version
Quartus Prime Shell
Version 16.0.0 Build 211 04/27/2016 SJ Lite Edition

Do you have the environment variable QUARTUS_ROOTDIR defined?

$ printenv QUARTUS_ROOTDIR
C:\intelFPGA_lite\17.1\quartus

I am a novice, but I was able to compile and load the GHRD for a DE10-nano board using the Quartus 17.1 lite edition on Windows 10. I will see if I can attach a QSYS report.

Thanks Austin for the suggestion: I added that to the environment, sadly with identical results.

Are you doing the exact same steps? (Quartus open project, Qsys, open file, Generate) ?

Thanks looking into it.

Jonathan.

$ printenv | fgrep qua
QSYS_ROOTDIR=/mnt/altera/16.0/quartus/sopc_builder/bin
QUARTUS_ROOTDIR=/mnt/altera/16.0/quartus
PATH=/home/ubuntu/bin:/home/ubuntu/.local/bin:/mnt/altera/16.0/quartus/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Yes, I am doing the same steps with the Windows 10 version of Quartus lite. I see those warnings you mention and the same type of screens in QSYS. I also see the hex file in your error message
in my project directory, as follows:

$ pwd
/home/dshol/de10-nano/Projects/DE10_NANO_SoC_GHRD_baremetal_app/soc_system/synthesis/submodules
$ ls *.hex
hps_AC_ROM.hex hps_inst_ROM.hex soc_system_onchip_memory2_0.hex

I am not able to attach the QSYS report here, so maybe I can send it to you via email. My email is:
dsholt4 at hotmail.com

I think I found the reference to the “generate_hps_sdram.tcl” script in your error message
here in my Quartus installation:

intelFPGA_lite/17.1/ip/altera/alt_mem_if/alt_mem_if_interfaces/alt_mem_if_hps_emif/common_hps_emif.tcl

   set output [::alt_mem_if::gen::uniphy_gen::generate_ip_from_quartus_sh altera_mem_if_hps_emif $arg_list $tmpdir generate_hps_sdram.tcl]

Based on the Quartus Tcl code, it looks like Quartus generates a temporary file called generate_hps_sdram.tcl which is supposed to generate that hex file after being executed. Then it deletes the temporary executable Tcl file afterwards. Try also checking your TMP and TEMP environment variable settings, and that you have write permission into those directories.

BTW you might want to post a query here:

https://www.alteraforum.com/forum/forumdisplay.php?f=7

It seems to get more responses for Quartus issues.

… yes I found the file too

-rw-rw-r-- 1 ubuntu ubuntu 853 Nov 14 2016 soc_system/synthesis/submodules/hps_AC_ROM.hex

… $TMP was recognised and used, but previously could see the temporary files in /tmp

… yes have same common_hps_emif.tcl

… same results with the DE10_NANO_SoC_GHRD/ from all three versions of the CDROM on Terasic’s web site, including the rev C which is out today.

Looks to me like a step is missing somehow, or a dependency.

Jonathan.

After another week of work on it, I solved it. Thankfully it’s very easy to fix.

  1. Quartus requires make, but they don’t tell you in “Requirements” or “FAQ”
  2. qsys-generate, the part which does the generate, has a bug and continues after it fails to find make
  3. qsys-generate actually doesn’t check a failed make (non-zero exit status) either
  4. Thus you get a rubbish error message of some downstream missing-file problem

The fix is trivial, install make

sudo apt-get install make

The bug exists in at least Quartus 16.0, 16.1, 17.0 and 17.1 It’s masked in Red Hat Enterprise Linux because that has make installed by default; Ubuntu does not. Bug report filed with Altera, we shall see what they say.

In passing, I made a good install script, happy to share if there’s any want for it.

My civil demeanour in no way is expressive of my opinion of this matter.

Kind regards,
Jonathan.

1 Like

Thanks Jonathan,

The problem still exists in Quartus 20.1.
You have saved me much time and frustration.

God Bless,
Samuel

Incredible, thanks for sharing this! This issue exists in 20.1.1 Lite edition too.

Just by installing make, I am now able to use quartus on wsl2 debian on windows 10 with no problems at all.

Hi, I faced the same issue with Prime Lite 21.1, with ubuntu 18.4. Thanks for sharing, the ‘install make’ fixed the issue.