
nextpnr nextpnr-0.11
nextpnr ポータブル FPGA 配置配線ツール
nextpnr -- ポータブルFPGA配置配線ツール
nextpnrは、ベンダーに依存しないタイミング駆動型のFOSS FPGA配置配線ツールを目指しています。
現在、nextpnrは以下をサポートしています:
- Lattice iCE40デバイス(Project IceStorm によるサポート)
- Lattice ECP5デバイス(Project Trellis によるサポート)
- Lattice Nexusデバイス(Project Oxide によるサポート)
- Gowin LittleBeeおよびAurora Vデバイス(Project Apicula によるサポート)
- NanoXplore NG-Ultraデバイス(Project Beyond によるサポート)
- Cologne Chip GateMateデバイス(Project Peppercorn によるサポート)
- (実験的) Cyclone Vデバイス(Mistral によるサポート)
- (実験的) Lattice MachXO2デバイス(Project Trellis によるサポート)
- (実験的) Xilinx 7シリーズデバイス(Project X-Ray によるサポート)
- (実験的) ユーザー定義アーキテクチャ用の「汎用」バックエンド
Yosys+nextpnrフローを説明する簡単な(学術)論文は arXiv にあります。
以下はiCE40用のnextpnrのスクリーンショットです。ビルド手順とはじめには以下にあります。
関連リンク:
Prerequisites
選択したアーキテクチャに関係なく、nextpnrをビルドするには以下のパッケージが必要です:
- CMake 3.25以降
- モダンなC++17コンパイラ(開発には
clang-formatが必要) - Python 3.5以降(開発ライブラリを含む、Ubuntuでは
python3-dev)nextpnr-himbaechelにはPython 3.9以降が必要- Windowsでは、vcpkg でサポートされているバージョンと同じものをインストールしてください
- Boostライブラリ(Ubuntuでは
libboost-dev libboost-filesystem-dev libboost-thread-dev libboost-program-options-dev libboost-iostreams-dev libboost-devまたはlibboost-all-dev) - Eigen3(Ubuntuでは
libeigen3-dev) - デモデザインの合成にはYosysが必要です
- WindowsでMSVCを使用してビルドする場合、依存関係のインストールにはvcpkgの使用をお勧めします。
- 32ビットビルドの場合:
vcpkg install boost-filesystem boost-program-options boost-thread eigen3 - 64ビットビルドの場合:
vcpkg install boost-filesystem:x64-windows boost-program-options:x64-windows boost-thread:x64-windows eigen3:x64-windows - 静的ビルドの場合は、各パッケージ名に
-staticを追加します。例えば、eigen3:x64-windowsをeigen3:x64-windows-staticに変更します。 - vcpkgのバージョン(現在Python 3.6.4)に一致するPythonのコピー。Embeddable Zip File をダウンロードして展開します。埋め込み可能なzipファイル内の
python36.zipを "Lib" という新しいディレクトリに展開する必要があるかもしれません。
- 32ビットビルドの場合:
- macOSでビルドするには、brewユーティリティが必要です。
- 必要なパッケージをすべてインストールします:
brew install cmake python boost eigen
- 必要なパッケージをすべてインストールします:
Getting started
まず最初に、以下を実行します:
git submodule update --init --recursive
nextpnr-ice40
iCE40をサポートするには、Project IceStorm を /usr/local または別の場所にインストールし、そのパスを -DICESTORM_INSTALL_PREFIX=/usr としてCMakeに渡します。その後、以下のコマンドで nextpnr-ice40 をビルドしてインストールします:
mkdir -p build && cd build
cmake .. -DARCH=ice40
make -j$(nproc)
sudo make install
Windowsの場合は、パスを明示的に指定しても構いません:
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
静的リリースをビルドするには、ターゲットトリプレットを x64-windows から x64-windows-static に変更し、-DBUILD_STATIC=ON を追加します。
iCEstick開発ボードで動作する簡単な例は ice40/examples/blinky/blinky.* にあります。
使用例:
cd ice40/examples/blinky
yosys -p 'synth_ice40 -top blinky -json blinky.json' blinky.v # blinky.jsonに合成
nextpnr-ice40 --hx1k --json blinky.json --pcf blinky.pcf --asc blinky.asc # 配置配線を実行
icepack blinky.asc blinky.bin # バイナリビットストリームファイルを生成
iceprog blinky.bin # デザインをiCEstickにアップロード
GUIモードでnextpnrを実行する(GUIサポート付きでnextpnrをビルドする手順は以下を参照):
nextpnr-ice40 --json blinky.json --pcf blinky.pcf --asc blinky.asc --gui
(ツールバーのボタンまたはPythonコマンドコンソールを使用して、パック、配置、配線、出力ファイルの書き込みなどのアクションを実行します。)
nextpnr-ecp5
ECP5をサポートするには、Project Trellis を /usr/local または別の場所にインストールし、そのパスを -DTRELLIS_INSTALL_PREFIX=/usr/local としてCMakeに渡します。その後、以下のコマンドで nextpnr-ecp5 をビルドしてインストールします:
mkdir -p build && cd build
cmake .. -DARCH=ecp5 -DTRELLIS_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
- さまざまなボード向けのECP5フローの例は、Project Trellis Examples にあります。
nextpnr-nexus
Nexusをサポートするには、Project Oxide を $HOME/.cargo または別の場所にインストールし、そのパスを -DOXIDE_INSTALL_PREFIX=$HOME/.cargo としてCMakeに渡します。その後、以下のコマンドで nextpnr-nexus をビルドしてインストールします:
mkdir -p build && cd build
cmake .. -DARCH=nexus -DOXIDE_INSTALL_PREFIX=$HOME/.cargo
make -j$(nproc)
sudo make install
- さまざまなボード向けのNexusフローの例は、Project Oxide Examples にあります。
nextpnr-mistral
Cyclone Vをサポートするには、Mistral を $HOME/mistral または別の場所にクローンし、そのパスを -DMISTRAL_ROOT=$HOME/mistral としてCMakeに渡します。その後、以下のコマンドで nextpnr-mistral をビルドしてインストールします:
mkdir -p build && cd build
cmake .. -DARCH=mistral -DMISTRAL_ROOT=$HOME/mistral
make -j$(nproc)
sudo make install
Cyclone Vのサポートは現在実験的であり、テストは限定的です。バックエンドは活発にAPIリファクタリング中であり、その構造、ビルド要件、統合ポイントはバージョン間で変更される可能性があります。
nextpnr-generic
汎用ターゲットを使用すると、任意のカスタムアーキテクチャの配置配線を実行できます。
mkdir -p build && cd build
cmake .. -DARCH=generic
make -j$(nproc)
sudo make install
汎用フローの使用例は generic/examples にあります。Generic Architecture docsも参照してください。
nextpnr-himbaechel
himbaechelターゲットを使用すると、共通構造を共有する大規模アーキテクチャの配置配線を実行できます。
gowin
Gowinをサポートするには、Project Apicula をインストールします
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gowin"
make -j$(nproc)
sudo make install
- さまざまなボード向けのGowinフローの例は、Project Apicula Examples にあります。
ng-ultra
NanoXplore NG-Ultraをサポートするには、Project Beyond DB リポジトリをクローンします
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
バイナリビットストリームの作成には、NanoXploreのImpulseツールが必要です。
gatemate
Cologne Chip GateMateをサポートするには、Project Peppercorn をクローンします
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gatemate" -DHIMBAECHEL_PEPPERCORN_PATH=/path/to/prjpeppercorn
make -j$(nproc)
sudo make install
GUI
nextpnr GUIは、標準のヘッドレスビルドの依存関係を減らすためにデフォルトではビルドされません。有効にするには、CMakeコマンドラインに -DBUILD_GUI=ON を追加し、Qt5/Qt6とOpenGLが利用可能であることを確認してください:
Qt6の場合:
- Ubuntu 22.04 LTS以降では、
qt6-base-devをインストール - MSVC vcpkgの場合は、
qt-base(32ビット)またはqt-base:x64-windows(64ビット)をインストール - Homebrewの場合は、
qt6をインストールし、qt6をパスに追加:echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile` - この変更は次のターミナルセッションで有効になるため、ビルド前にターミナルウィンドウを開き直してください。