Altera Design Software

From ArchWiki
Jump to navigation Jump to search

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: Altera was acquired by Intel. (Discuss in Talk:Altera Design Software#)

From Design Software - FPGA Design:

The Quartus® Prime design software is a multiplatform design environment that easily adapts to your specific needs in all phases of FPGA, CPLD, and SoC designs. The Quartus Prime software delivers the highest performance and productivity for Intel® FPGAs, CPLDs, and SoCs.

This tutorial shows how to download, install, and configure the following software from Altera:

  • Quartus Prime Standard Edition
    • USB-Blaster (I and II) Download Cable Driver
  • ModelSim-Altera Edition (Included with Quartus Prime Standard Edition)

Quartus Prime Standard Edition

Installation via AUR

Install the quartus-freeAUR meta-package to install the latest version of Quartus Prime Lite and ModelSim. This meta-package will install all the devices supported by Quartus Prime. A minimal installation can be achieved by installing only the necessary components. For example:

quartus-free-quartus requires the quartus-devinfo package, which is provided by any one of the AUR packages with a quartus-devinfo- prefix. For example, install quartus-free-devinfo-cyclonevAUR as a dependency if you have a Cyclone V FGPA.

Executing quartus is another way to start Quartus Prime Lite (instead of selecting its desktop entry).

You need to be in the plugdev group to program an FPGA (via the USB-Blaster).

Manual installation

Tango-edit-cut.pngThis section is being considered for removal.Tango-edit-cut.png

Reason: The primary purpose of this section is to achieve a minimal installation by manually installing Quartus Prime, but this is no longer necessary since a minimal installation can be achieved simply by installing only the required packages provided by the quartus-freeAUR meta-package. See #Installation via AUR for more information. (Discuss in Talk:Altera Design Software#)

The following procedure shows how to download, install, and configure Altera Quartus Prime Standard Edition v15.1 for Arch Linux.

Note: The following tutorial works for older Quartus II and ModelSim versions, including both Subscription Editions and Web Editions, from at-least v13.0 through v15.0.

Quartus Prime is Altera's design software collection to design and interact with all their FPGAs/CPLDs/etc. products.

Quartus Prime Standard Edition v15.1 is officially supported for RHEL 5 and RHEL 6, but since it is one of those huge collections of proprietary software that does not interact so much with the distribution, it is fairly easy to install on Arch Linux.

Get Quartus Prime

In Altera's Downloads section, select Linux as the operating system and get the Combined Files tar archive (something like Quartus-

Install dependencies

Although the main Quartus Prime software is 64-bit, a lot of Altera tools shipped with Quartus Prime are still 32-bit software. Those include the Nios II EDS and Qsys, for example. This is why we need to install lots of lib32- libraries and other programs from the Arch Linux multilib repo.

In order to install multilib packages using pacman, you need to enable the multilib repository first (if not already done).

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: Are tcl and tcllibAUR still required? They do not appear in the linked documentation and they also do not appear to be pulled in as dependencies when installing quartus-freeAUR. (Discuss in Talk:Altera Design Software#)

All the packages required below are taken from Section 2.3, "Software Requirements", of Intel® FPGA Software Installation and Licensing.

Let us first install the native versions of the required packages: expat fontconfig freetype2 xorg-fonts-type1 glibc gtk2 libcanberra libpng libpng12 libice libsm util-linux ncurses tcl tcllibAUR zlib libx11 libxau libxdmcp libxext libxft libxrender libxt libxtst ld-lsb.

And the multilib versions: lib32-expat lib32-fontconfig lib32-freetype2 lib32-glibc lib32-gtk2 lib32-libcanberra lib32-libpng lib32-libpng12 lib32-libice lib32-libsm lib32-util-linux lib32-ncurses lib32-zlib lib32-libx11 lib32-libxau lib32-libxdmcp lib32-libxext lib32-libxft lib32-libxrender lib32-libxt lib32-libxtst.

You are now ready to install and launch Quartus Prime.


To install, first extract the downloaded tar archive:

$ tar -xvf Quartus-

and launch If you are going to install Quartus Prime anywhere outside your home directory, run it as root:

# ./

You will probably get a GUI install wizard if you installed all the aforementioned packages. You might also get a command-line interactive install wizard, which will do the same.

The default install path is /root/altera/15.1, but some prefer /opt/altera/15.1, which we assume for the rest of this document.

Make sure to include the 64-bit option of Quartus Prime when installing.

Launching Quartus Prime

Assuming you installed Quartus Prime in /opt/altera/15.1, Quartus Prime binaries are located into /opt/altera/15.1/quartus/bin. Run Quartus Prime (64-bit version):

$ /opt/altera/15.1/quartus/bin/quartus --64bit

or the 32-bit version:

$ /opt/altera/15.1/quartus/bin/quartus

All other Altera tools, like Qsys, the Nios II EDS, Chip Planner and SignalTap II may be launched without any problem from the Tools menu of Quartus Prime.

Integrating Quartus Prime with the system

Quartus Prime can be integrated with the system in several ways, but those are optional.

PATH variable

Let us now add the Quartus bin folder to the PATH variable so it can be executed without specifying its absolute path. Create a file in the /etc/profile.d directory

export PATH=$PATH:/opt/altera/15.1/quartus/bin

Also, make sure it can be executed:

# chmod +x /etc/profile.d/

Please note that those profile.d files are loaded at each login. In the mean time, simply source that file in Bash:

$ source /etc/profile.d/

Other environment variables related to Quartus can be found in the official installation manual.

Even if quartus is now a command known by Bash, you still need to add the --64bit argument in order to launch the 64-bit version. A shell alias, like quartus64, is a great solution to avoid typing it each time.

Application menu entry - Quartus Prime

A application menu entry (which a lot of desktop environments and window managers follow) can be added to the system by creating a quartus.desktop file in your ~/.local/share/applications directory:

[Desktop Entry]
Name=Quartus Prime Standard Edition v15.1
Comment=Quartus Prime design software for Altera FPGA's
Exec=/opt/altera/15.1/quartus/bin/quartus --64bit

USB-Blaster Download Cable Driver

The USB-Blaster (I and II) Download Cable is a cable that allows you to download configuration data from your computer to your FPGA, CPLD or EEPROM configuration device. However, Altera only provides official support for RHEL, SUSE Entreprise and CentOS, so we are required to do a little bit of work to make it work with Arch Linux. If you want some more detail about this cable, please refer to the USB-Blaster Download Cable User Guide.

Create a new udev rule:

SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6810", MODE="0666"

Then, reload that file using udevadm (disconnect any Altera device from port USB port before this command):

# udevadm control --reload && udevadm trigger

To check that everything is working, plug your FPGA or CPLD board using your USB-Blaster Download Cable and run:

$ /opt/altera/15.1/quartus/bin/jtagconfig

You should have an output similar to this one

1) USB-Blaster [USB 1-1.1]
  020B30DD   EP2C15/20

If jtagconfig output does not contain board name, you might have problems with launching nios2 tools. In order to workaround this issue, you should copy jtagd settings to /etc/jtagd:

# mkdir /etc/jtagd
# cp /opt/altera/15.1/quartus/linux/pgm_parts.txt /etc/jtagd/jtagd.pgm_parts

and restart jtagd:

$ jtagconfig
1) USB-Blaster [2-4]
$ killall jtagd
$ jtagd
$ jtagconfig
1) USB-Blaster [2-4]
020F30DD EP3C25/EP4CE22

If there seems to be an error message about "linux64" and you did not install the 64-bit version of Quartus Prime, create a symlink, linux64, that resolves to linux in /opt/altera/15.1/quartus:

# ln -s /opt/altera/15.1/quartus/linux /opt/altera/15.1/quartus/linux64

Standard Edition License Validation

Configuring the path to your Quartus Prime Standard Edition license file from the Quartus Prime settings interface is not enough for successful license validation. The license validation routine looks for your MAC address on device eth0. This was the legacy name for your ethernet controller; now systemd dynamically allocates a name to your device on boot - this can be different from machine to machine. We need to rename that device back to the expected eth0.

Create a new udev rule:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"

where xx:xx:xx:xx:xx:xx is your networking device's MAC address. Then, reload that file using udevadm:

# udevadm control --reload

Alternatively a dummy eth0 network interface can be created by systemd-networkd daemon dynamically at boot. Create the file 25-dummy.netdev in the /etc/systemd/network/ directory



where xx:xx:xx:xx:xx:xx is the licensed networking device's MAC address and hostname is your machine's hostname. Finally ensure systemd-networkd service is enabled and started.

The Quartus Prime Standard Edition license validation routine also uses the deprecated networking tool ifconfig to validate your networking devices MAC address as per your Quartus Prime license. The deprecated networking package net-tools contains the ifconfig tool. Thus one must also install the net-tools package for Quartus Prime Standard Edition licensing validation success.


Empty (greyish) windows inside quartus (XMonad)

Some of the built-in editors in quartus such as ip editors and qsys only show a blank window. To workaround this issue change the name that is reported by your window manager to for example LG3D. To change the name reported by XMonad see the documentation.

USB Blaster not working


$ /opt/altera/quartus/bin/jtagconfig

Then depending on the output:

No JTAG hardware available

Check if the device shows up with lsusb. If it does try to restart jtagd as root[1]

# killall -9 jtagd
# /opt/altera/quartus/bin/jtagd
JTAG chain broken
1) USB-Blaster [3-2]
  Unable to read device chain - JTAG chain broken

First navigate to the directory of your Quartus installation, then perform the following steps[2] to copy the pgm_parts.txt file:

killall jtagd
mkdir /etc/jtagd
cd /{path to quartus install}/{version number}/quartus/linux64/
cp pgm_parts.txt /etc/jtagd/jtagd.pgm_parts
cd ../bin
./jtagd --user-start

In the bin/ directory, you should be able to run jtagconfig and get an output resembling the following:

#1) USB-Blaster [3-2] 
 031050DD   10M50DA(.ES)/10M50DC

If you do now, plug and unplug your device, and you should be able to run it.

Another possible cause may be a missing 32 bit version of libudev, install lib32-libudev0-shim (source).

Error when scanning hardware - Server error
Connecting to server(s) [........          ]
Error when scanning hardware - Server error

A workaround is to edit /etc/jtagd.conf or $HOME/.jtagd.conf (depending on whether you want to run jtagd as root or unprivileged user) to include the following line:

Password = "changeme";

The second step is to add the server:

$ /opt/altera/quartus/bin/jtagconfig --addserver changeme

If you still have problems, try restarting jtagd:

# killall -9 jtagd
$ /opt/altera/quartus/bin/jtagd

Installation hangs when installing Quartus Prime Help and/or ModelSim

For Quartus Prime Lite 17.1, or probably other versions, the installation process hangs when installing Quartus Prime Help and ModelSim. One workaround is to uncheck them in the "Select Components" step and install them later manually from the components folder.

Eclipse IDE for NIOSII is Slow or Unresponsive

Try disabling GTK3 in eclipse.ini in your altera folder Eclipse#Disable GTK 3

ModelSim-Altera Edition


ModelSim-Altera Edition is downloaded and installed from the Combined Files tar archive Quartus- as part of the Quartus Prime installation procedure above.

Compatibility with Archlinux

With the kernel 4.x and Upwards

Note: ModelSim Starter Edition installation uses the path /opt/altera/15.1/modelsim_ase/ where ModelSim Subscription Edition installation uses the path /opt/altera/15.1/modelsim_ae/; the following assumes the ModelSim Subcription Edition installation.

Modelsim has a problem with version 4 of the linux kernel. You need to edit the vsim script to make it compatible. This file may be be read only, so temporarily give yourself write permissions and:


/opt/altera/15.1/modelsim_ae/vco line 206
*)                vco="linux_rh60" ;;


/opt/altera/15.1/modelsim_ae/vco line 206
*)                vco="linux" ;;

With freetype2

The upgrade from freetype2 version to (October 2013[3]) causes the following error in ModelSim:

$ vsim
Error in startup script:
Initialization problem, exiting.
Initialization problem, exiting.
Initialization problem, exiting.
   while executing
   (procedure "PropertiesInit" line 3)
   invoked from within
   invoked from within
"ncFyP12 -+"
   (file "/opt/questasim/linux_x86_64/../tcl/vsim/vsim" line 1)
** Fatal: Read failure in vlm process (0,0)

Another error message caused by the same problem:

$ vsim
Error in startup script:
Initialization problem, exiting.
Initialization problem, exiting.
    while executing
"InitializeINIFile quietly"
    invoked from within
"ncFyP12 -+"
    (file "/mtitcl/vsim/vsim" line 1)
** Fatal: Read failure in vlm process (0,0)

There are two solutions to solve this problem. The first involves downgrading the Package (probably via the Arch Linux Archive). If you are using the 32-bit version, it is sufficient to downgrade lib32-freetype2. The second and more elegant solution involves replacing the old freetype version for ModelSim only without withholding updates on the whole system (originally proposed at the now-dead link

  • Copy the lib32-freetype2 library and symlinks somewhere in the altera folder, eg: $HOME/altera/xx.x/lib32/
  • Edit the ModelSim script /opt/altera/15.1/modelsim_ae/vco and add after dir=`dirname "$arg0"`
export LD_LIBRARY_PATH=${dir}/../lib32
Note: The quartus script will need to have write permissions added to it.

When ModelSim is launched directly from Quartus the error may persist. In this case, add the same line to quartus/bin/quartus_sh.

With fontconfig 2.12.6

Similar as the problem with freetype above, the upgrade from fontconfig 2.12.6+5+g665584a-1 to fontconfig 2.13.0+10+g58f5285 causes ModelSim to not start anymore because that fontconfig version would need a newer freetype version. It yields the following error message:

modelsim_ase/bin/../linux/vish: symbol lookup error: /usr/lib32/ undefined symbol: FT_Done_MM_Var

So, in addition to libfreetype, you also have to supply a downgraded version of libfontconfig to successfully start ModelSim. This works by getting the 2.12.6 fontconfig version from and extracting the tarball. After that you need to:

cd fontconfig-2.12.6/

Now create an extra folder here to install this version of fontconfig in.

mkdir bin

Then configure the Makefile to compile it correctly and install it into the just created folder and compile afterwards.

./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" --prefix="/path/to/your/download/fontconfig-2.12.6/bin/"
make install

Now the needed .so files are in "bin/lib/". Copy those to into the created lib32 folder from the "freetype" step.

cp* /path/to/modelsim/modelsim_ase/lib32/.

After that this problem should be solved!

lib32-glibc 2.23-1

Originally discussed at

The upgrade from lib32-glibc version 2.23-1 to later versions of lib32-glibc breaks FlexLM and prevents ModelSim from checking out a license. One workaround is to download the archived lib32-glibc-2.23-1 and extract it to a directory such as ${HOME}/altera/xx.x/lib32/glibc223-1. Then create or modify the LD_LIBRARY_PATH environment variable at the top of the /opt/altera/xx.x/modelsim_ae/vco script to include the new glibc223-1/usr/lib32 directory in the search path:

export LD_LIBRARY_PATH=${HOME}/altera/xx.x/lib32;${HOME}/altera/xx.x/lib32/glibc223-1/usr/lib32

Application Menu Entry - ModelSim-Altera Edition

You can add Modelsim to your system application menu by creating a modelsim.desktop file in your ~/.local/share/applications directory

[Desktop Entry]
Name=ModelSim-Altera Edition
Comment=ModelSim simulation software for Altera FPGA's


Resolving the "ModelSim Failed to access library 'work'" error

The solution was originally documented at

If you receive the error:

Error: (vcom-19) Failed to access library 'work' at "work". 

when running a simulation in a new directory, you must create a new work directory. Execute the following in the ModelSim console:

ModelSim> vlib work

Crash with "Error: couldn't open socket: host is unreachable"

If ModelSilm crash while trying to start a simulation with the error:

Error: couldn't open socket: host is unreachable
Trouble making server.

then you may need to add an entry for localhost in your /etc/hosts file:

  #<ip-address>  <>  <hostname>
  ...      localhost              yourhostname