Quartus: различия между версиями
Ivzeivze (обсуждение | вклад) (jtag) |
Ivzeivze (обсуждение | вклад) (Из последнего опыта, что нужно сделать с p10, чтобы 17.1 в ней заработал) |
||
(не показано 12 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
= Общая информация = | = Общая информация = | ||
'''Quartus II''' - | '''Quartus II''' - основная среда проектирования для [[ruwp:ПЛИС|ПЛИС]] компании Intel FPGA (Altera до 2015 года). | ||
Light- | Light-версия САПР бесплатна. | ||
Кроме платформы Windows®, доступна также версия, предназначенная для запуска в ОС Red Hat Enterprise Linux. Это даёт возможность запускать САПР в нашей операционной системе. | |||
= Совместимость с версиями ОС = | |||
Данная инструкция подходит для установки Quartus версии 17.1 на Alt Linux x86_64 [[p10]]. Другие комбинации версий ОС и САПР предположительно тоже будут работать. | |||
== Базовая установка == | |||
Скачать .tar архив с сайта Altera: [http://dl.altera.com/?edition=lite] (через 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. | * В запущенном Quartus во вкладке Tools -> Options -> General -> Internet Connectivity в поле Path вписать /opt/firefox-env. | ||
Создать исполнимый скрипт /opt/firefox-env: | Создать исполнимый скрипт /opt/firefox-env: | ||
Строка 19: | Строка 29: | ||
exec /usr/bin/env --unset=LD_LIBRARY_PATH firefox "$@" | exec /usr/bin/env --unset=LD_LIBRARY_PATH firefox "$@" | ||
</source> | </source> | ||
Это | Это исправляет запуск справки. В противном случае, firefox со справкой пытается вместо системных загрузить стандартные бинарные библиотеки из комплекта Quartus, от чего завершается аварийно. | ||
* В файле ~/intelFPGA_lite/ | * В файле ~/intelFPGA_lite/${ver}/modelsim_ase/bin/vsim на строке 210 добавить ядра Linux современных версий в список архитектур: | ||
<source lang="bash"> | <source lang="bash"> | ||
case $utype in | case $utype in | ||
Строка 27: | Строка 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 | [3-9].[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 Скачать]) | ||
Тот же пакет лежит на 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/. | ||
В lib_old_compat/ создать ссылку: | В lib_old_compat/ создать ссылку: | ||
Строка 41: | Строка 51: | ||
</source> | </source> | ||
В папке ~/intelFPGA_lite/ | В папке ~/intelFPGA_lite/${ver}/modelsim_ase/linuxaloem переименовать оригинальный vish в vish.zzzz. | ||
Создать скрипт-подмену vish: | Создать скрипт-подмену vish: | ||
<source lang="bash"> | <source lang="bash"> | ||
cd ~/intelFPGA_lite/ | cd ~/intelFPGA_lite/${ver}/modelsim_ase/linuxaloem | ||
mv vish vish.zzzz | mv vish vish.zzzz | ||
touch vish | touch vish | ||
Строка 61: | Строка 71: | ||
Это позволяет подгрузить правильную версию библиотеки libfreetype в нужном месте комплекса программ ModelSim. Передача LD_LIBRARY_PATH всему ModelSim не работает - где-то по пути переменная удаляется. | Это позволяет подгрузить правильную версию библиотеки libfreetype в нужном месте комплекса программ ModelSim. Передача LD_LIBRARY_PATH всему ModelSim не работает - где-то по пути переменная удаляется. | ||
=== libfontconfig === | |||
При использовании квартуса версии 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> | ||
gost12sum a18eee3ef54577397b69befc77c6277210ae57c6c58218f413bea273221e933a fontconfig-2.11.1-alt0.M70P.1.i586.rpm | |||
</source> | |||
Из /usr/lib/ в rpm архиве извлечь библиотеку и ссылку а неё: | |||
<source> | |||
libfontconfig.so.1 -> libfontconfig.so.1.8.0 | |||
gost12sum bcd0d6ce8cd647a6f2008ecc7437acc129032e5aae087007ce29506e5fa8b0b3 libfontconfig.so.1.8.0 | |||
</source> | |||
и поместить в папку lib_old_compat. | |||
== JTAG == | |||
Для работы с jtag-программатором следует создать группу jtag и добавить в неё пользователя, от имени которого будет запускаться Quartus. | |||
<source lang="bash"> | <source lang="bash"> | ||
groupadd jtag | groupadd jtag | ||
usermod -a - | usermod -a -G jtag ИМЯ_ПОЛЬЗОВАТЕЛЯ | ||
</source> | </source> | ||
Также следует создать udev-правило для программаторов, | Также следует создать udev-правило для разных моделей программаторов, по которому их файл устройства подключается в нужное место с адекватными правами доступа. | ||
В файл /etc/udev/rules.d/99-altera-usb-blaster.rules следует записать: | В файл /etc/udev/rules.d/99-altera-usb-blaster.rules следует записать: | ||
# USB-Blaster | # USB-Blaster | ||
Строка 81: | Строка 103: | ||
и перелогиниться. Или просто перезапустить компьютер. | и перелогиниться. Или просто перезапустить компьютер. | ||
== Известные баги == | |||
* При настройке 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). | |||
Добавление ярлыков на рабочий стол оставим на усмотрение читателя =) | Добавление ярлыков на рабочий стол оставим на усмотрение читателя =) | ||
[[Категория:CookBook]] | |||
[[Категория: | {{Category navigation|title=ПО, не входящее в репозитории ALT Linux|category=CookBook|sortkey={{SUBPAGENAME}}}} | ||
Текущая версия от 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
Тот же пакет лежит на 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).
Добавление ярлыков на рабочий стол оставим на усмотрение читателя =)