Zurück zu den Updates
New releaseAug 9, 2026

nextpnr nextpnr-0.11

nextpnr portables FPGA-Platzierungs- und Verdrahtungswerkzeug

Teilen

nextpnr – ein portables FPGA-Platzierungs- und Routing-Tool

nextpnr zielt darauf ab, ein herstellerneutrales, zeitgesteuertes Open-Source-FPGA-Platzierungs- und Routing-Tool zu sein.

Derzeit unterstützt nextpnr:

  • Lattice iCE40-Geräte, die von Project IceStorm unterstützt werden
  • Lattice ECP5-Geräte, die von Project Trellis unterstützt werden
  • Lattice Nexus-Geräte, die von Project Oxide unterstützt werden
  • Gowin LittleBee- und Aurora V-Geräte, die von Project Apicula unterstützt werden
  • NanoXplore NG-Ultra-Geräte, die von Project Beyond unterstützt werden
  • Cologne Chip GateMate-Geräte, die von Project Peppercorn unterstützt werden
  • (experimentell) Cyclone V-Geräte, die von Mistral unterstützt werden
  • (experimentell) Lattice MachXO2-Geräte, die von Project Trellis unterstützt werden
  • (experimentell) Xilinx 7-Series-Geräte, die von Project X-Ray unterstützt werden
  • (experimentell) ein „generisches“ Backend für benutzerdefinierte Architekturen

Ein kurzes (wissenschaftliches) Paper, das den Yosys+nextpnr-Ablauf beschreibt, finden Sie auf arXiv.

Hier ist ein Screenshot von nextpnr für iCE40. Bauanleitungen und Erste-Schritte-Hinweise finden Sie unten.

Siehe auch:

Voraussetzungen

Die folgenden Pakete müssen zum Erstellen von nextpnr installiert sein, unabhängig von der gewählten Architektur:

  • CMake 3.25 oder neuer
  • Moderner C++17-Compiler (clang-format wird für die Entwicklung benötigt)
  • Python 3.5 oder neuer, einschließlich Entwicklungsbibliotheken (python3-dev für Ubuntu)
    • Python 3.9 oder neuer ist für nextpnr-himbaechel erforderlich
    • unter Windows stellen Sie sicher, dass Sie die gleiche Version wie von vcpkg unterstützt installieren
  • Boost-Bibliotheken (libboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-iostreams-dev libboost-dev oder libboost-all-dev für Ubuntu)
  • Eigen3 (libeigen3-dev für Ubuntu)
  • Yosys wird zur Synthese des Demo-Designs benötigt
  • Für das Erstellen unter Windows mit MSVC wird die Verwendung von vcpkg für die Abhängigkeitsinstallation empfohlen.
    • Für 32-Bit-Builds: vcpkg install boost-filesystem boost-program-options boost-thread eigen3
    • Für 64-Bit-Builds: vcpkg install boost-filesystem:x64-windows boost-program-options:x64-windows boost-thread:x64-windows eigen3:x64-windows
    • Für statische Builds fügen Sie jedem Paketnamen -static hinzu. Ändern Sie beispielsweise eigen3:x64-windows in eigen3:x64-windows-static
    • Eine Kopie von Python, die zur Version in vcpkg passt (derzeit Python 3.6.4). Sie können die Embeddable Zip-Datei herunterladen und entpacken. Möglicherweise müssen Sie python36.zip innerhalb der embeddable zip-Datei in ein neues Verzeichnis namens „Lib“ extrahieren.
  • Für das Erstellen unter macOS wird das brew-Dienstprogramm benötigt.
    • Installieren Sie alle benötigten Pakete: brew install cmake python boost eigen

Erste Schritte

Führen Sie zunächst Folgendes aus:

git submodule update --init --recursive

nextpnr-ice40

Für iCE40-Unterstützung installieren Sie Project IceStorm nach /usr/local oder an einen anderen Ort, der als -DICESTORM_INSTALL_PREFIX=/usr an CMake übergeben werden sollte. Erstellen und installieren Sie dann nextpnr-ice40 mit den folgenden Befehlen:

mkdir -p build && cd build
cmake .. -DARCH=ice40
make -j$(nproc)
sudo make install

Unter Windows können Sie Pfade explizit angeben:

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

Um einen statischen Release zu erstellen, ändern Sie das Ziel-Triplett von x64-windows in x64-windows-static und fügen Sie -DBUILD_STATIC=ON hinzu.

Ein einfaches Beispiel, das auf dem iCEstick-Entwicklungsboard läuft, finden Sie in ice40/examples/blinky/blinky.*. Nutzungsbeispiel:

cd ice40/examples/blinky
yosys -p 'synth_ice40 -top blinky -json blinky.json' blinky.v               # Synthese in blinky.json
nextpnr-ice40 --hx1k --json blinky.json --pcf blinky.pcf --asc blinky.asc   # Platzierung und Routing durchführen
icepack blinky.asc blinky.bin                                               # Binäre Bitstream-Datei erzeugen
iceprog blinky.bin                                                          # Design auf iCEstick hochladen

Ausführen von nextpnr im GUI-Modus (siehe unten für Anweisungen zum Erstellen von nextpnr mit GUI-Unterstützung):

nextpnr-ice40 --json blinky.json --pcf blinky.pcf --asc blinky.asc --gui

(Verwenden Sie die Symbolleistenschaltflächen oder die Python-Befehlskonsole, um Aktionen wie Packen, Platzieren, Routen und Schreiben von Ausgabedateien durchzuführen.)

nextpnr-ecp5

Für ECP5-Unterstützung installieren Sie Project Trellis nach /usr/local oder an einen anderen Ort, der als -DTRELLIS_INSTALL_PREFIX=/usr/local an CMake übergeben werden sollte. Erstellen und installieren Sie dann nextpnr-ecp5 mit den folgenden Befehlen:

mkdir -p build && cd build
cmake .. -DARCH=ecp5 -DTRELLIS_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install

nextpnr-nexus

Für Nexus-Unterstützung installieren Sie Project Oxide nach $HOME/.cargo oder an einen anderen Ort, der als -DOXIDE_INSTALL_PREFIX=$HOME/.cargo an CMake übergeben werden sollte. Erstellen und installieren Sie dann nextpnr-nexus mit den folgenden Befehlen:

mkdir -p build && cd build
cmake .. -DARCH=nexus -DOXIDE_INSTALL_PREFIX=$HOME/.cargo
make -j$(nproc)
sudo make install

nextpnr-mistral

Für Cyclone V-Unterstützung klonen Sie Mistral nach $HOME/mistral oder einen anderen Ort und übergeben Sie diesen Pfad als -DMISTRAL_ROOT=$HOME/mistral an CMake. Erstellen und installieren Sie dann nextpnr-mistral mit den folgenden Befehlen:

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

Die Cyclone V-Unterstützung ist derzeit experimentell und nur begrenzt getestet. Das Backend durchläuft eine aktive API-Umstrukturierung, und seine Struktur, Build-Anforderungen und Integrationspunkte können sich zwischen Versionen ändern.

nextpnr-generic

Kategorien