
nextpnr strumento portatile per posizionamento e instradamento FPGA
nextpnr mira ad essere uno strumento di place and route per FPGA FOSS, neutrale rispetto al fornitore e guidato dal timing.
Attualmente nextpnr supporta:
Un breve articolo (accademico) che descrive il flusso Yosys+nextpnr può essere trovato su arXiv.
Ecco uno screenshot di nextpnr per iCE40. Le istruzioni di compilazione e le note per iniziare si trovano qui sotto.
Vedi anche:
I seguenti pacchetti devono essere installati per compilare nextpnr, indipendentemente dall'architettura selezionata:
clang-format richiesto per lo sviluppo)python3-dev per Ubuntu)
nextpnr-himbaechellibboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-iostreams-dev libboost-dev o libboost-all-dev per Ubuntu)libeigen3-dev per Ubuntu)vcpkg install boost-filesystem boost-program-options boost-thread eigen3vcpkg install boost-filesystem:x64-windows boost-program-options:x64-windows boost-thread:x64-windows eigen3:x64-windows-static a ciascun nome di pacchetto. Ad esempio, cambia eigen3:x64-windows in eigen3:x64-windows-staticpython36.zip all'interno del file zip incorporabile in una nuova directory chiamata "Lib".brew install cmake python boost eigenPrima di tutto, esegui:
git submodule update --init --recursive
Per il supporto iCE40, installa Project IceStorm in /usr/local o in un'altra posizione, che dovrebbe essere passata come -DICESTORM_INSTALL_PREFIX=/usr a CMake. Quindi compila e installa nextpnr-ice40 usando i seguenti comandi:
mkdir -p build && cd build
cmake .. -DARCH=ice40
make -j$(nproc)
sudo make install
Su Windows, puoi specificare i percorsi esplicitamente:
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
Per compilare una release statica, cambia il triplet di destinazione da x64-windows a x64-windows-static e aggiungi -DBUILD_STATIC=ON.
Un semplice esempio che funziona sulla scheda di sviluppo iCEstick può essere trovato in ice40/examples/blinky/blinky.*.
Esempio di utilizzo:
cd ice40/examples/blinky
yosys -p 'synth_ice40 -top blinky -json blinky.json' blinky.v # sintetizza in blinky.json
nextpnr-ice40 --hx1k --json blinky.json --pcf blinky.pcf --asc blinky.asc # esegui place and route
icepack blinky.asc blinky.bin # genera il file bitstream binario
iceprog blinky.bin # carica il design su iCEstick
Esecuzione di nextpnr in modalità GUI (vedi sotto per le istruzioni su come compilare nextpnr con supporto GUI):
nextpnr-ice40 --json blinky.json --pcf blinky.pcf --asc blinky.asc --gui
(Usa i pulsanti della barra degli strumenti o la console dei comandi Python per eseguire azioni come pack, place, route e scrivere file di output.)
Per il supporto ECP5, installa Project Trellis in /usr/local o in un'altra posizione, che dovrebbe essere passata come -DTRELLIS_INSTALL_PREFIX=/usr/local a CMake. Quindi compila e installa nextpnr-ecp5 usando i seguenti comandi:
mkdir -p build && cd build
cmake .. -DARCH=ecp5 -DTRELLIS_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
Per il supporto Nexus, installa Project Oxide in $HOME/.cargo o in un'altra posizione, che dovrebbe essere passata come -DOXIDE_INSTALL_PREFIX=$HOME/.cargo a CMake. Quindi compila e installa nextpnr-nexus usando i seguenti comandi:
mkdir -p build && cd build
cmake .. -DARCH=nexus -DOXIDE_INSTALL_PREFIX=$HOME/.cargo
make -j$(nproc)
sudo make install
Per il supporto Cyclone V, clona Mistral in $HOME/mistral o in un'altra posizione e passa questo percorso come -DMISTRAL_ROOT=$HOME/mistral a CMake. Quindi compila e installa nextpnr-mistral usando i seguenti comandi:
mkdir -p build && cd build
cmake .. -DARCH=mistral -DMISTRAL_ROOT=$HOME/mistral
make -j$(nproc)
sudo make install
Il supporto per Cyclone V è attualmente sperimentale e ha test limitati. Il backend è in fase di refactoring attivo dell'API e la sua struttura, i requisiti di compilazione e i punti di integrazione possono cambiare tra le versioni.
Il target generico permette di eseguire place and route per architetture personalizzate arbitrarie.
mkdir -p build && cd build
cmake .. -DARCH=generic
make -j$(nproc)
sudo make install