ソフトウェア開発者向けのFPGA最新動向のまとめ

# 概要
## なんで今さらFPGA

ここ数年で以下のような動きがあり、FPGAがCPU,GPUに並ぶ処理系の選択肢の1つに入ってきた。

- AIブームとNVIDIAのGPGPUの台頭
- IntelがNVIDIAに対抗してFPGAメーカのAltera買収
- MicrosoftとGoogleがFPGAをデータセンタのサーバに導入
- Amazon Web ServiceのEC2でXilinxのFPGAの提供開始

しかし、ぐぐって勉強しようとすると、以下の難しさがあった。

- レガシーなFPGAの情報と新しい話が混在している
- ソフトウェアエンジニア向けの情報が少ない
- 資料が英語そして英語

ということで情報をまとめる。

## FPGAとは
FPGAとは、Field Programmable Gate Arrayのことらしい。

ナンノコッチャ。

要するにフリップフロップ（Gateと呼ばれる）が大量に集まった集積回路（Array）である。
フリップフロップをうまく組み合わせればCPUみたいなこともできるし、RAMみたいなこともできる。

今までは「うまく組み合わせ」るためにはHDL(Hardware Description Language)と回路の知識が必要だったが、昨今の技術革新によりC言語からHDLを自動生成することができるようになってきた・・・。（これを高位合成という）

ということらしい。詳しくは以下のサイトで！

- [初心者のための FPGA/CPLD 入門](http://www.altima.jp/solutions/starter/altera_fpga.html)
- [インテル® FPGA リソースセンター](https://www.intel.co.jp/content/www/jp/ja/products/programmable/fpga/new-to-fpgas/resource-center/getting-started.html)
- [Software Development向けFPGA教材](https://www.intel.co.jp/content/www/jp/ja/programmable/support/training/curricula.html#software-development)

# メーカ
[List of FPGA Companies](http://hardwarebee.com/list-fpga-companies/)によれば、2015年時点でXilinxが50%、Intel(旧Altera)が37%、Lattice Semiconductorが10％の市場シェアを占める。[And the Winner of Best FPGA of 2016 is...](https://www.eetimes.com/author.asp?section_id=36&doc_id=1331443) を見る限り、2016年も2015年とほぼ同じシェアである。

XilinxとAlteraの寡占市場だったところに、Intelが2015年にAlteraを買収して殴りこみをかけている・・・。

## Xilinx
FPGA業界のドン。もともと、他社に比べるとソフトウェア開発者向けのツールや情報提供を多少やってくれてた。（ただし、ツールの使い勝手は・・・）

が、Intelが殴りこみをかけてきたのでテンパッて、Amazon Web Serviceと提携したり、GitHub上でマニュアル整備したりと、急激にソフトウェア開発者向けのサポートの充実化が進んでいる。

が、なんだかよくわからんアプリまで作っているが・・・。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Xilinx も一周回ってよくわからんことしてるな。 <a href="https://t.co/t3qN3kp0Nz">https://t.co/t3qN3kp0Nz</a></p>&mdash; kannkyo (@kannkyoshi) <a href="https://twitter.com/kannkyoshi/status/1056522528208773120?ref_src=twsrc%5Etfw">2018年10月28日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 製品ラインナップ
XilinxのFPGA製品ラインナップは以下の通り。

- Spartanシリーズ
    - I/O最適化で単位ワットあたりの性能が優れている、リードタイムは6週間、小規模
- Virtexシリーズ
    - 性能と統合性のバランスが優れている
- Kintexシリーズ
    - 単位ワットあたりの価格対性能比が優れている
- Artixシリーズ
    - 低コストFPGAとしては単位ワットあたりの性能が優れている

製品コンセプトが、わかるようなわからんような・・・。

Spartanが一番古いシリーズで今では廉価版扱いで、Spartanに対して高性能型として昔登場したのがVirtex。
近年降って湧いたように出てきたのがKintexとArtix。という感じ。

### 開発環境
XilinxのFPGA向けツールは以下の通り。

- Vivado Design Suite
    - ハードウェアエンジニア向けのHDL設計ツールから、ソフトウェアエンジニア向けの高位合成機能まで兼ね備えたソフトウェアスイート。
    - 要するに何でもありありのツールで、一昔前のMicrosoftのVisual Studioのような感じ。
    - アドインを追加するほどの柔軟性はない。
- Software Development Kit
    - 組込み開発向け開発環境。ハードウェアの設定ファイルを読み込み、すぐにコーディングに移れるのが強み。
    - Eclipseベースに開発されたツール。Eclipseに慣れていると使いやすいのだろうが、日本の組込エンジニアがどれだけEclipseに慣れているのかは正直疑問・・・。
    - 昔はバグがあったり、使いにくかったりしたが、今はどうなんだろうか。
- SDAccel
    - データセンターアプリケーション向けの高位合成用のIDE。
    - ・・・どういうことや。
    - Intel Parallel Studioのように、「既存のソースコードをもってきて、IDEでコンパイルするだけで、あら不思議高速化しました！」というツールのようだ。
- ISE Design Suite
    - ハードウェアエンジニア向けの機能のみ備えたツール。
    - 2013年に開発を終了し、Vivadoに移行。

## Intel(旧Altera)
### 製品ラインナップ
IntelのFPGA製品ラインナップは以下の通り。

- Stratixシリーズ
    - 低リスク、高生産性
- Arriaシリーズ
    - ミッドレンジ・アプリケーション、最適な性能と電力効率
- Cycloneシリーズ
    - 低消費電力、低コストデザイン
- MAXシリーズ
    - 低コスト、シングルチップ、不揮発性デバイス、量産向け

チップにIntelって書いてあるからCPUにしか見えない。そしてXilinxに比べると製品コンセプトが非常にわかりやすい。

### 開発環境
IntelのFPGA向けのツールは以下の通り。

- インテル® Quartus® Prime 開発ソフトウェア
    - 想定対象者は「すべての FPGA ユーザー」
    - 「使いやすいテクノロジーを搭載し、業界をリードする各社との強固なパートナーシップによって支えられた包括的な開発プラットフォーム。」
    - 3つのエディションがある。無償のライト、廉価なスタンダード、最新のFPGAをサポートしたプロ。
- インテル® HLS コンパイラー
    - 想定対象者は「ハードウェア開発者、アルゴリズム設計者、IP ライブラリー設計者」
    - 「RTL よりも最大 1000 倍高速な C++ を使用した検証により、ハードウェア開発を高速化。」
    - インテル® Quartus® Prime 、C++ 14、Visual Studio* 2015、GCC 5.4.0に対応している。
- インテル® FPGA SDK for OpenCL™
    - 想定対象者は「ソフトウェア開発者」
    - 「ソフトウェア開発者向けにハードウェア開発フローを抽象化し、ヘテロジニアス・アクセラレーションのターゲットとして FPGA を活用。」
    - ヘテロジニアスというのはCPU、GPU、FPGAなどが混合したシステムのことを指す。
    - 2つのバージョンがある。スタンダードと最新のFPGAをサポートしたプロ。
- DSP Builder for インテル® FPGA
    - 想定対象者は「ハードウェア開発者、アルゴリズム設計者」
    - 「アルゴリズム設計からハードウェア開発までを共通の環境で行うモデルベースのデザインフローをサポート。」
- インテル® SoC FPGA エンベデッド開発スイート
    - 想定対象者は「ソフトウェア開発者、すべてのエンベデッド・アプリケーション」
    - 「インテル® SoC デバイスを使用したエンベデッド・ソフトウェア開発のための包括的なツールスイート。」

「」の引用元：https://www.intel.co.jp/content/www/jp/ja/software/programmable/overview.html

有償版のお値段は$995~4995まで。明瞭会計で良いですな。

https://www.intel.co.jp/content/www/jp/ja/programmable/buy/design-software.html#pricing-and-licensing


# まとめ

- FPGAのシェアは、Xilinxが圧倒。
- ソフトウェア開発者から見たウェブサイトのわかりやすさは、Intelが圧倒的。さすがIntel先生。
- ビデオテープ規格のVHS v.s. ベータのようにここからIntel先生の巻き返しがあるのかも！今後に期待。（若い人にはわからない例えかもしれんが・・・。）

# 参考文献

- これから読みたい本
    - [ソフトウェア技術者のためのFPGA入門 機械学習編](https://amzn.to/2CQfyRT)
    - [C言語による実践的FPGAプログラミング](https://amzn.to/2CQflhB)
- 昔読んだ本
    - [VHDLで学ぶディジタル回路設計―ディジタル回路の理論とVHDL設計の基礎を同時に学ぶ](https://amzn.to/2JsoluH)
    - [HDL独習ソフトで学ぶCQ Endeavor VHDL―個人レッスン方式でHDL設計完全マスター](https://amzn.to/2CQhgTj)
    - [Verilog HDL論理合成入門―RTL記述&ネットリストのリファレンス](https://amzn.to/2OWkYCi)
    - [Verilog HDL&VHDLテストベンチ記述の初歩](https://amzn.to/2CT2qvF)