Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
nextpnr — nextpnr портативный инструмент для размещения и трассировки FPGA | Kitploit
Инструменты/GitHubGitHub/yosyshq/nextpnr
Безопасность встроенных системАппаратная БезопасностьСтатьи и ИсследованияОбучение и ОбразованиеАнализ Прошивок
GitHubyosyshq/nextpnr

nextpnr

nextpnr портативный инструмент для размещения и трассировки FPGA

Репозиторий
1.7k3310 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

nextpnr — портативный инструмент для размещения и трассировки FPGA

nextpnr стремится быть независимым от вендора, управляемым по таймингам, свободным инструментом для размещения и трассировки FPGA.

В настоящее время nextpnr поддерживает:

  • Устройства Lattice iCE40, поддерживаемые Project IceStorm
  • Устройства Lattice ECP5, поддерживаемые Project Trellis
  • Устройства Lattice Nexus, поддерживаемые Project Oxide
  • Устройства Gowin LittleBee и Aurora V, поддерживаемые Project Apicula
  • Устройства NanoXplore NG-Ultra, поддерживаемые Project Beyond
  • Устройства Cologne Chip GateMate, поддерживаемые Project Peppercorn
  • (экспериментально) Устройства Cyclone V, поддерживаемые Mistral
  • (экспериментально) Устройства Lattice MachXO2, поддерживаемые Project Trellis
  • (экспериментально) Устройства Xilinx 7-й серии, поддерживаемые Project X-Ray
  • (экспериментально) «универсальный» бэкенд для пользовательских архитектур

Краткая (академическая) статья, описывающая поток Yosys+nextpnr, доступна на arXiv.

Ниже приведён скриншот nextpnr для iCE40. Инструкции по сборке и заметки для начала работы можно найти далее.

См. также:

  • Часто задаваемые вопросы
  • API архитектуры

Предварительные требования

Для сборки nextpnr, независимо от выбранной архитектуры, необходимо установить следующие пакеты:

  • CMake 3.25 или новее
  • Современный компилятор C++17 (для разработки требуется clang-format)
  • Python 3.5 или новее, включая библиотеки для разработки (python3-dev для Ubuntu)
    • Для nextpnr-himbaechel требуется Python 3.9 или новее
    • В Windows убедитесь, что установлена версия, поддерживаемая vcpkg
  • Библиотеки Boost (libboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-iostreams-dev libboost-dev или libboost-all-dev для Ubuntu)
  • Eigen3 (libeigen3-dev для Ubuntu)
  • Yosys требуется для синтеза демонстрационного дизайна
  • Для сборки в Windows с MSVC рекомендуется использовать vcpkg для установки зависимостей.
    • Для 32-битных сборок: vcpkg install boost-filesystem boost-program-options boost-thread eigen3
    • Для 64-битных сборок: vcpkg install boost-filesystem:x64-windows boost-program-options:x64-windows boost-thread:x64-windows eigen3:x64-windows
    • Для статических сборок добавьте к каждому имени пакета. Например, замените на

Начало работы

Прежде всего выполните:

root@kitploit:~
git submodule update --init --recursive

nextpnr-ice40

Для поддержки iCE40 установите Project IceStorm в /usr/local или другое место, которое следует передать в CMake как -DICESTORM_INSTALL_PREFIX=/usr. Затем соберите и установите nextpnr-ice40 с помощью следующих команд:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ice40
make -j$(nproc)
sudo make install

В Windows можно явно указать пути:

root@kitploit:~
cmake . -B build -DARCH=ice40 -DICESTORM_INSTALL_PREFIX=C:/ProgramData/icestorm -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows -G "Visual Studio 15 2017 Win64" -DPython3_EXECUTABLE=C:/Python364/python.exe -DPython3_LIBRARY=C:/vcpkg/packages/python3_x64-windows/lib/python36.lib -DPython3_INCLUDE_DIR=C:/vcpkg/packages/python3_x64-windows/include/python3.6
cmake --build build --config Release

Для статической сборки измените triplet с x64-windows на x64-windows-static и добавьте -DBUILD_STATIC=ON.

Простой пример, который работает на отладочной плате iCEstick, можно найти в ice40/examples/blinky/blinky.*. Пример использования:

root@kitploit:~
cd ice40/examples/blinky
yosys -p 'synth_ice40 -top blinky -json blinky.json' blinky.v               # синтез в blinky.json
nextpnr-ice40 --hx1k --json blinky.json --pcf blinky.pcf --asc blinky.asc   # размещение и трассировка
icepack blinky.asc blinky.bin                                               # генерация битового потока
iceprog blinky.bin                                                          # загрузка дизайна на iCEstick

Запуск nextpnr в режиме GUI (см. ниже инструкции по сборке nextpnr с поддержкой GUI):

root@kitploit:~
nextpnr-ice40 --json blinky.json --pcf blinky.pcf --asc blinky.asc --gui

(Используйте кнопки панели инструментов или консоль команд Python для выполнения действий, таких как упаковка, размещение, трассировка и запись выходных файлов.)

nextpnr-ecp5

Для поддержки ECP5 установите Project Trellis в /usr/local или другое место, которое следует передать в CMake как -DTRELLIS_INSTALL_PREFIX=/usr/local. Затем соберите и установите nextpnr-ecp5 с помощью следующих команд:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ecp5 -DTRELLIS_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
  • Примеры потока ECP5 для различных плат можно найти в Project Trellis Examples.

nextpnr-nexus

Для поддержки Nexus установите Project Oxide в $HOME/.cargo или другое место, которое следует передать в CMake как -DOXIDE_INSTALL_PREFIX=$HOME/.cargo. Затем соберите и установите nextpnr-nexus с помощью следующих команд:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=nexus -DOXIDE_INSTALL_PREFIX=$HOME/.cargo
make -j$(nproc)
sudo make install
  • Примеры потока Nexus для различных плат можно найти в Project Oxide Examples.

nextpnr-mistral

Для поддержки Cyclone V клонируйте Mistral в $HOME/mistral или другое место и передайте этот путь в CMake как -DMISTRAL_ROOT=$HOME/mistral. Затем соберите и установите nextpnr-mistral с помощью следующих команд:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=mistral -DMISTRAL_ROOT=$HOME/mistral
make -j$(nproc)
sudo make install

Поддержка Cyclone V в настоящее время является экспериментальной и имеет ограниченное тестирование. Бэкенд находится в процессе активного рефакторинга API, его структура, требования к сборке и точки интеграции могут меняться между версиями.

nextpnr-generic

Универсальная цель позволяет выполнять размещение и трассировку для произвольных пользовательских архитектур.

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=generic
make -j$(nproc)
sudo make install

Пример использования универсального потока находится в generic/examples. См. также документацию по универсальной архитектуре.

nextpnr-himbaechel

Цель himbaechel позволяет выполнять размещение и трассировку для более крупных архитектур, имеющих общую структуру.

gowin

Для поддержки Gowin установите Project Apicula

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gowin"
make -j$(nproc)
sudo make install
  • Примеры потока Gowin для различных плат можно найти в Project Apicula Examples.

ng-ultra

Для поддержки NanoXplore NG-Ultra клонируйте репозиторий Project Beyond DB

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="ng-ultra" -DHIMBAECHEL_PRJBEYOND_DB=/path/to/prjbeyond-db -DHIMBAECHEL_NGULTRA_DEVICES=ng-ultra
make -j$(nproc)
sudo make install

Обратите внимание, что для создания двоичного битового потока требуется инструмент Impulse от NanoXplore.

gatemate

Для поддержки Cologne Chip GateMate клонируйте Project Peppercorn

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gatemate" -DHIMBAECHEL_PEPPERCORN_PATH=/path/to/prjpeppercorn
make -j$(nproc)
sudo make install

GUI

Графический интерфейс nextpnr не собирается по умолчанию, чтобы уменьшить количество зависимостей для стандартной сборки без графического интерфейса. Чтобы включить его, добавьте -DBUILD_GUI=ON в командную строку CMake и убедитесь, что Qt5/Qt6 и OpenGL доступны:

Для Qt6:

  • В Ubuntu 22.04 LTS или новее установите qt6-base-dev
  • Для MSVC vcpkg установите qt-base (32-битная) или qt-base:x64-windows (64-битная)
  • Для Homebrew установите qt6 и добавьте qt6 в путь: echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile ` — это изменение вступит в силу в следующем сеансе терминала, поэтому перед сборкой откройте новое окно терминала

Для Qt5:

  • В Ubuntu 22.04 LTS установите qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
  • В других версиях Ubuntu установите qt5-default
  • Для MSVC vcpkg установите qt5-base (32-битная) или qt5-base:x64-windows (64-битная)
  • Для Homebrew установите qt5 и добавьте qt5 в путь: echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile ` — это изменение вступит в силу в следующем сеансе терминала, поэтому перед сборкой откройте новое окно терминала

Несколько архитектур

Чтобы собрать nextpnr сразу для нескольких архитектур, можно использовать список, разделённый точкой с запятой, в -DARCH.

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="ice40;ecp5"
make -j$(nproc)
sudo make install

Чтобы собрать все доступные стабильные архитектуры, используйте -DARCH=all. Чтобы включить экспериментальные архитектуры (в настоящее время nexus), используйте -DARCH=all+alpha.

Разделение по микроархитектурам Himbächel

Чтобы собрать отдельный исполняемый файл nextpnr-himbaechel для каждой из поддерживаемых микроархитектур, используйте -DHIMBAECHEL_SPLIT.

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gowin;ng-ultra"
make -j$(nproc)
sudo make install

В такой сборке вместо одного двоичного файла nextpnr-himbaechel будут созданы два: nextpnr-himbaechel-gowin и nextpnr-himbaechel-ng-ultra. Хотя они устанавливаются вместе, каждая микроархитектура полностью независима от другой и для работы требует только соответствующего каталога базы данных микросхем .../share/himbaechel/<микроархитектура>/. Раздельная сборка уменьшает размер отдельных распространяемых артефактов (хотя общий размер увеличивается) и позволяет совместно устанавливать артефакты разных версий.

Кросс-компиляция

Помимо баз данных микросхем, nextpnr требует, чтобы инструмент bba был скомпилирован для целевой системы сборки. Этот инструмент можно скомпилировать как отдельный проект:

root@kitploit:~
cd bba
cmake .
make

Это создаст файл bba-export.cmake. Укажите путь к этому файлу при кросс-сборке nextpnr, используя -DBBA_IMPORT=/path/to/bba-export.cmake.

Дополнительные замечания по сборке nextpnr

Следующая команда выполняет отладочную сборку архитектуры iCE40 без GUI, без поддержки Python, без аналитического разместителя HeAP и только с поддержкой HX1K:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ice40 -DCMAKE_BUILD_TYPE=Debug -DBUILD_PYTHON=OFF -DICE40_DEVICES=1k
make -j$(nproc)

Для статической сборки релиза архитектуры iCE40 используйте следующее:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ice40 -DBUILD_PYTHON=OFF -DSTATIC_BUILD=ON
make -j$(nproc)

Решатель разместителя HeAP при необходимости может использовать OpenMP для ускорения работы с очень большими проектами. Включите это, передав -DUSE_OPENMP=yes в cmake (поддержка компилятора может различаться).

Вы можете изменить место установки nextpnr (по умолчанию обычно /usr/local), используя -DCMAKE_INSTALL_PREFIX=/install/prefix.

Заметки для разработчиков

  • Весь код форматируется с помощью clang-format в соответствии с правилами стиля в .clang-format (на основе LLVM с увеличенной шириной отступов и размещением фигурных скобок после классов).
  • Чтобы автоматически отформатировать весь исходный код, выполните make clangformat.
  • См. вики для дополнительной документации по API архитектуры.

Запись видео

  • Чтобы сохранить видеозапись процесса размещения и трассировки, нажмите значок записи на панели инструментов и выберите пустую директорию, где будут храниться файлы записи, а также укажите количество пропускаемых кадров.
  • Вручную запустите все необходимые операции PnR
  • Снова нажмите на значок записи, чтобы остановить запись
  • Перейдите в директорию с файлами и выполните ffmpeg -f image2 -r 1 -i movie_%05d.png -c:v libx264 nextpnr.mp4

Тестирование

  • Чтобы также собрать тестовые двоичные файлы, используйте -DBUILD_TESTS=ON и после make выполните make test для их запуска, или вы можете запустить отдельные двоичные файлы.
  • Чтобы использовать санитайзеры кода, используйте параметры cmake:
    • -DSANITIZE_ADDRESS=ON
    • -DSANITIZE_MEMORY=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
    • -DSANITIZE_THREAD=ON
    • -DSANITIZE_UNDEFINED=ON
  • Пример запуска valgrind: valgrind --leak-check=yes --tool=memcheck ./nextpnr-ice40 --json ice40/blinky.json
  • Для запуска тестов с покрытием кода используйте -DBUILD_TESTS=ON -DCOVERAGE и после make выполните make ice40-coverage

Ссылки и дополнительные материалы

Синтез, моделирование и логическая оптимизация

  • Yosys
  • Icarus Verilog
  • ABC

Проекты по документированию (и инструментам) битовых потоков FPGA

  • Project IceStorm (Lattice iCE40)
  • Project Trellis (Lattice ECP5)
  • Project X-Ray (Xilinx 7-Series)
  • Project Chibi (Intel MAX-V)

Другие свободные проекты размещения и трассировки FPGA

  • Arachne PNR
  • VPR/VTR
  • SymbiFlow
Скачать инструмент
-static
eigen3:x64-windows
eigen3:x64-windows-static
  • Копия Python, соответствующая версии в vcpkg (в настоящее время Python 3.6.4). Вы можете скачать Встраиваемый ZIP-файл и распаковать его. Возможно, потребуется извлечь python36.zip из встраиваемого zip-файла в новую директорию с именем «Lib».
  • Для сборки на macOS потребуется утилита brew.
    • Установите все необходимые пакеты: brew install cmake python boost eigen
  • После этого откройте ice40-coverage/index.html в вашем браузере, чтобы просмотреть отчёт о покрытии
  • Обратите внимание, что для создания отчётов требуется lcov