Skip to content
2016年11月20日 / masterq

第1回FPGAスタートアップセミナーで「完全オープンソースHDL合成とForthマシン実装」というLTをした話

第1回FPGAスタートアップセミナーで、FPGAもVerilogもまったくわからないのにLTしてしゃべってきました。なんでソフト屋がFPGAネタでLTしたのでしょう?そこには熱い思いがあるからです!

ところが残念なことに準備が間に合わなくてスライドを作らずにWebページと動画見るだけでLTしてきちゃいました。これだとセミナーに参加していなかった方にはまったく伝わらないので、どんな話をしたのか書こうと思います。

まずは以下の動画を見てください。

謎技術!しょぼいlatticeのFPGAであるiCE40という石の上でForth言語マシンが動作してLinuxからシリアルで繋いだ上でForth言語のREPLが動いてプログラミングできちゃってます。しかもソフトウェアによるインタープリタじゃない証拠に、動画の最後には、シリアルコンソールから打ち込んだスクリプトがメガヘルツオーダーの綺麗な矩形波を描けることを示しています。このForthマシンについてより詳しい情報は http://www.excamera.com/sphinx/article-j1a-swapforth.html にまとまっています。ちなみにこのForthマシンを動かせるボードはなんと22ドルで入手できます。

このForthマシン自体も素晴しいのですが、本プレゼンテーションでスポットをあてたいのはこのロジックを合成したHDL合成ツールです。その名はIceStorm。なんと完全にオープンソースのHDL合成ツールなんです。このツールを使うとVerilogによる回路設計をiCE40に実際に書き込んで動作させるところまでを全てオープンソースのツールを使って実現できるんです。

さらに、このIceStormはZ3というソルバを使うことで、Verilogのコードに対してFormal Verificationをすることもできるらしいです。moduleの同値性を静的検査したり、Verilogコード中の表明や仮定を静的検査したりできるらしいです。これ一人で作ったとは。。。

このIceStormのまわりには既にエコシステムが広がりつつあります。いくつか例を挙げてみます。

まず、IceStormの作者がiCE40の上で動作するRISC-V CPUの実装であるPicoRV32を作っています。こんなしょぼいFPGAの上で32bit MCUを作れちゃうものなんですね。。。でもVerilog実装はデカいmoduleがいくつかあるだけで、エスパーじゃないと読めなそうです。。。このPicoRV32はiCE40HX8Kが載ったボードなら動くと思います。43ドルだそうです。

また、lattice以外にMaker達がiCE40を搭載したボードをリリースしています。中でも以下の動画で紹介しているGo Boardは無茶苦茶多機能です。VGAポートまでついてて、PONGゲームを遊べちゃいます。

さらに、多数のMCUボードの開発環境として有名なPlatformIOIceStormを使ったiCE40をプラットフォームとしてサポートしています。えっと。君ほんとうはC言語を使った組み込み開発環境だったはずなのに、なんでVerilog開発環境になっちゃってるの。。。

さらにさらに、icestudioというツールを使うと下図のようにGUIを使って回路設計をしてIceStormを使って合成できます。通常の回路プリミティブの他にVerilogのmoduleを直に書けるボックスも使えます。例えばこのファイルをicestudioで開いて、iCEstickボードに書き込むとLEDがくるくる回転すると思います。

gui

ところで、なぜ無料でメーカ製のHDL合成器が使えるにもかかわらず、私はIceStormというオープンソースのHDL合成器をおすすめしちゃってるのでしょうか?

今までオープンハードという名の元にいくつものHDLで記述されたIPが提案されてきました。でも実際それらをHDL合成するのは不自由なメーカ製のツール群でした。それらのバージョンによる不具合に悩まされた人も多いかと思います。想像してみてください。もしHDL合成器がオープンソースで開発されていて、当該合成器に不足した機能や不具合があったら、(自分の力さえあれば)その開発へ参加できるとしたら。もうメーカ製ツールの言いなりにならなくて済むかもしれません。(逆に言いわけができなくなるかもしれませんが…) そんな夢がIceStormで実現しつつあるのです。

20世紀のC言語コンパイラを思い出してみてください。当時はメーカ製C言語コンパイラは高価でした。また互換性に問題があることもありました。そこに降臨したのはGCCでした。GCCは誰でも自由に使うことができ、十分な移植性を獲得しました。それでも当時、GCCに対する組み込みベンダーの視線は今よりもっと冷やかなものでした。「GCCで製品開発するなんてバカげてる」そんな意見をたくさん耳にしました。しかしEGCSなど多くの人々の努力によって次第にゲームのルールは書き換えられていきます。そして2016年の今、多くの人が最初に使うC言語コンパイラはGCCになりました。デファクトスタンダードになったのです。ルールはひっくりかえりました。そしてGCCの上ではLinuxをはじめとする多くのオープンソース製品が花をひらき、安価なクラウドサービスやArduinoのようなアマチュアのための開発環境など多くの文化が産まれました。

今日、大規模なHDL開発のためにはメーカ製のツールが必須です。それでもいつの日か、HDLの世界にも自由なオープンソースの空気が流れてくることを信じて、IceStormを少しだけ使ってみませんか?

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。