Разбор прежней инструкции по установке ПО: что стало неверным, что нужно уточнить и чего не хватает
Утверждения, которые были верны на момент выхода прежней редакции, но сегодня приведут читателя к ошибке. В новой инструкции они либо исправлены, либо помечены как «было верно раньше» — иллюстрации при этом сохранены, чтобы читатель, у которого стоит старая версия ПО, узнавал свои окна.
| В прежней редакции | Как сейчас | Раздел новой инструкции |
|---|---|---|
| «Intel Quartus Prime Lite», «Intel Altera», «FPGA от Intel Altera» — в заголовках и по всему тексту. | Подразделение снова называется Altera: Intel продала контрольную долю в 2024 году. Новые выпуски Quartus Lite ставятся в каталог altera_lite, а Quartus Pro — в altera_pro (прежние — в intelFPGA_lite и intelFPGA_pro). Скрипты ищут все восемь вариантов имён. | 4.1.1, 4.1.1.4 |
«Добавьте следующие переменные среды в файл ~/.bashrc»: QSYS_ROOTDIR, QUARTUS_ROOTDIR и дополнение PATH — как обязательный шаг. | Шаг больше не обязателен: скрипты сами находят Quartus по QUARTUS_ROOTDIR, затем по PATH, затем по каталогам производителя в $HOME, /opt и /tools. Переменные нужны только при установке в нестандартное место или при выборе одной из нескольких версий. | 4.1.1.4, 4.2.1.4, 12 |
В том же примере: QUARTUS_ROOTDIR указывает на intelFPGA_lite/21.1, а PATH — на intelFPGA_lite/20.1. | Это опечатка в самой прежней инструкции: номера версий в соседних строках не совпадают, и в PATH попадает несуществующий каталог. Поскольку переменные теперь не нужны, пример убран. | 4.2.1.1 |
| «Установка Icarus Verilog 12» — в заголовках разделов 1.6 и 2.4 прежней инструкции. | Нужна версия 13, лучше 14: часть примеров использует конструкции SystemVerilog, которых версии 11 и 12 не понимают. Скрипты проверяют версию и предупреждают. | 4.1.5, 4.2.5 |
Весь раздел 3 — установка OpenLane через Docker: git clone The-OpenROAD-Project/OpenLane, make, make test, make mount. | В basics-graphics-music OpenLane заменён на LibreLane — его продолжение. Устанавливается через Nix, Docker не нужен; запуск — ./07_synthesize_for_asic.bash из каталога примера, а не make из каталога OpenLane. Раздел переписан полностью. | 4.1.11, 4.2.11 |
| «OpenLane можно поставить только на Linux, поэтому если у вас Windows — поставьте вторую ОС или виртуальную машину». | Под Windows достаточно WSL 2 — отдельный раздел диска или виртуальная машина не нужны. Nix и LibreLane работают внутри WSL, и это штатный способ. | 4.1.11 |
Репозиторий домашних заданий: git clone https://gitflic.ru/project/yuri-panchul/systemverilog-homework.git. | Адрес устарел. Для занятий Школы используйте github.com/chipdesignschool/systemverilog-homework. | 1.3, 9 |
Репозиторий примеров: git clone https://github.com/yuri-panchul/basics-graphics-music.git. | Копия yuri-panchul — рабочая, в неё попадают экспериментальные изменения. Для занятий Школы предназначена копия github.com/chipdesignschool/basics-graphics-music, для международных семинаров — verilog-meetup. | 1.2 |
Упоминание репозитория valid-ready-etc на gitflic (в разделе про обновление репозиториев на SSD). | Репозиторий устарел; его материал вошёл в basics-graphics-music, раздел 4_microarchitecture. | 6.3 |
Пути к примерам вида labs/01_and_or_not_xor_de_morgan. | Примеры сгруппированы по разделам курса: labs/1_basics/1_01_and_or_not_xor_de_morgan, labs/2_graphics/… и так далее. | 6.4, 8.1 |
| FAQ: «Список поддерживаемых плат … На момент сентября 2024» — 39 плат. | Сейчас поддерживается 54 платы (112 каталогов — это те же платы в разных конфигурациях). Список в этой редакции взят прямо из файла boards/README.csv репозитория, поэтому не расходится с кодом. | 3 |
| «Для установки Vivado или Gowin IDE вы можете воспользоваться доступной в интернете информацией» — то есть инструкции нет. | Разделы написаны: установка Vivado и Gowin EDA под все системы, драйверы программаторов, правила udev, и объяснение, как скрипты находят каждый из этих САПР. | 4.1.2, 4.1.3, 4.2.2, 4.2.3 |
| «Распространяется бесплатно … копии размещены в облаке Я.Диск» — и ссылки на Яндекс.Диск как основной способ скачивания. | Ссылки на облачные копии недолговечны и в тексте инструкции быстро устаревают. В этой редакции указаны официальные источники, а раздачи Школы упоминаются как вспомогательный вариант, без конкретных ссылок. | 4.1.1, 11 |
RARS: «понадобится как минимум Java …», далее — установка OpenJDK вручную, JAVA_HOME и %JAVA_HOME\bin в PATH. | В записи %JAVA_HOME\bin не закрыт процент — правильно %JAVA_HOME%\bin. Под Linux Java ставится одной командой sudo apt install default-jre, и переменные не нужны. | 4.1.9, 4.2.9 |
Здесь прежний текст не ошибочен, но неполон: он верен для одного случая и молчит об остальных, либо даёт указание без объяснения, из-за чего читатель не понимает, когда от него можно отступить.
| В прежней редакции | Как сейчас | Раздел новой инструкции |
|---|---|---|
| Quartus назван «21.1 Lite» как единственная версия. | 21.1 Lite остаётся рекомендуемой, но нужны оговорки: платы на Cyclone II требуют Quartus II 13.0sp1, на Cyclone III — 13.1 (в 21.1 эти семейства уже не поддерживаются), а DE23-Lite требует Quartus Pro с бесплатной лицензией. Новые выпуски (24.1, 25.1) тоже подходят для современных плат. | 3.1, 4.1.1 |
| «Путь для установки программы оставьте по умолчанию». | Совет верный, но стоит объяснить, почему это важно и когда можно отступить: в пути не должно быть пробелов и русских букв, а при установке в нестандартный каталог придётся задать QUARTUS_ROOTDIR. | 4.1.1, 4.2.1.1 |
| Драйвер USB Blaster: описаны USB Blaster и USB Blaster II. | Нужен ещё USB Blaster III — он применяется в DE23-Lite. Под Linux это дополнительная строка правила udev с idProduct 6022; без неё плата не прошивается. | 4.1.1.2, 4.2.1.2 |
| Правило udev приводится одним блоком, без объяснения. | Полезно объяснить поведение udev: читаются все файлы *.rules, порядок — по имени файла, а оператор := запрещает дальнейшее изменение значения. Поэтому собственный файл и файл из комплекта Quartus не конфликтуют, но побеждает тот, что идёт раньше по алфавиту. | 4.2.1.2 |
| VS Code: рекомендовано одно расширение — SystemVerilog - Language Support. | Стоит добавить Surfer — расширение для просмотра временных диаграмм прямо в редакторе, без переключения в отдельную программу. | 4.1.6, 4.1.7 |
| GTKWave назван единственным просмотрщиком диаграмм. | Появилась альтернатива — Surfer; она выбирается переменной WAVE_VIEWER=surfer и под macOS удобнее, так как ставится обычным исполняемым файлом. На Apple Silicon скрипты и вовсе рассчитывают на Surfer. | 4.1.7, 4.3 |
| Vivado: «образ установщика весит более 80 ГБ», рекомендована версия 2022.2. | Размер зависит от набора устройств — при выборе только нужных серий загрузка существенно меньше. Скрипты работают с любой версией от 2018 и новее и, начиная с 2024.2, понимают новую раскладку каталогов (<родитель>/<вендор>/<версия>/Vivado вместо прежней <родитель>/<вендор>/Vivado/<версия>). | 4.1.2 |
| Загружаемый SSD: сказано «начать нажимать одну из клавиш для входа в BIOS». | Клавиша нужна для входа в меню загрузки, а не в BIOS — это разные вещи, и на части компьютеров клавиши разные. Также стоит объяснить, зачем скрипт стирает резервную таблицу GPT. | 6.1, 6.2 |
Виртуальная машина для верификации: «Пароль пользователя» без указания логина; у образа SSD логин и пароль verilog, у ВМ для верификации пароль 1234. | Два разных образа с разными учётными данными легко перепутать, поэтому в новой редакции они указаны рядом с каждым образом отдельно. | 5, 6.2, 7 |
| Шаги 1.1–1.3 (Win) и 2.1–2.3 (Linux) «можно пропустить», если плата не Altera. | Верно, но теперь лучше сказать иначе: ставьте тот САПР, который соответствует вашей плате, а таблица в разделе 3 прямо указывает, какой именно. Без платы не нужен ни один САПР. | 3, 12 |
| «Инструкция может обновляться, проверяйте новости на сайте и в телеграм-канале» — и ссылка на канал. | Стоит добавить, что в самом репозитории есть каталог docs/ с отдельными файлами по Quartus, Gowin EDA, Yosys, Vivado, WSL и QEMU — он обновляется вместе с кодом и потому всегда актуальнее любой инструкции. | 11 |
Темы, которых в прежней редакции нет вовсе. Часть из них появилась вместе с новыми инструментами, часть существовала и раньше, но не была описана.
| В прежней редакции | Как сейчас | Раздел новой инструкции |
|---|---|---|
| Поддержка macOS. | Прежняя редакция описывает только Windows и Linux. Под macOS нет ни Quartus, ни Vivado, поэтому платы Altera и Xilinx требуют виртуальной машины; зато Gowin EDA, OSS CAD Suite, Icarus, Surfer и LibreLane работают. Есть и свои особенности: Gowin EDA только на Apple Silicon, приложение вместо каталога (Contents/Resources/Gowin_EDA), атрибут com.apple.quarantine и выбор просмотрщика диаграмм в зависимости от процессора. | 4.3 |
| OSS CAD Suite. | Единый архив с Yosys, nextpnr, Icarus Verilog, GTKWave и программаторами. Закрывает платы Lattice и Gowin без проприетарного САПР и даёт свежий Icarus там, где в дистрибутиве лежит старый. Достаточно распаковать в ~/oss-cad-suite. | 4.1.4, 4.2.4 |
| Surfer — программа и расширение VS Code. | Альтернатива GTKWave для просмотра диаграмм. | 4.1.7 |
| XPACK RISC-V GCC. | Компилятор C и ассемблера для программ, исполняемых на процессорных ядрах внутри ПЛИС — в том числе на ядре aps из МИЭТ. Без него разделы курса про программирование собственного процессора невыполнимы. | 4.1.10, 4.2.10 |
| Терминальные программы: minicom, picocom, putty. | Нужны, чтобы загрузить программу в плату через UART и общаться с процессором. Под Linux требуется ещё включение пользователя в группу dialout. | 4.2.10, 8.2 |
Выбор ядра RISC-V: aps (МИЭТ), yrv, picorv32. | Переключается скриптом 13_choose_another_riscv_core_for_software.bash. | 8.1, 8.2 |
| Таблица плат с указанием САПР и допустимых версий. | В прежней редакции список плат в FAQ приводил только название и семейство ПЛИС. Новая таблица на 54 платы указывает производителя ПЛИС и платы, семейство, нужный САПР с диапазоном версий, наличие TM1638 и способ вывода графики. | 3 |
| Объяснение того, как скрипты находят САПР. | Самая частая причина обращений в чат — «скрипт не находит Quartus» или «находит не ту версию». В новой редакции порядок поиска описан для Quartus, Vivado и Gowin EDA, вместе с правилом выбора версии по микросхеме платы и кэшем в ~/.cache/basics-graphics-music. | 4.1.1.4, 4.1.2, 4.1.3 |
| Перечень скриптов примера и порядок работы с ними. | Прежняя редакция заканчивалась проверкой установки и не объясняла, что делать дальше. Теперь описаны все 14 скриптов — от 01_clean до 14_run_terminal_program. | 8.2 |
| Состав курса: разделы basics, graphics, music, microarchitecture, cpu. | Карта того, что в каком разделе и что получается на плате, — чтобы было понятно, ради чего ставится всё это ПО. | 8.1 |
| Отдельный раздел про systemverilog-homework. | Прежде репозиторий упоминался одной строкой с устаревшим адресом. Между тем для него нужны только Icarus Verilog и Git — ни платы, ни САПР, — поэтому с него удобно начинать, не дожидаясь платы. | 1.3, 9 |
| Tiny Tapeout — изготовление примера в виде настоящей микросхемы. | Шаблон берёт из примера модуль lab_top, тот же, что отлаживался на плате; изготовление на фабрике IHP. Локальная проверка — ./07_synthesize_for_asic.bash. | 10 |
| Icarus из OSS CAD Suite и сборка из исходников. | Два дополнительных способа получить Icarus 13 или 14, если в репозиториях дистрибутива только версия 11 или 12. | 4.1.5, 4.2.5 |
| FAQ по установке. | Прежний FAQ состоял из одного пункта — списка плат. Новый отвечает на вопросы, которые действительно задают: какой САПР ставить, можно ли без платы, нужен ли PATH, почему не подходит ни одна версия Quartus, почему скрипты не идут из cmd.exe, что делать с карантином macOS. | 12 |
| Выбор платы одним скриптом. | ./check_setup_and_choose_fpga_board.bash проверяет установленное ПО и запоминает выбор платы на весь репозиторий — в прежней редакции этот шаг не описан, хотя без него примеры не собрать. | 6.4, 8.2 |
Три неточности в самом задании и в списке рекомендаций. Перечислены отдельно, чтобы правка не выглядела произвольной: в инструкции написаны исправленные варианты.
| Где | Что имелось в виду |
|---|---|
| Задание на эту редакцию, п. 2: «13.0sp1 for Cyclone II boards and 13.1 for Cyclone II boards». | Второй раз, очевидно, имелся в виду Cyclone III: 13.0sp1 — последняя версия с Cyclone II, 13.1 — последняя с Cyclone III. В инструкции написано так. |
| Задание, п. 3: «новые платы, такие как DE3-Lite». | Плата называется DE23-Lite (Terasic, Agilex 3). Платы с именем DE3-Lite не существует; есть старая DE3 на Stratix III и DE10-Lite на MAX 10. |
| Задание, план раздела «Что нового»: «Упомянуть обновление для DE23-Lite, Sound Blaster III». | Имелся в виду USB Blaster III — программатор (idProduct 6022), а не звуковая карта. Это же следует из п. 6 списка рекомендаций. |
Расхождения найдены сравнением трёх источников:
Инструкция_по_установке_ПО.pdf (68 страниц) — построчно;main репозитория basics-graphics-music — скрипты
scripts/steps/00_setup_*.source_bash, каталоги
boards/ и docs/. Там, где инструкция и код
расходятся, прав код: он исполняется;Таблица плат в разделе 3 инструкции не переписана вручную, а построена из
файла boards/README.csv репозитория. Поэтому она не может
разойтись с кодом так, как разошёлся список из прежнего FAQ: чтобы её
обновить, достаточно заново взять этот файл.
Порядок поиска САПР проверялся не только чтением скриптов, но и запусками:
определение версии Quartus по микросхеме платы — через Tcl-запросы
get_part_list и get_family_list к каждой
установленной версии, с проверкой реальным синтезом. Отсюда правило: сборка
возможна, если микросхема есть в списке устройств или её
семейство есть в списке семейств — одного запроса недостаточно ни того, ни
другого.
Разделы, которые не удалось проверить на живом оборудовании, помечены в инструкции как «не проверено». Это macOS, а также сроки и стоимость шаттлов Tiny Tapeout.