Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
nextpnr — nextpnr ポータブル FPGA 配置配線ツール | Kitploit
ツール/GitHubGitHub/yosyshq/nextpnr
組み込みシステムセキュリティハードウェアセキュリティ論文と研究学習と教育ファームウェア解析
GitHubyosyshq/nextpnr

nextpnr

nextpnr ポータブル FPGA 配置配線ツール

リポジトリを見る
1.7k3312日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

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のスクリーンショットです。ビルド手順とはじめには以下にあります。

関連リンク:

  • F.A.Q.
  • Architecture API

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 を追加します。例えば、 を に変更します。

Getting started

まず最初に、以下を実行します:

root@kitploit:~
git submodule update --init --recursive

nextpnr-ice40

iCE40をサポートするには、Project IceStorm を /usr/local または別の場所にインストールし、そのパスを -DICESTORM_INSTALL_PREFIX=/usr としてCMakeに渡します。その後、以下のコマンドで nextpnr-ice40 をビルドしてインストールします:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ice40
make -j$(nproc)
sudo make install

Windowsの場合は、パスを明示的に指定しても構いません:

root@kitploit:~
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.* にあります。 使用例:

root@kitploit:~
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をビルドする手順は以下を参照):

root@kitploit:~
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 をビルドしてインストールします:

root@kitploit:~
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 をビルドしてインストールします:

root@kitploit:~
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 をビルドしてインストールします:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=mistral -DMISTRAL_ROOT=$HOME/mistral
make -j$(nproc)
sudo make install

Cyclone Vのサポートは現在実験的であり、テストは限定的です。バックエンドは活発にAPIリファクタリング中であり、その構造、ビルド要件、統合ポイントはバージョン間で変更される可能性があります。

nextpnr-generic

汎用ターゲットを使用すると、任意のカスタムアーキテクチャの配置配線を実行できます。

root@kitploit:~
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 をインストールします

root@kitploit:~
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 リポジトリをクローンします

root@kitploit:~
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 をクローンします

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

Qt5の場合:

  • Ubuntu 22.04 LTSでは、qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools をインストール
  • 他のUbuntuバージョンでは、qt5-default をインストール
  • MSVC vcpkgの場合は、qt5-base(32ビット)または qt5-base:x64-windows(64ビット)をインストール
  • Homebrewの場合は、qt5 をインストールし、qt5をパスに追加:echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.bash_profile ` - この変更は次のターミナルセッションで有効になるため、ビルド前にターミナルウィンドウを開き直してください。

複数アーキテクチャ

複数のアーキテクチャを同時にビルドするには、-DARCH でセミコロン区切りのリストを使用できます。

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="ice40;ecp5"
make -j$(nproc)
sudo make install

利用可能なすべての安定アーキテクチャをビルドするには、-DARCH=all を使用します。実験的アーキテクチャ(現在はnexus)を含めるには、-DARCH=all+alpha を使用します。

マイクロアーキテクチャごとのHimbächel

サポートされている各マイクロアーキテクチャに対して単一の nextpnr-himbachel 実行可能ファイルをビルドするには、-DHIMBAECHEL_SPLIT を使用します。

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH="himbaechel" -DHIMBAECHEL_UARCH="gowin;ng-ultra"
make -j$(nproc)
sudo make install

このようなビルドでは、単一の nextpnr-himbaechel バイナリの代わりに、nextpnr-himbaechel-gowin と nextpnr-himbaechel-ng-ultra の2つのバイナリがビルドされます。これらは一緒にインストールされますが、各マイクロアーキテクチャは互いに完全に独立しており、実行には対応する .../share/himbaechel/<microarchitecture>/ チップデータベースディレクトリのみが必要です。分割ビルドにより、個々の配布物のサイズが削減され(総サイズは増加しますが)、異なるバージョンの配布物の同時インストールが可能になります。

Cross-compilation

チップデータベースとは別に、nextpnrはビルドシステム用にコンパイルされた bba ツールを必要とします。このツールは別のプロジェクトとしてコンパイルできます:

root@kitploit:~
cd bba
cmake .
make

これにより、bba-export.cmake ファイルが作成されます。クロスビルド時に -DBBA_IMPORT=/path/to/bba-export.cmake を使用して、このファイルへのパスをnextpnrに指定します。

Additional notes for building nextpnr

以下は、GUIなし、Pythonサポートなし、HeAPアナリティックプレーサなし、HX1KのみのサポートでiCE40アーキテクチャのデバッグビルドを実行します:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ice40 -DCMAKE_BUILD_TYPE=Debug -DBUILD_PYTHON=OFF -DICE40_DEVICES=1k
make -j$(nproc)

iCE40アーキテクチャの静的ビルドリリースを作成するには、以下を使用します:

root@kitploit:~
mkdir -p build && cd build
cmake .. -DARCH=ice40 -DBUILD_PYTHON=OFF -DSTATIC_BUILD=ON
make -j$(nproc)

HeAPプレーサのソルバーは、非常に大規模なデザインでOpenMPを使用して高速化できます。-DUSE_OPENMP=yes をcmakeに渡して有効にします(コンパイラのサポートは異なる場合があります)。

nextpnrのインストール先を変更するには(通常は /usr/local にデフォルト設定されます)、-DCMAKE_INSTALL_PREFIX=/install/prefix を使用します。

Notes for developers

  • すべてのコードは .clang-format のスタイルルールに従って clang-format でフォーマットされています(LLVMベースで、インデント幅が拡大され、クラス後に中括弧が折り返されます)。
  • すべてのソースコードを自動的にフォーマットするには、make clangformat を実行します。
  • アーキテクチャAPIの追加ドキュメントについては、wikiを参照してください。

Recording a movie

  • 配置配線のムービー録画を保存するには、ツールバーの録画アイコンをクリックし、録画ファイルを保存する空のディレクトリとスキップするフレーム数を選択します。
  • 必要なPnR操作を手動で開始します
  • 録画アイコンをもう一度クリックして録画を停止します
  • ファイルが含まれているディレクトリに移動し、ffmpeg -f image2 -r 1 -i movie_%05d.png -c:v libx264 nextpnr.mp4 を実行します

Testing

  • テストバイナリもビルドするには、-DBUILD_TESTS=ON を使用し、make の後に make test を実行してテストを実行するか、個別のバイナリを実行します。
  • コードサニタイザを使用するには、cmake オプションを使用します:
    • -DSANITIZE_ADDRESS=ON
    • -DSANITIZE_MEMORY=ON -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
    • -DSANITIZE_THREAD=ON
    • -DSANITIZE_UNDEFINED=ON
  • valgrindの例を実行:valgrind --leak-check=yes --tool=memcheck ./nextpnr-ice40 --json ice40/blinky.json
  • コードカバレッジ付きでテストを実行するには、-DBUILD_TESTS=ON -DCOVERAGE を使用し、make の後に make ice40-coverage を実行します

Links and references

合成、シミュレーション、論理最適化

  • Yosys
  • Icarus Verilog
  • ABC

FPGAビットストリームドキュメント(およびツール)プロジェクト

  • Project IceStorm (Lattice iCE40)
  • Project Trellis (Lattice ECP5)
  • Project X-Ray (Xilinx 7-Series)
  • Project Chibi (Intel MAX-V)

その他のFOSS FPGA配置配線プロジェクト

  • Arachne PNR
  • VPR/VTR
  • SymbiFlow
ツールをダウンロード
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
  • その後、ブラウザで ice40-coverage/index.html を開いてカバレッジレポートを表示します
  • レポートを生成するには lcov が必要です