
nextpnr nextpnr-0.11
nextpnr portables FPGA-Platzierungs- und Verdrahtungswerkzeug
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-formatwird für die Entwicklung benötigt) - Python 3.5 oder neuer, einschließlich Entwicklungsbibliotheken (
python3-devfür Ubuntu)- Python 3.9 oder neuer ist für
nextpnr-himbaechelerforderlich - unter Windows stellen Sie sicher, dass Sie die gleiche Version wie von vcpkg unterstützt installieren
- Python 3.9 oder neuer ist für
- Boost-Bibliotheken (
libboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-iostreams-dev libboost-devoderlibboost-all-devfür Ubuntu) - Eigen3 (
libeigen3-devfü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
-statichinzu. Ändern Sie beispielsweiseeigen3:x64-windowsineigen3: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.zipinnerhalb der embeddable zip-Datei in ein neues Verzeichnis namens „Lib“ extrahieren.
- Für 32-Bit-Builds:
- Für das Erstellen unter macOS wird das brew-Dienstprogramm benötigt.
- Installieren Sie alle benötigten Pakete:
brew install cmake python boost eigen
- Installieren Sie alle benötigten Pakete:
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
- 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:
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:
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.