Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 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.7k33187vor 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](https://github.com/YosysHQ/icestorm) unterstützt werden
 * Lattice ECP5-Geräte, die von [Project Trellis](https://github.com/YosysHQ/prjtrellis) unterstützt werden
 * Lattice Nexus-Geräte, die von [Project Oxide](https://github.com/gatecat/prjoxide) unterstützt werden
 * Gowin LittleBee- und Aurora V-Geräte, die von [Project Apicula](https://github.com/YosysHQ/apicula) unterstützt werden
 * NanoXplore NG-Ultra-Geräte, die von [Project Beyond](https://github.com/YosysHQ-GmbH/prjbeyond-db) unterstützt werden
 * Cologne Chip GateMate-Geräte, die von [Project Peppercorn](https://github.com/YosysHQ/prjpeppercorn) unterstützt werden
 * *(experimentell)* Cyclone V-Geräte, die von [Mistral](https://github.com/Ravenslofty/mistral) unterstützt werden
 * *(experimentell)* Lattice MachXO2-Geräte, die von [Project Trellis](https://github.com/YosysHQ/prjtrellis) unterstützt werden
 * *(experimentell)* Xilinx 7-Series-Geräte, die von [Project X-Ray](https://github.com/F4PGA/prjxray) 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](https://arxiv.org/abs/1903.10407).

Hier ist ein Screenshot von nextpnr für iCE40. Bauanleitungen und [Erste-Schritte-Hinweise](#getting-started) finden Sie unten.

<img src="https://assets.kitploit.com/production/public/readmes/10385/12bab50b683472060ad2a49530d9b6fe58b2c2b70efd1144b849ff83a8a6e80b.png" width="640"/>

Siehe auch:
- [F.A.Q.](https://github.com/yosyshq/nextpnr/blob/main/docs/faq.md)
- [Architecture API](https://github.com/yosyshq/nextpnr/blob/main/docs/archapi.md)


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](https://github.com/Microsoft/vcpkg/blob/master/ports/python3/CONTROL) 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](https://www.python.org/downloads/release/python-364/) 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](https://github.com/YosysHQ/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](https://github.com/YosysHQ/prjtrellis) 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
```

 - Beispiele für den ECP5-Ablauf für eine Reihe von Boards finden Sie in den [Project Trellis Examples](https://github.com/YosysHQ/prjtrellis/tree/main/examples).

### nextpnr-nexus

Für Nexus-Unterstützung installieren Sie [Project Oxide](https://github.com/gatecat/prjoxide) 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
```

 - Beispiele für den Nexus-Ablauf für eine Reihe von Boards finden Sie in den [Project Oxide Examples](https://github.com/gatecat/prjoxide/tree/main/examples).

### nextpnr-mistral

Für Cyclone V-Unterstützung klonen Sie [Mistral](https://github.com/Ravenslofty/mistral/tree/nextpnr-latest) 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

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

```
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](https://github.com/yosyshq/nextpnr/blob/main/generic/examples). Siehe auch die [Generic Architecture docs](https://github.com/yosyshq/nextpnr/blob/main/docs/generic.md).

### 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](https://github.com/YosysHQ/apicula)

```
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](https://github.com/YosysHQ/apicula/tree/master/examples).

#### ng-ultra

Für NanoXplore NG-Ultra-Unterstützung klonen Sie das [Project Beyond DB](https://github.com/yosyshq-GmbH/prjbeyond-db) Repository

```
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](https://github.com/YosysHQ/prjpeppercorn)

```
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.

```
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`.

```
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:

```
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:

```
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:

```
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
- Ö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

Links und Referenzen
--------------------

### Synthese, Simulation und Logikoptimierung

- [Yosys](https://yosyshq.net/yosys/)
- [Icarus Verilog](http://iverilog.icarus.com/)
- [ABC](https://people.eecs.berkeley.edu/~alanmi/abc/)

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

- [Project IceStorm (Lattice iCE40)](https://github.com/YosysHQ/icestorm)
- [Project Trellis (Lattice ECP5)](https://yosyshq.github.io/prjtrellis-db/)
- [Project X-Ray (Xilinx 7-Series)](https://github.com/F4PGA/prjxray)
- [Project Chibi (Intel MAX-V)](https://github.com/rqou/project-chibi)

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

- [Arachne PNR](https://github.com/cseed/arachne-pnr)
- [VPR/VTR](https://verilogtorouting.org/)
- [SymbiFlow](https://github.com/SymbiFlow/symbiflow-arch-defs)
Tool herunterladen