
nextpnr nextpnr-0.11
nextpnr outil portable de placement et routage pour FPGA
nextpnr -- un outil portable de placement et routage FPGA
nextpnr vise à être un outil de placement et routage FPGA neutre vis-à-vis des fournisseurs, piloté par le timing, et open source.
Actuellement, nextpnr prend en charge :
- Les périphériques Lattice iCE40 pris en charge par Project IceStorm
- Les périphériques Lattice ECP5 pris en charge par Project Trellis
- Les périphériques Lattice Nexus pris en charge par Project Oxide
- Les périphériques Gowin LittleBee et Aurora V pris en charge par Project Apicula
- Les périphériques NanoXplore NG-Ultra pris en charge par Project Beyond
- Les périphériques Cologne Chip GateMate pris en charge par Project Peppercorn
- (expérimental) Les périphériques Cyclone V pris en charge par Mistral
- (expérimental) Les périphériques Lattice MachXO2 pris en charge par Project Trellis
- (expérimental) Les périphériques Xilinx 7-series pris en charge par Project X-Ray
- (expérimental) un back-end « générique » pour des architectures définies par l'utilisateur
Un bref article (académique) décrivant le flux Yosys+nextpnr peut être trouvé sur arXiv.
Voici une capture d'écran de nextpnr pour iCE40. Les instructions de construction et notes de démarrage se trouvent ci-dessous.
Voir aussi :
Prérequis
Les paquets suivants doivent être installés pour construire nextpnr, indépendamment de l'architecture sélectionnée :
- CMake 3.25 ou ultérieur
- Compilateur C++17 moderne (
clang-formatrequis pour le développement) - Python 3.5 ou ultérieur, y compris les bibliothèques de développement (
python3-devpour Ubuntu)- Python 3.9 ou ultérieur est requis pour
nextpnr-himbaechel - sous Windows, assurez-vous d'installer la même version que celle prise en charge par vcpkg
- Python 3.9 ou ultérieur est requis pour
- Bibliothèques Boost (
libboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-iostreams-dev libboost-devoulibboost-all-devpour Ubuntu) - Eigen3 (
libeigen3-devpour Ubuntu) - Yosys est requis pour synthétiser le design de démonstration
- Pour la construction sous Windows avec MSVC, l'utilisation de vcpkg est recommandée pour l'installation des dépendances.
- Pour les builds 32 bits :
vcpkg install boost-filesystem boost-program-options boost-thread eigen3 - Pour les builds 64 bits :
vcpkg install boost-filesystem:x64-windows boost-program-options:x64-windows boost-thread:x64-windows eigen3:x64-windows - Pour les builds statiques, ajoutez
-staticà chacun des noms de paquets. Par exemple, remplacezeigen3:x64-windowspareigen3:x64-windows-static - Une copie de Python correspondant à la version dans vcpkg (actuellement Python 3.6.4). Vous pouvez télécharger le Fichier zip embarquable et l'extraire. Vous devrez peut-être extraire
python36.zipdu fichier zip embarquable dans un nouveau répertoire appelé « Lib ».
- Pour les builds 32 bits :
- Pour la construction sous macOS, l'utilitaire brew est nécessaire.
- Installez tous les paquets nécessaires
brew install cmake python boost eigen
- Installez tous les paquets nécessaires
Démarrage
Tout d'abord, exécutez :
git submodule update --init --recursive
nextpnr-ice40
Pour la prise en charge iCE40, installez Project IceStorm dans /usr/local ou un autre emplacement, qui doit être passé comme -DICESTORM_INSTALL_PREFIX=/usr à CMake. Ensuite, construisez et installez nextpnr-ice40 en utilisant les commandes suivantes :
mkdir -p build && cd build
cmake .. -DARCH=ice40
make -j$(nproc)
sudo make install
Sous Windows, vous pouvez spécifier les chemins explicitement :
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
Pour construire une version statique, remplacez le triplet cible x64-windows par x64-windows-static et ajoutez -DBUILD_STATIC=ON.
Un exemple simple qui fonctionne sur la carte de développement iCEstick se trouve dans ice40/examples/blinky/blinky.*.
Exemple d'utilisation :
cd ice40/examples/blinky
yosys -p 'synth_ice40 -top blinky -json blinky.json' blinky.v # synthétiser dans blinky.json
nextpnr-ice40 --hx1k --json blinky.json --pcf blinky.pcf --asc blinky.asc # exécuter le placement et le routage
icepack blinky.asc blinky.bin # générer le fichier binaire du bitstream
iceprog blinky.bin # télécharger le design sur iCEstick
Exécution de nextpnr en mode GUI (voir ci-dessous pour les instructions de construction de nextpnr avec support GUI) :
nextpnr-ice40 --json blinky.json --pcf blinky.pcf --asc blinky.asc --gui
(Utilisez les boutons de la barre d'outils ou la console de commandes Python pour effectuer des actions telles que le pack, le placement, le routage et l'écriture des fichiers de sortie.)
nextpnr-ecp5
Pour la prise en charge ECP5, installez Project Trellis dans /usr/local ou un autre emplacement, qui doit être passé comme -DTRELLIS_INSTALL_PREFIX=/usr/local à CMake. Ensuite, construisez et installez nextpnr-ecp5 en utilisant les commandes suivantes :
mkdir -p build && cd build
cmake .. -DARCH=ecp5 -DTRELLIS_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
- Des exemples du flux ECP5 pour une gamme de cartes se trouvent dans les Exemples Project Trellis.
nextpnr-nexus
Pour la prise en charge Nexus, installez Project Oxide dans $HOME/.cargo ou un autre emplacement, qui doit être passé comme -DOXIDE_INSTALL_PREFIX=$HOME/.cargo à CMake. Ensuite, construisez et installez nextpnr-nexus en utilisant les commandes suivantes :
mkdir -p build && cd build
cmake .. -DARCH=nexus -DOXIDE_INSTALL_PREFIX=$HOME/.cargo
make -j$(nproc)
sudo make install
- Des exemples du flux Nexus pour une gamme de cartes se trouvent dans les Exemples Project Oxide.
nextpnr-mistral
Pour la prise en charge Cyclone V, clonez Mistral dans $HOME/mistral ou un autre emplacement et passez ce chemin comme -DMISTRAL_ROOT=$HOME/mistral à CMake. Ensuite, construisez et installez nextpnr-mistral en utilisant les commandes suivantes :
mkdir -p build && cd build
cmake .. -DARCH=mistral -DMISTRAL_ROOT=$HOME/mistral
make -j$(nproc)
sudo make install