アップデート一覧に戻る
New releaseAug 9, 2026

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" という新しいディレクトリに展開する必要があるかもしれません。
  • 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

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

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

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 ` - この変更は次のターミナルセッションで有効になるため、ビルド前にターミナルウィンドウを開き直してください。

カテゴリ