オープンソースエコシステム
Yosys、nextpnr、openFPGALoaderの無償ツールチェーン。Lattice iCE40とECP5およびGowinを完全対応、その他を部分対応し、周辺のシミュレータとフレームワークも扱います。
| 本社 | 分散(オーストリア・ウィーンのYosysHQとコミュニティ) |
|---|---|
| ウェブサイト | yosyshq.net/ |
| ツールチェーン | Yosys(合成)、nextpnr(配置配線)、openFPGALoader(プログラミング)、Verilator、Icarus、GHDL(シミュレーション)、cocotb、SymbiYosys(検証)、LiteX、Amaranth(フレームワーク) |
| ライセンス | ISC、MIT、GPLなどのライセンスの下で無償かつオープンソース。本稿執筆時点でYosysHQから商用サポートを提供 |
| 更新 | 2026年11月13日 |
デバイスファミリ #
| ファミリ | プロセス | ロジック | 位置づけ |
|---|---|---|---|
| Lattice iCE40 (Project IceStorm) | 40 nm | 384-7,680 LUTs | PLL、SPRAM、DSPを含むLP、HX、UltraPlusの完全対応 |
| Lattice ECP5 (Project Trellis) | 40 nm | 12k-85k LUTs | DDR I/OとSERDESを含む完全対応 |
| Lattice Nexus (Project Oxide) | 28 nm FD-SOI | 17k-100k LUTs | ファブリック機能の大半に対応するCrossLink-NX、Certus-NX、CertusPro-NX |
| Gowin GW1N, GW2A and GW5A (Project Apicula) | 55 nm / 22 nm | 1k-138k LUTs | GW1NとGW2Aでファブリック全体、PLL、ブロックRAM、パッケージ内メモリに対応 |
| AMD 7 series (Project X-Ray, openXC7) | 28 nm | 6k-477k logic cells | Artix 7、Spartan 7、Zynq 7000、Kintex 7(325T、420T、480Tを含む)の部分対応 |
| QuickLogic EOS S3 and PolarPro 3 (F4PGA) | 40 nm (EOS S3), PolarPro 3 see datasheet | about 1k-2.4k logic cells | YosysとVPRを使うベンダー公認のオープンフロー |
概要
このページはオープンソースツールチェーンをあたかもベンダーであるかのように扱います。多くの人にとって、それが使うツールだからです。ベンダーのインストーラーを飛ばすかどうかを決めようとしている初心者、本番向けにこのフローを評価するエンジニア、そして何が動いて何が動かないかを知りたいすべての人のためのものです。このエコシステムは2013年にClaire WolfのVerilog合成ツールYosysで始まり、2015年にProject IceStormで成長しました。IceStormはiCE40のビットストリームをリバースエンジニアリングし、Verilogからプログラム済みチップまでの完全に無償のフローを可能にしました。nextpnrは2018年にアーキテクチャプラグインモデルを持つタイミング駆動の配置配線ツールとして登場し、ECP5、Gowin、Nexus、7シリーズ、QuickLogicデバイスを文書化するプロジェクトが続きました。ウィーンに拠点を置くYosysHQはYosys、nextpnr、SymbiYosysを保守し、商用サポートと形式検証ツールを販売しています。残りは個人、企業、大学のコミュニティによって保守されています。オープンソースツールチェーンのトピックも参照してください。
ツールチェーン
最も簡単なインストール方法はOSS CAD Suiteです。これはYosysHQによるLinux、macOS、Windows向けのナイトリービルドで、Yosys、全アーキテクチャ向けのnextpnr、openFPGALoader、Icarus Verilog、Verilator、GHDL、SymbiYosysと必要なソルバーを同梱しています。アーカイブを展開し、環境スクリプトをsourceすれば準備完了です。ほとんどのLinuxディストリビューションもこれらのツールをパッケージ化していますが、古いバージョンであることが多いです。すべて無償で、ライセンスファイル、登録、ノードロックはありません。
YosysはVerilog-2005とSystemVerilogの実用的なサブセットを読み、GHDLプラグインを通じてVHDLも扱います。nextpnrはアーキテクチャごとに配置、配線、タイミング解析を行います。openFPGALoaderはFTDI、CMSIS-DAP、ST-Link、Sipeedのブリッジを通じてプログラムし、ほぼすべてのホビーボードをカバーします。VerilatorはRTLをC++にコンパイルして高速にシミュレーションし、IcarusとGHDLはVerilogとVHDLのイベント駆動シミュレータで、cocotbを使えばそのいずれに対してもPythonでテストベンチを書けます。SymbiYosysはオープンなSMTソルバーで形式的な証明を駆動します。LiteXはソフトRISC-Vコア、DDRコントローラ、Ethernetを備えた完全なSoCを生成し、Amaranthは独自のビルドシステムを持つPythonのハードウェア記述言語です。
難点: nextpnrのタイミング解析はクロック制約を扱いパスを報告しますが、フォルスパス、マルチサイクルパス、I/O遅延の対応は商用ツールより手薄です。ILAのようなロジックアナライザはありませんが、LiteXユーザーにはLiteScopeがその穴を埋めます。大規模設計での結果の品質はベンダーツールに劣り、その差はiCE40では小さく7シリーズでは大きいです。
最初に使うボード
- iCEBreakerはこのツールチェーンのために設計され、ドキュメントもそれを前提としています。
- UPduino v3は最も安価なiCE40 UltraPlusボードです。
- ULX3SとOrangeCrabは完全なオープン対応とLiteX移植のあるECP5ボードです。
- Tang Nano 9Kはあらゆるボードの中で最も安価で、Apiculaを通じて対応しています。
- FomuはUSBポートの中に収まり完全なフローを実行できるので、良いデモ用の一品です。
移行メモ
VivadoやQuartusから移ってくる場合、最初の違いはプロジェクトファイルがないことです。設計はソースファイル一式、ピン制約ファイル、そしてMakefileまたは短いスクリプトです。synth_ice40またはsynth_ecp5コマンドを使うyosys、次に制約と目標周波数を指定したnextpnr-ice40またはnextpnr-ecp5、次にビットストリームパッカー、そしてopenFPGALoaderです。ビルドは再現可能で、手間なくバージョン管理に収まります。
制約はターゲットの形式を使います。iCE40は.pcf、ECP5は.lpf、Gowinは.cst、openXC7は.xdcです。タイミングは--freq引数またはピンファイル内のクロック制約です。プリミティブはベンダー自身の名前(SB_PLL40_CORE、EHXPLLL、rPLL、MMCME2_BASE)で、Yosysはそれらのシミュレーションモデルを持っています。ブロックRAM、分散RAM、DSPの推論は機能し、テンプレートはベンダーツールが受け付けるものと同じです。
IPカタログはありません。ソフトコア、メモリコントローラ、ペリフェラルはLiteX、VexRiscvやNEORV32、または自分のコードから持ってきます。デバッグはまずシミュレーションで行い、VerilatorはシミュレーションしたSoC上でソフトウェアを動かせるほど高速です。
注意点
デバイスのカバー範囲が難所です。フローはiCE40、ECP5、小型Gowinデバイスでは完全で、Nexusファブリックでは良好で、7シリーズでは部分的です。7シリーズでは学習には使えますが、トランシーバー、PCIe、ハードメモリコントローラを必要とする設計には使えません。Altera、Microchip、Efinixのデバイス、およびUltraScaleやVersalのデバイスは一切対応しておらず、それらのビットストリームのドキュメントは公開されていません。ベンダーツールも立ち止まっているわけではなく、AMDとAlteraのライセンス条項はビットストリームのリバースエンジニアリングを禁じているので、7シリーズの作業は企業が依存をためらうかもしれないグレーゾーンで行われています。最後に、ナイトリービルドは変化が速いので、1年後に再ビルドする必要があるものはリリースを固定してください。