Google Open Source Blog の "FPGA Interchange format to enable interoperable FPGA tooling" を読んでわかったことをまとめる。
FPGAのツールチェインはそれぞれのベンダで発展しており、ツールチェイン間での互換性については考慮されることがあまりない。 HDLという言語は共通であるが、それらをFPGA向けビットストリームに変換するためのフォーマットがそれぞれ異なる。
各種FPGA向けビットストリームの生成ツールは以下のようなものがある。
共通フォーマットを導入することで、各種ビルディングブロック内でのフォーマットを交換可能となる。このために、GoogleとAntomicroによるFPGA Interchange format プロジェクトを開始し、開発者があるツールから別のツールへ迅速に移行できるよう、参入障壁を下げる統一フレームワークを提供することにした。 Antmicroと他のCHIPSアライアンスメンバーは共同で、FPGA業界が必要とする開発標準となるべく、Interchangeフォーマットの定義と関連ツールの開発を進めている。
このフォーマットを概観すると、大まかに以下のコンポーネントに分類される。
- デバイス資源: FPGAの内部構造とセルライブラリを定義する。基本ブロックのフリップフロップやDSPブロックなどを含む。
- 論理ネットリスト: 論理合成後のネットリストを示す。
- 物理ネットリスト: 配置配線ツールによる物理的な配置配線情報を含んでいる。
GoogleとAntmicroはこのフォーマットに対応した配置配線ツールであるnextpnrというツールチェインを開発した。 AntmicroはnextpnrをXilinx-7シリーズ及びLattice Nexus FPGAファミリ向けに拡張する。
Xilinxのデバイスをサポートするために、Xilinxの研究チームと共同しRapidWrightフレームワークを使っている。このツールにより、デバイスデータベースを本フォーマットに変換して出力することができる。
参考: RapidWright フレームワーク
まずキーワードは、オープンソースFPGAフォーマット。そしてこの文章を読みながらいろんなツールがあることを知った。
- Yosys : 論理合成ツール
- VtR / nextpnr: 配置配線ツール
- RapidWright: XilinxのDCPとビットストリームのためのツールセット
- FASM: FPGA向けアセンブリフォーマット (https://symbiflow.readthedocs.io/en/latest/fasm/docs/specification.html)
それぞれの技術について読み解いていくと面白いかもしれない。