Quartus: различия между версиями

Материал из ALT Linux Wiki
(libfontconfig)
(Из последнего опыта, что нужно сделать с p10, чтобы 17.1 в ней заработал)
 
(не показана 1 промежуточная версия этого же участника)
Строка 7: Строка 7:


= Совместимость с версиями ОС =
= Совместимость с версиями ОС =
Данная инструкция подходит для установки Quartus версий 16.x и 17.x на Alt Linux x86_64 [[p8]] и [[p9]]. Другие комбинации версий ОС и САПР предположительно тоже будут работать.
Данная инструкция подходит для установки Quartus версии 17.1 на Alt Linux x86_64 [[p10]]. Другие комбинации версий ОС и САПР предположительно тоже будут работать.


== Базовая установка ==
== Базовая установка ==
Скачать .tar архив с сайта Altera: [http://dl.altera.com/?edition=lite]. Распаковать и запустить скрипт "setup.sh". При необходимости также скачать и установить обновления. Пути с пробелами и не-ASCII символами могут вызвать ошибки.
Скачать .tar архив с сайта Altera: [http://dl.altera.com/?edition=lite] (через VPN или попросить у коллег когда-то скачанную версию =)). Распаковать и запустить скрипт "setup.sh". При необходимости также скачать и установить обновления. Пути с пробелами и не-ASCII символами могут вызвать ошибки. Рекомендуется просчитать стратегию недоступа программ в сеть Интернет.


Система поставится в домашнюю папку по адресу ~/intelFPGA_lite/${ver}/, где ver - версия (ver="16.1", ver="17.1"...).
Система поставится в домашнюю папку по адресу ~/intelFPGA_lite/${ver}/, где ver - версия (ver="16.1", ver="17.1"...).


Также следует установить из репозитория пакеты:  
Также следует установить из репозитория пакеты:  
i586-libX11.32bit
  i586-libXft.32bit
  i586-libXft.32bit
i586-libXext.32bit
  libudev0
  libudev0
Первый из них - для ModelSim, второй - для jtagd.
 
Первые из них, что относятся к X11, - для ModelSim, udev - для jtagd.


== Доработки и исправления ==
== Доработки и исправления ==
Строка 34: Строка 37:
           2.[5-9]*)        vco="linux" ;;
           2.[5-9]*)        vco="linux" ;;
           2.[1-9][0-9]*)    vco="linux" ;;
           2.[1-9][0-9]*)    vco="linux" ;;
           3.[0-9]*)        vco="linux" ;;
           [3-9].[0-9]*)     vco="linux" ;;
          4.[0-9]*)        vco="linux" ;;
          5.[0-9]*)         vco="linux" ;;
           *)                vco="linux_rh60" ;;
           *)                vco="linux_rh60" ;;
         esac
         esac
</source>
</source>
* Из Alt Linux [[p7]] притащить бинарную 32-битную библиотеку libfreetype.so.6.10.0 ([http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch/x86_64-i586/RPMS.classic/i586-libfreetype-2.4.11-alt1.1.i586.rpm Скачать] RPM по ссылке, извлечь .so из RPM вручную, проверить sha1sum:ab90aab56f30b0cdc5be9839f755a8540af9ce74, gost12sum:85699b149c4aad9bf3940f79a7a3e89bbe6c24939dbad4cbbff81e7075ba8fec).  Системная версия libfreetype не подходит начиная с [[p8]].
* Из Alt Linux [[p7]] притащить бинарную 32-битную библиотеку libfreetype.so.6.10.0 ([http://ftp.altlinux.org/pub/distributions/ALTLinux/p7/branch/x86_64-i586/RPMS.classic/i586-libfreetype-2.4.11-alt1.1.i586.rpm Скачать])
Тот же пакет лежит на packages.altlinux.org в разделе (c7): [https://packages.altlinux.org/ru/c7/binary/libfreetype/i586/1562101193142266803 libfreetype-2.4.11-alt1.1.i586.rpm] .  RPM по ссылке, извлечь .so из RPM вручную, проверить sha1sum:ab90aab56f30b0cdc5be9839f755a8540af9ce74, gost12sum:85699b149c4aad9bf3940f79a7a3e89bbe6c24939dbad4cbbff81e7075ba8fec).  Системная версия libfreetype не подходит начиная с [[p8]].


Сохранить её в ~/intelFPGA_lite/${ver}/lib_old_compat/.
Сохранить её в ~/intelFPGA_lite/${ver}/lib_old_compat/.
Строка 70: Строка 72:
Это позволяет подгрузить правильную версию библиотеки libfreetype в нужном месте комплекса программ ModelSim. Передача LD_LIBRARY_PATH всему ModelSim не работает - где-то по пути переменная удаляется.
Это позволяет подгрузить правильную версию библиотеки libfreetype в нужном месте комплекса программ ModelSim. Передача LD_LIBRARY_PATH всему ModelSim не работает - где-то по пути переменная удаляется.
=== libfontconfig ===
=== libfontconfig ===
При использовании квартуса версии 17.1 в p10 после некоторых обновлений требуется также подменить на старую библиотеку libfontconfig. Для этого следует скачать её из p9 по ссылке:
При использовании квартуса версии 17.1 в p10 после некоторых обновлений требуется также подменить на старую библиотеку fontconfig. Для этого следует скачать её из c7 (p7) с сайта packages.altlinux.org: [https://packages.altlinux.org/ru/c7/binary/fontconfig/i586/1700222826088399239 fontconfig-2.11.1-alt0.M70P.1.i586.rpm].
 
<source>
<source>
[http://ftp.altlinux.org/pub/distributions/ALTLinux/p9/branch/i586/RPMS.classic/fontconfig-2.13.1-alt1.i586.rpm]
gost12sum a18eee3ef54577397b69befc77c6277210ae57c6c58218f413bea273221e933a fontconfig-2.11.1-alt0.M70P.1.i586.rpm
gost12sum 6259e71fe07e7846282cd668a9b5fcf7eeea885abf04c0a66902ec54aa0ea171.
</source>
</source>
Из /usr/lib/ в rpm архиве извлечь библиотеку и ссылку а неё:
Из /usr/lib/ в rpm архиве извлечь библиотеку и ссылку а неё:
<source>
<source>
libfontconfig.so.1 -> libfontconfig.so.1.12.0
libfontconfig.so.1 -> libfontconfig.so.1.8.0
gost12sum 55a47fad6d6282c40115629dd2aa03d076801df41377f9e127da09b39cbfc9a3 libfontconfig.so.1.12.0
gost12sum bcd0d6ce8cd647a6f2008ecc7437acc129032e5aae087007ce29506e5fa8b0b3 libfontconfig.so.1.8.0
</source>
</source>
и поместить в папку lib_old_compat.  
и поместить в папку lib_old_compat.  

Текущая версия от 11:47, 9 сентября 2024

Общая информация

Quartus II - основная среда проектирования для ПЛИС компании Intel FPGA (Altera до 2015 года).

Light-версия САПР бесплатна.

Кроме платформы Windows®, доступна также версия, предназначенная для запуска в ОС Red Hat Enterprise Linux. Это даёт возможность запускать САПР в нашей операционной системе.

Совместимость с версиями ОС

Данная инструкция подходит для установки Quartus версии 17.1 на Alt Linux x86_64 p10. Другие комбинации версий ОС и САПР предположительно тоже будут работать.

Базовая установка

Скачать .tar архив с сайта Altera: [1] (через VPN или попросить у коллег когда-то скачанную версию =)). Распаковать и запустить скрипт "setup.sh". При необходимости также скачать и установить обновления. Пути с пробелами и не-ASCII символами могут вызвать ошибки. Рекомендуется просчитать стратегию недоступа программ в сеть Интернет.

Система поставится в домашнюю папку по адресу ~/intelFPGA_lite/${ver}/, где ver - версия (ver="16.1", ver="17.1"...).

Также следует установить из репозитория пакеты:

i586-libX11.32bit
i586-libXft.32bit
i586-libXext.32bit
libudev0
 

Первые из них, что относятся к X11, - для ModelSim, udev - для jtagd.

Доработки и исправления

  • В запущенном Quartus во вкладке Tools -> Options -> General -> Internet Connectivity в поле Path вписать /opt/firefox-env.

Создать исполнимый скрипт /opt/firefox-env:

#!/bin/sh
exec /usr/bin/env --unset=LD_LIBRARY_PATH firefox "$@"

Это исправляет запуск справки. В противном случае, firefox со справкой пытается вместо системных загрузить стандартные бинарные библиотеки из комплекта Quartus, от чего завершается аварийно.

  • В файле ~/intelFPGA_lite/${ver}/modelsim_ase/bin/vsim на строке 210 добавить ядра Linux современных версий в список архитектур:
        case $utype in
          2.4.[7-9]*)       vco="linux" ;;
          2.4.[1-9][0-9]*)  vco="linux" ;;
          2.[5-9]*)         vco="linux" ;;
          2.[1-9][0-9]*)    vco="linux" ;;
          [3-9].[0-9]*)     vco="linux" ;;
          *)                vco="linux_rh60" ;;
        esac
  • Из Alt Linux p7 притащить бинарную 32-битную библиотеку libfreetype.so.6.10.0 (Скачать)

Тот же пакет лежит на packages.altlinux.org в разделе (c7): libfreetype-2.4.11-alt1.1.i586.rpm . RPM по ссылке, извлечь .so из RPM вручную, проверить sha1sum:ab90aab56f30b0cdc5be9839f755a8540af9ce74, gost12sum:85699b149c4aad9bf3940f79a7a3e89bbe6c24939dbad4cbbff81e7075ba8fec). Системная версия libfreetype не подходит начиная с p8.

Сохранить её в ~/intelFPGA_lite/${ver}/lib_old_compat/.

В lib_old_compat/ создать ссылку:

$ ln -s libfreetype.so.6.10.0 libfreetype.so.6

В папке ~/intelFPGA_lite/${ver}/modelsim_ase/linuxaloem переименовать оригинальный vish в vish.zzzz.

Создать скрипт-подмену vish:

cd ~/intelFPGA_lite/${ver}/modelsim_ase/linuxaloem
mv vish vish.zzzz
touch vish
chmod a+x vish
vim vish

В скрипт-подмену vish записать:

#!/bin/sh
LD_LIBRARY_PATH=$MODEL_TECH/../../lib_old_compat/
export LD_LIBRARY_PATH
exec -a $MODEL_TECH/vish $MODEL_TECH/vish.zzzz "$@"

Это позволяет подгрузить правильную версию библиотеки libfreetype в нужном месте комплекса программ ModelSim. Передача LD_LIBRARY_PATH всему ModelSim не работает - где-то по пути переменная удаляется.

libfontconfig

При использовании квартуса версии 17.1 в p10 после некоторых обновлений требуется также подменить на старую библиотеку fontconfig. Для этого следует скачать её из c7 (p7) с сайта packages.altlinux.org: fontconfig-2.11.1-alt0.M70P.1.i586.rpm.

gost12sum a18eee3ef54577397b69befc77c6277210ae57c6c58218f413bea273221e933a fontconfig-2.11.1-alt0.M70P.1.i586.rpm

Из /usr/lib/ в rpm архиве извлечь библиотеку и ссылку а неё:

libfontconfig.so.1 -> libfontconfig.so.1.8.0
gost12sum bcd0d6ce8cd647a6f2008ecc7437acc129032e5aae087007ce29506e5fa8b0b3 libfontconfig.so.1.8.0

и поместить в папку lib_old_compat.

JTAG

Для работы с jtag-программатором следует создать группу jtag и добавить в неё пользователя, от имени которого будет запускаться Quartus.

groupadd jtag
usermod -a -G jtag ИМЯ_ПОЛЬЗОВАТЕЛЯ

Также следует создать udev-правило для разных моделей программаторов, по которому их файл устройства подключается в нужное место с адекватными правами доступа. В файл /etc/udev/rules.d/99-altera-usb-blaster.rules следует записать:

# USB-Blaster
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0660", GROUP="jtag", SYMLINK+="usbblaster/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6002", MODE="0660", GROUP="jtag", SYMLINK+="usbblaster/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6003", MODE="0660", GROUP="jtag", SYMLINK+="usbblaster/%k"
# USB-Blaster II
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6010", MODE="0660", GROUP="jtag", SYMLINK+="usbblaster2/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6810", MODE="0660", GROUP="jtag", SYMLINK+="usbblaster2/%k"

После выполнения всех операций по настройке jtag следует перезапустить udevd командой

service udevd restart

и перелогиниться. Или просто перезапустить компьютер.

Известные баги

  • При настройке PLL ПЛИС MAX10 через интерфейс MegaWizard запускается окно с полем, частично скрытым ползунками прокрутки. При попытке взаимодействия с оконными примитивами формы программа MegaWizard зависает. Чтобы обойти этот баг, следует при запуске интерфейса первым действием растянуть окно за правый нижний угол так, чтобы всё содержимое формы поместилось в окне.
  • Также иногда меню "IP components" в интерфейсе Quartus перестаёт реагировать на попытки открыть ядра (двойной щелчок/Enter). Ситуация исправляется после перезапуска Quartus.
  • При генерации PLL для Cyclone V и других ядер, требующих исполнения tcl скриптов (чаще всего - более современные ядра) tcl падает уже после исполнения своей задачи, в результате чего в пользовательском интерфейсе возникает сообщение об ошибке при генерации ядра. При этом, однако же, ядра генерируются корректно.

Итог

  • Quartus запускается из командной строки по прямому пути ~/intelFPGA_lite/${ver}/quartus/bin/quartus.
  • Quartus Programmer - ~/intelFPGA_lite/${ver}/quartus/bin/quartus_pgmw
  • ModelSim - ~/intelFPGA_lite/${ver}/modelsim_ase/bin/vsim

Для диагностики проблем подключения программатора можно запустить jtag демон в отладочном режиме:

jtagd --foreground --debug

Перед этим следует убить работающую копию сервера, запускаемую автоматическими любым инструментом, использующим jtag (напр. Programmer и SignalTap).

Добавление ярлыков на рабочий стол оставим на усмотрение читателя =)