Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
nextpnr — nextpnr portables FPGA-Platzierungs- und Verdrahtungswerkzeug | Kitploit
Tools/GitHubGitHub/yosyshq/nextpnr
Embedded-System-SicherheitHardware-SicherheitPapers & ForschungLernen & BildungFirmware-Analyse
GitHubyosyshq/nextpnr

nextpnr

nextpnr portables FPGA-Platzierungs- und Verdrahtungswerkzeug

Repository anzeigen
1.7k331vor 1 TagVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
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:

  • F.A.Q.
  • Architecture API

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

Erste Schritte

Führen Sie zunächst Folgendes aus:

root@kitploit:~
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:

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

Unter Windows können Sie Pfade explizit angeben:

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

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:

root@kitploit:~
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):

root@kitploit:~
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:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ecp5 -DTRELLIS_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
  • Beispiele für den ECP5-Ablauf für eine Reihe von Boards finden Sie in den Project Trellis Examples.

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:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=nexus -DOXIDE_INSTALL_PREFIX=$HOME/.cargo
make -j$(nproc)
sudo make install
  • Beispiele für den Nexus-Ablauf für eine Reihe von Boards finden Sie in den Project Oxide Examples.

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:

root@kitploit:~
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

Das generische Ziel ermöglicht die Ausführung von Platzierung und Routing für beliebige benutzerdefinierte Architekturen.

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

Ein Beispiel zur Verwendung des generischen Ablaufs finden Sie in generic/examples. Siehe auch die Generic Architecture docs.

nextpnr-himbaechel

Das himbaechel-Ziel ermöglicht die Ausführung von Platzierung und Routing für größere Architekturen, die eine gemeinsame Struktur teilen.

gowin

Für Gowin-Unterstützung installieren Sie Project Apicula

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gowin"
make -j$(nproc)
sudo make install
  • Beispiele für den Gowin-Ablauf für eine Reihe von Boards finden Sie in den Project Apicula Examples.

ng-ultra

Für NanoXplore NG-Ultra-Unterstützung klonen Sie das Project Beyond DB Repository

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

Bitte beachten Sie, dass die Erstellung des binären Bitstreams das Impulse-Tool von NanoXplore erfordert.

gatemate

Für Cologne Chip GateMate-Unterstützung klonen Sie 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

Die nextpnr-GUI wird standardmäßig nicht erstellt, um die Anzahl der Abhängigkeiten für einen normalen Headless-Build zu reduzieren. Um sie zu aktivieren, fügen Sie -DBUILD_GUI=ON zur CMake-Befehlszeile hinzu und stellen Sie sicher, dass Qt5/Qt6 und OpenGL verfügbar sind:

Für Qt6:

  • Unter Ubuntu 22.04 LTS oder neuer installieren Sie qt6-base-dev
  • Für MSVC vcpkg installieren Sie qt-base (32-Bit) oder qt-base:x64-windows (64-Bit)
  • Für Homebrew installieren Sie qt6 und fügen Sie qt6 zum Pfad hinzu: echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile ` - diese Änderung wird in der nächsten Terminalsitzung wirksam, daher bitte vor dem Erstellen das Terminalfenster erneut öffnen

Für Qt5:

  • Unter Ubuntu 22.04 LTS installieren Sie qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
  • Unter anderen Ubuntu-Versionen installieren Sie qt5-default
  • Für MSVC vcpkg installieren Sie qt5-base (32-Bit) oder qt5-base:x64-windows (64-Bit)
  • Für Homebrew installieren Sie qt5 und fügen Sie qt5 zum Pfad hinzu: echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile ` - diese Änderung wird in der nächsten Terminalsitzung wirksam, daher bitte vor dem Erstellen das Terminalfenster erneut öffnen

Mehrere Architekturen

Um nextpnr für mehrere Architekturen gleichzeitig zu erstellen, kann eine semikolonseparierte Liste mit -DARCH verwendet werden.

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

Um jede verfügbare stabile Architektur zu erstellen, verwenden Sie -DARCH=all. Um experimentelle Architekturen (derzeit nexus) einzuschließen, verwenden Sie -DARCH=all+alpha.

Pro-Mikroarchitektur-Himbächel

Um für jede unterstützte Mikroarchitektur eine einzelne nextpnr-himbachel ausführbare Datei zu erstellen, verwenden Sie -DHIMBAECHEL_SPLIT.

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

In einem solchen Build werden anstelle einer einzelnen Binärdatei nextpnr-himbaechel zwei Binärdateien nextpnr-himbaechel-gowin und nextpnr-himbaechel-ng-ultra erstellt. Obwohl sie zusammen installiert werden, ist jede Mikroarchitektur völlig unabhängig von der anderen und benötigt nur ihr entsprechendes .../share/himbaechel/<Mikroarchitektur>/-Chipdatenbankverzeichnis, um ausgeführt zu werden. Der Split-Build reduziert die Größe einzelner verteilter Artefakte (obwohl die Gesamtgröße zunimmt) und ermöglicht die Koinstallation von Artefakten verschiedener Versionen.

Cross-Kompilierung

Neben den Chip-Datenbanken benötigt nextpnr das Tool bba, das für das Build-System kompiliert werden muss. Dieses Tool kann als separates Projekt kompiliert werden:

root@kitploit:~
cd bba
cmake .
make

Dadurch wird eine Datei bba-export.cmake erstellt. Geben Sie den Pfad zu dieser Datei an, wenn Sie nextpnr cross-kompilieren, indem Sie -DBBA_IMPORT=/path/to/bba-export.cmake verwenden.

Zusätzliche Hinweise zum Erstellen von nextpnr

Das Folgende führt einen Debug-Build der iCE40-Architektur ohne GUI, ohne Python-Unterstützung, ohne den HeAP-analytischen Placer und nur mit HX1K-Unterstützung durch:

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

Um einen statischen Build-Release für die iCE40-Architektur zu erstellen, verwenden Sie Folgendes:

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

Der Solver des HeAP-Placers kann optional OpenMP für eine Beschleunigung bei sehr großen Designs verwenden. Aktivieren Sie dies, indem Sie -DUSE_OPENMP=yes an cmake übergeben (Compiler-Unterstützung kann variieren).

Sie können den Installationsort von nextpnr ändern (standardmäßig /usr/local) mit -DCMAKE_INSTALL_PREFIX=/install/prefix.

Hinweise für Entwickler

  • Der gesamte Code wird mit clang-format gemäß den Stilregeln in .clang-format formatiert (LLVM-basiert mit größeren Einzugsbreiten und geschweiften Klammern nach Klassen).
  • Um automatisch den gesamten Quellcode zu formatieren, führen Sie make clangformat aus.
  • Weitere Dokumentation zur Architektur-API finden Sie im Wiki.

Aufnahme eines Films

  • Um eine Filmaufnahme der Platzierung und des Routings zu speichern, klicken Sie in der Symbolleiste auf das Aufnahmesymbol und wählen Sie ein leeres Verzeichnis aus, in dem die Aufnahmedateien gespeichert werden, und wählen Sie die zu überspringenden Frames aus.
  • Starten Sie manuell alle gewünschten PnR-Operationen
  • Klicken Sie erneut auf das Aufnahmesymbol, um die Aufnahme zu stoppen
  • Gehen Sie zu dem Verzeichnis mit den Dateien und führen Sie ffmpeg -f image2 -r 1 -i movie_%05d.png -c:v libx264 nextpnr.mp4 aus

Tests

  • Um auch Test-Binärdateien zu erstellen, verwenden Sie -DBUILD_TESTS=ON und führen Sie nach make make test aus, um sie auszuführen, oder Sie können separate Binärdateien ausführen.
  • Um Code-Sanitizer zu verwenden, verwenden Sie die cmake-Optionen:
    • -DSANITIZE_ADDRESS=ON
    • -DSANITIZE_MEMORY=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
    • -DSANITIZE_THREAD=ON
    • -DSANITIZE_UNDEFINED=ON
  • Beispiel für die Ausführung von valgrind: valgrind --leak-check=yes --tool=memcheck ./nextpnr-ice40 --json ice40/blinky.json
  • Ausführen von Tests mit Code Coverage verwenden Sie -DBUILD_TESTS=ON -DCOVERAGE und führen Sie nach make make ice40-coverage aus

Links und Referenzen

Synthese, Simulation und Logikoptimierung

  • Yosys
  • Icarus Verilog
  • ABC

FPGA-Bitstream-Dokumentations- (und Tool-) Projekte

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

Andere Open-Source-FPGA-Platzierungs- und Routing-Projekte

  • Arachne PNR
  • VPR/VTR
  • SymbiFlow
Tool herunterladen
  • 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
  • Öffnen Sie anschließend ice40-coverage/index.html in Ihrem Browser, um den Coverage-Bericht anzuzeigen
  • Beachten Sie, dass lcov zum Generieren von Berichten erforderlich ist