====== Altera Tools on Linux ====== //**Note**: Of course, when I say Linux, I mean Slackware :p// I have started using Altera (an alternative to Xilinx) because that is what I have to use in the course I will be handling next semester. And when I say on Linux, it is more like on Slackware. I run the software on my pure 64-bit Slackware, but in a 32-bit chroot environment. I will be using Quartus Web Edition 13.0sp1, which is the last version that supports all Cylone FPGAs (low cost ones). Current version is now known as Quartus Prime Lite Edition 15.1. ====== Command Line Stuff ====== I use command-line most of the time - this is because I can then use shell scripts to automate my work flow. ===== Device Programmer ===== quartus_pgm -l | grep '1)' | sed 's/^1)\s\(.*\)$/\1/' quartus_pgm -c usb-blaster -m JTAG --device=1 -o "p;my1fpga.sof" ====== Installation Notes ====== Additional installation info... ===== Using USB Byte Blaster ===== To use the USB blaster (byte-blaster?) cable on Linux, we need to set proper permission and device symlink. Create a udev rule file (something like...) '/etc/udev/rules.d/99-altera-usb.rules' and enter SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", GROUP="plugdev", MODE="0666", SYMLINK+="usbblaster" If not rebooting, do not forget to restart udev service. (e.g. ''udevadm control --reload-rules'') //**Note**: idProduct may vary (on Linux, check kernel message i.e. ''dmesg|tail'') - so, either create multiple entry OR simply write ''ATTR{idProduct}=="6010|6001"'' within the same statement// ====== Run Time Issues ====== Run-time issues... ===== (Unsolved) ModelSim Run-Time Error ===== This is exactly like I had previously (I guess I was on 14.1 that time), but the fix is no longer working on 14.2. Just a recap, when trying to run vsim, this error message appears Error in startup script: Initialization problem, exiting. Initialization problem, exiting. Initialization problem, exiting. while executing "EnvHistory::Reset" (procedure "PropertiesInit" line 3) invoked from within "PropertiesInit" invoked from within "ncFyP12 -+" (file "/home/share/apps/altera-13.0sp1/modelsim_ase/linux/../tcl/vsim/vsim" line 1) ** Fatal: Read failure in vlm process (0,0) Recompiling freetype-2.4.7 does not fix this. Still looking for a fix... Another bug has also been found - due to the fact that Slackware 14.2 is on 4.0 kernel version. The ''vco'' script assumes all 'other' versions after 3 is running on RedHat 6. To rectify that * ''chmod +w vco'' * ''sed -i 's|linux_rh60|linux|g' vco'' * ''chmod -w vco'' ===== 20160727 Quartus II 13.0sp1 cannot run on Slackware 14.2 ===== Slackware 14.2 has a newer libpng (1.14 and 1.16). So I copied the older version from 14.1 packages (aaa_elflibs) and copied it into ''/usr/lib'' (I'm using 32-bit quartus). Problem solved. **Note:** To get that package on my slackware machine, I use my ''getslackpack'' script ARCH=x86 RELEASE=14.1 getslackpack --reset --slack aaa_elflibs --exec which will create a sub-folder ''slackpack-14.1'' to store that file. ===== 20160201 ModelSim Run-time Error ===== I had a problem running ModelSim (Altera Edition) and later found that a similar issue has been reported [[https://communities.mentor.com/thread/13821|here]]. So what I did is simply download last known working version of freetype library (2.4.7) from [[http://sourceforge.net/projects/freetype/files/freetype2/2.4.7/|here]] and compile manually (''configure'' and ''make'' - notice no install!). I copied the shared library ''objs/.libs/libfreetype.so.6.7.2'' and the two softlinks (''libfreetype.so'' & ''libfreetype.so.6'') into a path like ''/home/share/application/altera-13.0sp1/libfreetype''. Do an export LD_LIBRARY_PATH=/home/share/application/altera-13.0sp1/libfreetype before running vsim. Problem solved. ====== Quartus 13.0sp1 on Devuan ====== I have a machine running Devuan that I currently use to do some FPGA-related work. ===== Prepare 32-bit Environment ===== Most tools are still 32-bit. So, as root, setup multi-arch environment on Devuan and install required libraries. # dpkg --add-architecture i386 # apt update # apt install libc6:i386 libncurses5:i386 libstdc++6:i386 # apt install libxft2:i386 libxext6:i386 # apt install zlib1g-dev:i386 libsm6:i386 ===== Installation ===== I usually install as normal user to a 'shared' location (e.g. ''/home/share/appx/altera/'') - no need root access for this. I use [[https://github.com/azman/my1shell/blob/master/do-exec|this script]] to start work environment. $ do-exec altera ===== Issues ===== Quartus needs libpng12 * download PNG_BASE="https://sourceforge.net/projects/libpng/files" PNG_VERS=1.2.59 PNG_PACK="libpng-${PNG_VERS}.tar.xz" wget ${PNG_BASE}/libpng12/${PNG_VERS}/${PNG_PACK}/download >${PNG_PACK} * extract and compile $ ./configure $ make CFLAGS+=-m32 * copy ''.libs/{libpng12.so,libpng12.so.0,libpng12.so.0.59.0}'' to ''quartus/linux/'' ModelSim needs older freetype (2.4.7 should be fine) * download * extract and compile $ ./configure CFLAGS=-m32 $ make * copy ''objs/.libs/{libfreetype.so,libfreetype.so.6,libfreetype.so.6.7.2}'' to ''modelsim_ase/linux/'' * do an export ''LD_LIBRARY_PATH=/linux/'' (in my case, handled by do-exec) * **note** this may be the solution to my previous issue on Slackware14.2 (will test this later)