Окей, можливо не кожному знадобиться інфа, як ставити Quartus 17.1 на Ubuntu 24.04 LTS, але така потреба іноді може виникнути. До того ж деякі описані моменти будуть актуальні і для новіших версій Quartus. Тому поїхали! :)
Встановлюємо додаткові бібліотеки
Для роботи Quartus 17.1 знадобиться libpng12, а для роботи USB Blaster потрібен libudev1:i386. Маємо їх встановити.
Встановлюємо libpng12 (в новіших версіях Quartus цієї проблеми не має бути):
Встановлюємо build-essential:
sudo apt install build-essential
Встановлюємо zlib1g-dev:
sudo apt-get install zlib1g-dev
Викачуємо вихідний код з sourceforge (нам потрібен архів libpng-1.2.59.tar.gz)
Розпаковуємо архів:
tar -xzf libpng-1.2.59.tar.gz
Компілимо і інсталимо лібу:
cd ./libpng-1.2.59 ./configure --prefix=/usr/local make sudo make install sudo ldconfig
Для роботи USB-Blaster (код девайсу 09fb:6001) потрібна 32-розрядна ліба libudev1:i386. Без цієї ліби при спробі сканування JTAG ланцюжка отримаєте “Unable to read device chain - JTAG chain broken”. При цьому новіший програматор USB-Blaster 2 (код девайсу 09fb:6010) працює без проблем.
sudo dpkg --add-architecture i386
sudo apt update
sudo apt-get install libudev1:i386
sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Встановлюємо Quartus Prime Standard
Викачуєте архів Quartus-17.1.0.590-linux-complete.tar за посиланням (обираєте Complete Download). Розмір 26.8 ГБ. Хеш: 981329178fb7efb2ef326e2d9ee876fdfccef674
Розпаковуєте архів.
Якщо запустити інсталер версії 17.1 з GUI, він зависне. Тому ставите комоненти з командного рядка окремо.
Інсталите Quartus виконавши в терміналі:
$DOWNLOADDIR/components/QuartusLiteSetup-$VER-linux.run \
--mode unattended \
--unattendedmodeui none \
--installdir $INSTALLDIR \
--disable-components quartus_help,modelsim_ase,modelsim_ae \
--accept_eula 1
Замість $DOWNLOADDIR, $VER та $INSTALLDIR підставляєте відповідні значення. В моєму випадку це було:
./QuartusSetup-17.1.0.590-linux.run \
--mode unattended \
--unattendedmodeui none \
--installdir ~/intelFPGA/17.1 \
--disable-components quartus_help,modelsim_ase,modelsim_ae \
--accept_eula 1
Під час встановлення скрипт може зависнути. Контролюйте виконання скрипта за допомогою консольної утиліти top
. Якщо побачите, що скрипт і архіватор не використовують процесорний час, а скрипт все ще не завершився, можете його завершити за допомогою CTRL+C. Це стосується і виконання двох наступних команд.
Далі встановлюєте ModelSim та QuartusHelp:
./ModelSimSetup-17.1.0.590-linux.run \
--mode unattended \
--unattendedmodeui none \
--installdir ~/intelFPGA/17.1 \
--modelsim_edition modelsim_ase \
--launch_from_quartus 1 \
--accept_eula 1
./QuartusHelpSetup-17.1.0.590-linux.run \
--mode unattended \
--unattendedmodeui none \
--installdir ~/intelFPGA/17.1 \
--accept_eula 1
Щоб Quartus запускався з командного рядка, можна додати шлях до бінарників Quartus в PATH. А можна виконати скрипт nios2_command_shell.sh в каталозі intelFPGA/17.1/nios2eds, який запустить сесію терміналу з уже налаштованими необхідними змінними оточення.
У вікні налаштування ліцензії, що відкриється після першого зісля запуску Quartus, вказуєте шлях до файлу з ліцензією.
Якщо ваша ліцензія Quartus привязана до іншої MAC адреси мережевого адаптера, змінити MAC адресу можна або в графічному інтерфейсі налаштувань мережевого адаптера netplan, або за допомогою sudo macchanger --mac=xx:xx:xx:xx:xx:xx enp59s0
, де xx:xx:xx:xx:xx:xx
- нова MAC адреса, а enp59s0
- назва відповідного мережевого інтерфейсу. Зміну за допомогою macchanger доведеться робити після кожного перезавантаження системи.
Налаштовуємо USB-Blaster
Тут все просто. Як вказано вище встановлюєте libudev1:i386, а потім налаштовуєте правила udev створивши файл /etc/udev/rules.d/51-usbblaster.rules з наступним вмістом (для цього знадобляться привілегії root):
# USB Blaster
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"
# USB Blaster II
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6810", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", RUN+="/bin/chmod 0666 %c"
Після створення і збереження файлу перепідключаєте USB-Blaster.
От і все, кінець :)