Quartus Prime и проблемы генерации проекта с EMIF в Platform Designer

Небольшая заметка с проблемой генерации проекта, в котором есть EMIF в Platform Designer, решение которой я нашёл для своего случая.

b80-0

Возможно, это поможет людям, столкнувшимся с аналогичной проблемой. Также помимо описания решения проблемы в моём случае приведу все другие решения, которые так или иначе помогали другим людям, чтобы всё было в одной заметке для удобства.

Итак, о чём речь-то? А о том случае, если вы, к примеру, делаете проект на Cyclone V и в Platform Designer (QSYS по-старому) добавляете EMIF для любой памяти (DDR2 или DDR2LP или DDR3), а при генерации HDL (или просто примера использования EMIF) у вас вылезает вот такая пичалька:

b80-1

Основная, первая строка, по которой и идентифицируется подобная проблема:

Error: s0: Error during execution of "{C:/intelfpga/18.1/quartus/../nios2eds/Nios II Command Shell.bat} make all 2>> stderr.txt": child process exited abnormally

Что делать? Конечно же, гуглим, находим немало тем (приведены не все, просто для примера некоторые из них) начиная от квартусов 12-й версии и выше:

Если в сумме собрать все рекомендации, то стоит проверить следующее:

  • Переменные TMP и TEMP — должны быть объявлены у пользователя дополнительно (помимо системных) и иметь краткие пути, без пробелов, кириллицы с указанием на локальный диск (никак не сетевой!). Пример свежеустановленной ОС и квартуса, на которой всё беспроблемно работает:

b80-2

Как можно видеть, значения пользовательских переменных отличаются и ведут в AppData, иногда помогает объявить их с более кратким путём, наподобие:

 C:\Temp 

Попробовать стоит, наиболее часто встречающееся решение этой проблемы. Да, не забываем перезагружать ПК после изменений в пользовательских и системных переменных!

  • Специфичные переменные типа QSYS_ROOTDIR и т. п. — если вы переустанавливали\обновляли квартус, то стоит проверить все переменные, в которых упоминается квартус, и актуализировать путь к установленному квартусу.
  • Обновить квартус до последней актуальной версии — банально, но, возможно, это проблема вашей версии, бывает, помогает.
  • Переустановить квартус по дефолтному пути — вроде как часть путей в квартусе захардкодена, и это помогает в решении некоторых проблем при компиляции.
  • Обновить Windows — возможно, у вас не стоят необходимые обновления для работы более свежей версии квартуса.

На последнем пункте я заморочился, я сначала удалил квартус, вручную почистил все оставшиеся папки (пользовательская папка, AppData и т. д.), потом почистил реестр, далее попробовал проверить наличие обновление для Windows (хотя у меня и так стоит автообновление) и увидел, что накопительное обновление для Windows 10 билд 1803 (у меня стояла именно эта версия) не устанавливается с ошибкой 0x80070643. Нашел хороший гайд для решения этой ошибки — ошибка 0x80070643. Увы, простые решения (чистка кеша центра обновлений, перезапуск служб, проверка системных файлов) мне также не помогли, согласно гайду последний вариант — ручное обновление до 1809 официальным инструментом, но и на нём меня ждала ошибка 0x800F081F-0x20003 — решение нашлось тут ошибка 0x800F081F-0x20003. Чем мешал режим разработчика, мне не ясно, ну да ладно, выключил его — обновилось всё нормально. Запускаем квартус, открываем проект, открываем платформ дизайнер — всё так же…

b80-3

Итак… что же делать? Запустил уже Hyper-V, создал простую виртуальную машину, поставил свежий билд 10-ки, поставил аналогичную версию квартуса, открываю проект — собирается без проблем! И тут я плавно перехожу к последнему решению проблемы с квартусом, которое помогало нескольким пользователям, но оно несколько радикально:

  • Переустановить Windows — да, снести всё и заново установить 10-ку.

Увы, но работать в виртуальной машине — вариант не очень, поэтому да, сношу всё, ставлю свежий билд 1809, ставлю квартус, открываю проект — компилируется! Ура. Теперь тонну всего ставить и настраивать…

И вот тут-то и всплыл интересный нюанс. Поставил я Office, Visual Studio 2017, Altium Designer 19, мелкие утилиты, WSL с Ubuntu. Запускаю квартус опять, проверить, всё ли ок — а всё не ок, ошибка вернулась. Тут то меня и озарило, с чем конфликтует квартус… приведу сначала скриншот:

b80-4

Догадались? :)

WSL (Windows Subsystem for Linux) — в командной строке Windows становится доступен bash и вот тут-то начинается веселье, в квартусе, видимо, не везде прописаны чёткие пути к cygwin, вот и случаются конфликты при выполнении скриптов, судя по всему, квартус то локальный cygwin вызывает, то нативный из WSL Ubuntu. Если выключить WSL, то ошибка пропадает:

b80-5

Так что если вы используете WSL и квартус на одной ОС, то теперь предупреждены о возможном конфликте их работы, если же не используете WSL, то вам, возможно, помогут другие варианты решения описанной проблемы.

Если у вас была подобная проблема и вы решили её каким-либо другим путём — буду рад, если поделитесь Вашим решением в комментариях!

Ссылки

Рубрики: FPGA

Tagged as: , , , , , ,

Добавить комментарий

Please log in using one of these methods to post your comment:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s